你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-L496ZG评测】+RT-THREAD工程搭建

[复制链接]
飞跃-344154 发布时间:2019-10-2 21:38
RT-THREAD
中国的操作系统,还算对STM32友好,
稍微调试了下终于把攻略做出来了,
目前github上还没有l496zg-nucleo的工程,正好手上有一块板子,做起来。
在操作系统上点亮一个小灯,应该比较简单。
http://github.com/RT-Thread/rt-thread

github上地址:
先把文档稍微看一遍:
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
按照文档基本可以开始实际操作了:
文档中第一步
1.png

2.png
我们来新建一个文件,从stm32l4xx拷贝出来
3.png
第二步: 进到目录board\CubeMX_Config
在制作 BSP 的第二步,需要创建一个基于目标芯片的 CubeMX 工程。默认的 CubeMX 工程在 CubeMX_Config 文件夹中,双击打开 CubeMX_Config.ioc 工程,如下图所示:
4.png
对板子做相应的配置
1. CPU要选一下吧,选择L496ZGTX
2. RCC要选对,这边我这板子选择如下:
5.png
这部分比较重要,要对自己板子比较熟悉才行。
如果实在不知道怎么配置,NUCLEO还提供了选择板载的配置(这个配置出厂已经帮你配好了)我也是参考这个配置来改的
6.png
默认的链接ST-LINK的uart是lpuart1,引脚是PG8 PG7
7.png
选择配置LPUART1如下图:
8.png
LED 是PB14 PB7

下面就是配置clock了
这里选中80Mhz会自行匹配
9.png
拷贝初始化函数
之后就是生成工程生成完如下图所示,只需要保留两个文件夹就可以了:
10.png

在 board.c 文件中存放了函数 SystemClock_Config() ,该函数负责初始化系统时钟。当使用 CubeMX 工具对系统时钟重新配置的时候,需要更新这个函数。
该函数由 CubeMX 工具生成,默认存放在board/CubeMX_Config/Src/main.c 文件中。但是该文件并没有被包含到我们的工程中,因此需要将这个函数从 main.c 中拷贝到 board.c 文件中。在整个 BSP 的制作过程中,这个函数是唯一要要拷贝的函数,该函数内容如下所示:
11.png
在 board.h 文件中配置了 FLASH 和 RAM 的相关参数,这个文件中需要修改的是 STM32_FLASH_SIZESTM32_SRAM_SIZE 这两个宏控制的参数。本次制作的 BSP 所用的 STM32L496ZG 芯片的 flash 大小为 1024k,ram 的大小为 320k,因此对该文件作出如下的修改:
12.png
接下来修改  board/Kconfig 文件:
13.png
修改链接脚本
linker_scripts 链接文件如下图所示
14.png
下面以 MDK 使用的链接脚本 link.sct 为例,演示如何修改链接脚本:
15.png
实际修改如下:
16.png
3个文件都需要改一下

修改构建脚本

SConscript 脚本决定 MDK/IAR 工程的生成以及编译过程中要添加文件。

在这一步中需要修改芯片型号以及芯片启动文件的地址,修改内容如下图所示:
17.png
修改工程模板
template 文件是生成 MDK/IAR 工程的模板文件,通过修改该文件可以设置工程中使用的芯片型号以及下载方式。MDK4/MDK5/IAR 的工程模板文件,如下图所示:
18.png
这边就简单配置一下你要生成的project中的配置,基本上就是选择一下调试器和target
19.png

20.png
重新生成工程

重新生成工程需要使用 env 工具。

在 env 界面输入命令 menuconfig 对工程进行配置,并生成新的 rtconfig.h 文件。如下图所示:
21.png

22.png
下面我就要说重要的一步了,这个地方文档没有写,会影响到最终console的使用,这边默认console名字如果不是默认的uart1的话,会打印不出来,这边我们要选择lpuart1
23.png
下面以重新生成 MDK 工程为例,介绍如何重新生成 BSP 工程。

使用 env 工具输入命令 scons --target=mdk5 重新生成工程,如下图所示:
接下来我们可以分别使用命令 scons --target=mdk4 和 scons --target=iar,来更新 mdk4 和 iar 的工程,使得该 BSP 变成一个完整的,可以提交到 GitHub 的 BSP。
好~到此为止,工程应该就可以用了,
但是还需要稍微改一点东西:
打开project, 默认LED小灯是B1,要改成B7
24.png
烧入,串口如下:
25.png
小灯在闪烁,ok,整个工程建立完成。
RT-THREAD就这样跑起来了。虽然一步一步比较复杂,但是看得出RT-THREAD还是付出了很多工作量的。但是,我还是想说,其实有更好的办法处理bsp,我觉得目前STM32这种办法只能说根据STM32的工具做了出来,实际上,还是有很多可以优化的地方的。
附件是bsp工程,放在bsp/stm32目录下面就可以工作了。

stm32l496zg-st-nucleo.zip

下载

258.55 KB, 下载次数: 3

bsp目录下

收藏 1 评论4 发布时间:2019-10-2 21:38

举报

4个回答
飞跃-344154 回答时间:2019-10-15 13:49:57
自己顶一下
李康1202 回答时间:2019-10-23 09:56:26
楼主开发版挺漂亮的
yuanweiju 回答时间:2019-10-23 15:27:10
我之前也移植rt thread到这个开发板上,电脑串口终端能打印rt thread的标志性图标,但是输入命令,如ls,终端没有显示目前运行的线程,请问有遇到过这样的问题吗
飞跃-344154 回答时间:2019-12-7 20:58:35
yuanweiju 发表于 2019-10-23 15:27
我之前也移植rt thread到这个开发板上,电脑串口终端能打印rt thread的标志性图标,但是输入命令,如ls,终 ...

我试过,可以使用,不过ls这个命令用不了吧。这个问题可以从两个方面来分析:首先输入命令板子有没有回显?,有回显说明板子和RTTHREAD没问题,命令有问题。如果没反应,可以从UART这边入手,看RX中断有没有进。

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版