RT-THREAD 中国的操作系统,还算对STM32友好,% E5 Z- E) g- S R% Q 稍微调试了下终于把攻略做出来了,8 ]2 e+ d9 S+ x6 [$ Y6 M 目前github上还没有l496zg-nucleo的工程,正好手上有一块板子,做起来。 在操作系统上点亮一个小灯,应该比较简单。! T, A" r1 b/ @# x http://github.com/RT-Thread/rt-thread+ P$ w* E! S( c9 J 0 j1 k: h7 |1 Y github上地址:9 m0 E; Z- m5 C 先把文档稍微看一遍:( n* d- G5 z6 ?, f7 R( M http://github.com/RT-Thread/rt-thread/blob/master/bsp/stm32/docs/STM32%E7%B3%BB%E5%88%97BSP%E5%88%B6%E4%BD%9C%E6%95%99%E7%A8%8B.md' ] ?( r0 |8 q% V8 W- t 按照文档基本可以开始实际操作了: 文档中第一步6 Y# t+ z1 i+ n! j8 u/ i 我们来新建一个文件,从stm32l4xx拷贝出来7 T* v- M( e% z2 U! s M- z4 y 第二步: 进到目录board\CubeMX_Config 在制作 BSP 的第二步,需要创建一个基于目标芯片的 CubeMX 工程。默认的 CubeMX 工程在 CubeMX_Config 文件夹中,双击打开 CubeMX_Config.ioc 工程,如下图所示: 对板子做相应的配置 1. CPU要选一下吧,选择L496ZGTX' e: D; ^& e/ K6 L# v 2. RCC要选对,这边我这板子选择如下: 这部分比较重要,要对自己板子比较熟悉才行。 如果实在不知道怎么配置,NUCLEO还提供了选择板载的配置(这个配置出厂已经帮你配好了)我也是参考这个配置来改的' g" H; I8 \. v) A+ h 默认的链接ST-LINK的uart是lpuart1,引脚是PG8 PG74 c$ X1 R5 S& c) `( U1 g. X 选择配置LPUART1如下图:- ^5 j I. C' Q4 @8 M+ N! T, G LED 是PB14 PB7 5 ^8 f+ y1 r" `6 j3 a3 V0 _/ L, g6 k 下面就是配置clock了 这里选中80Mhz会自行匹配7 J5 r$ P2 J; J' Q0 F; P9 o9 X! W 拷贝初始化函数 之后就是生成工程生成完如下图所示,只需要保留两个文件夹就可以了:% V. S- T+ a) c+ D/ {$ Z" a" W : a& r; t' d9 n0 l2 ~% T 在 board.c 文件中存放了函数 SystemClock_Config() ,该函数负责初始化系统时钟。当使用 CubeMX 工具对系统时钟重新配置的时候,需要更新这个函数。5 \# V, H8 L7 m 该函数由 CubeMX 工具生成,默认存放在board/CubeMX_Config/Src/main.c 文件中。但是该文件并没有被包含到我们的工程中,因此需要将这个函数从 main.c 中拷贝到 board.c 文件中。在整个 BSP 的制作过程中,这个函数是唯一要要拷贝的函数,该函数内容如下所示: 在 board.h 文件中配置了 FLASH 和 RAM 的相关参数,这个文件中需要修改的是 STM32_FLASH_SIZE 和 STM32_SRAM_SIZE 这两个宏控制的参数。本次制作的 BSP 所用的 STM32L496ZG 芯片的 flash 大小为 1024k,ram 的大小为 320k,因此对该文件作出如下的修改:! l+ M# Z& |' Z0 R6 R8 k 接下来修改 board/Kconfig 文件:- x, K: V0 P6 f. V. L 修改链接脚本 linker_scripts 链接文件如下图所示 下面以 MDK 使用的链接脚本 link.sct 为例,演示如何修改链接脚本: 实际修改如下:. F: D, `+ r* B+ q7 q6 T! m) { 3个文件都需要改一下! a3 B3 }7 P! m4 N$ ~% v 修改构建脚本9 @: K9 I5 J4 C$ S1 t* g9 _ , {: H: O2 O4 T$ a( T5 u- B SConscript 脚本决定 MDK/IAR 工程的生成以及编译过程中要添加文件。, p" E# o+ V }8 z: { 在这一步中需要修改芯片型号以及芯片启动文件的地址,修改内容如下图所示:$ G8 Y5 t& l! w1 e/ a' ] 修改工程模板1 ?6 v6 @4 [$ M2 B template 文件是生成 MDK/IAR 工程的模板文件,通过修改该文件可以设置工程中使用的芯片型号以及下载方式。MDK4/MDK5/IAR 的工程模板文件,如下图所示: 这边就简单配置一下你要生成的project中的配置,基本上就是选择一下调试器和target " e$ v4 j- H& X* J5 E+ p5 b4 N! K 重新生成工程+ V1 l% r. a( i9 |$ p - q) s1 j6 W1 [3 w: W" N 重新生成工程需要使用 env 工具。 ) {9 X- d' |# v: c, p- @* i' L 在 env 界面输入命令 menuconfig 对工程进行配置,并生成新的 rtconfig.h 文件。如下图所示: 下面我就要说重要的一步了,这个地方文档没有写,会影响到最终console的使用,这边默认console名字如果不是默认的uart1的话,会打印不出来,这边我们要选择lpuart16 o: }$ Y! X9 W' ^; q; ]! _ 下面以重新生成 MDK 工程为例,介绍如何重新生成 BSP 工程。 3 f% k: m8 Q+ R( B 使用 env 工具输入命令 scons --target=mdk5 重新生成工程,如下图所示:. O1 A T0 ^6 S3 P 接下来我们可以分别使用命令 scons --target=mdk4 和 scons --target=iar,来更新 mdk4 和 iar 的工程,使得该 BSP 变成一个完整的,可以提交到 GitHub 的 BSP。 好~到此为止,工程应该就可以用了,0 A( v9 y& A- N# o 但是还需要稍微改一点东西:. t! W5 l8 R% i 打开project, 默认LED小灯是B1,要改成B7+ z9 b, |% L7 f: m, f 烧入,串口如下:0 B7 h; H. P* {" }% |# N* u/ m 小灯在闪烁,ok,整个工程建立完成。 RT-THREAD就这样跑起来了。虽然一步一步比较复杂,但是看得出RT-THREAD还是付出了很多工作量的。但是,我还是想说,其实有更好的办法处理bsp,我觉得目前STM32这种办法只能说根据STM32的工具做了出来,实际上,还是有很多可以优化的地方的。8 ?5 E/ D9 m n) u% ] 附件是bsp工程,放在bsp/stm32目录下面就可以工作了。 |
stm32l496zg-st-nucleo.zip
下载258.55 KB, 下载次数: 3
bspç®å½ä¸
我试过,可以使用,不过ls这个命令用不了吧。这个问题可以从两个方面来分析:首先输入命令板子有没有回显?,有回显说明板子和RTTHREAD没问题,命令有问题。如果没反应,可以从UART这边入手,看RX中断有没有进。