查看: 1969|回复: 0

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

[复制链接]

该用户从未签到

发表于 2019-11-12 09:54:10 | 显示全部楼层 |阅读模式
分享到:


RT-THREAD
中国的操作系统,还算对STM32友好,
稍微调试了下终于把攻略做出来了,
目前github上还没有l496zg-nucleo的工程,正好手上有一块板子,做起来。
在操作系统上点亮一个小灯,应该比较简单。
https://github.com/RT-Thread/rt-thread

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



我们来新建一个文件,从stm32l4xx拷贝出来

第二步: 进到目录board\CubeMX_Config
在制作 BSP 的第二步,需要创建一个基于目标芯片的 CubeMX 工程。默认的 CubeMX 工程在 CubeMX_Config 文件夹中,双击打开 CubeMX_Config.ioc 工程,如下图所示:

对板子做相应的配置
1. CPU要选一下吧,选择L496ZGTX
2. RCC要选对,这边我这板子选择如下:

这部分比较重要,要对自己板子比较熟悉才行。
如果实在不知道怎么配置,NUCLEO还提供了选择板载的配置(这个配置出厂已经帮你配好了)我也是参考这个配置来改的

默认的链接ST-LINK的uart是lpuart1,引脚是PG8 PG7

选择配置LPUART1如下图:

LED 是PB14 PB7

下面就是配置clock了
这里选中80Mhz会自行匹配

拷贝初始化函数
之后就是生成工程生成完如下图所示,只需要保留两个文件夹就可以了:


在 board.c 文件中存放了函数 SystemClock_Config() ,该函数负责初始化系统时钟。当使用 CubeMX 工具对系统时钟重新配置的时候,需要更新这个函数。
该函数由 CubeMX 工具生成,默认存放在board/CubeMX_Config/Src/main.c 文件中。但是该文件并没有被包含到我们的工程中,因此需要将这个函数从 main.c 中拷贝到 board.c 文件中。在整个 BSP 的制作过程中,这个函数是唯一要要拷贝的函数,该函数内容如下所示:

在 board.h 文件中配置了 FLASH 和 RAM 的相关参数,这个文件中需要修改的是 STM32_FLASH_SIZESTM32_SRAM_SIZE 这两个宏控制的参数。本次制作的 BSP 所用的 STM32L496ZG 芯片的 flash 大小为 1024k,ram 的大小为 320k,因此对该文件作出如下的修改:

接下来修改  board/Kconfig 文件:

修改链接脚本
linker_scripts 链接文件如下图所示

下面以 MDK 使用的链接脚本 link.sct 为例,演示如何修改链接脚本:

实际修改如下:

3个文件都需要改一下

修改构建脚本

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

在这一步中需要修改芯片型号以及芯片启动文件的地址,修改内容如下图所示:

修改工程模板
template 文件是生成 MDK/IAR 工程的模板文件,通过修改该文件可以设置工程中使用的芯片型号以及下载方式。MDK4/MDK5/IAR 的工程模板文件,如下图所示:

这边就简单配置一下你要生成的project中的配置,基本上就是选择一下调试器和target



重新生成工程

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

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



下面我就要说重要的一步了,这个地方文档没有写,会影响到最终console的使用,这边默认console名字如果不是默认的uart1的话,会打印不出来,这边我们要选择lpuart1

下面以重新生成 MDK 工程为例,介绍如何重新生成 BSP 工程。

使用 env 工具输入命令 scons --target=mdk5 重新生成工程,如下图所示:
接下来我们可以分别使用命令 scons --target=mdk4 和 scons --target=iar,来更新 mdk4 和 iar 的工程,使得该 BSP 变成一个完整的,可以提交到 GitHub 的 BSP。
好~到此为止,工程应该就可以用了,
但是还需要稍微改一点东西:
打开project, 默认LED小灯是B1,要改成B7

烧入,串口如下:

小灯在闪烁,ok,整个工程建立完成。
RT-THREAD就这样跑起来了。虽然一步一步比较复杂,但是看得出RT-THREAD还是付出了很多工作量的。但是,我还是想说,其实有更好的办法处理bsp,我觉得目前STM32这种办法只能说根据STM32的工具做了出来,实际上,还是有很多可以优化的地方的。
附件是bsp工程,放在bsp/stm32目录下面就可以工作了。
游客,如果您要查看本帖隐藏内容请回复

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条



手机版|小黑屋|与非网

GMT+8, 2024-4-16 18:32 , Processed in 0.115024 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.