查看原文
其他

基于STM32F4、RT-Thread通用BootLoader使用经验

strongerHuang 2021-01-31

The following article is from RTThread物联网操作系统 Author SeniorZ

本文来自RT-Thread项目代码贡献者(SeniorZ)

希望对基于RT-Thread系统开发项目的朋友有所帮助。

硬件资源


正点原子stm32f407zgt6探索者开发板,片上Flash(ROM)大小为1024KB,RAM大小为192KB,板载一个SPI Flash W25Q128。



BootLoader配置


根据官方文档:

https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/

(公号不支持外链接,请复制链接到浏览器打开)

BootLoader的基本配置如下,加密压缩的配置可以不选。

上述的分区表以及bootloader所占空间可以用下面的图表示,偏移地址的概念为从0x08000000开始偏移。

flash空间的前128KB用来存放Bootloader固件,因此排在BootLoader之下的download分区的起始地址为0x08020000。

生成Bootloader固件,固件会自动发送到自己的邮箱。


烧录Bootloader


将得到的Bootloader固件通过STM32 ST-LINK Utility.exe 烧录到片上flash。要注意的是,烧录的起始地址为0x0800000。


关于ST-Link知识,推荐阅读我的文章:【专栏】ST-Link资料



烧录完成后串口工具会输出以下信息:

要注意的是,其中的NJUST字样是自定义的,可以在bootloader生成的页面自行定义。


两个CRC32的error信息可以忽略,因为此时的flash中并没有包含分区表,分区表信息需要我们通过烧录app程序完成初始化配置。


FAL分区表中的onchip_flash为片上flash空间,起始地址为0x08020000,扇区大小为128KB。


烧录app程序和打包


参考官方文档:

https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/ 

(公号不支持外链接,请复制链接到浏览器打开)

烧录出厂固件


出厂固件的keil编译相关设置同app程序一样,中断向量表偏移地址也是一样的。


在制作出厂固件app_factory时,需要将keil生成的bin用ota打包器进行打包,打包器的固件分区名为app,固件版本为1.0.0,然后将打包生成的app_factory.rbl改后缀名为app_factory.bin。最后使用st-link-utility将修改后缀名的app_factory.bin烧录到Flash的0x08060000地址即可。


要注意,不可以直接把keil编译的bin文件直接下载到factory分区,因为此时的bin并没有app的头信息,这个头信息需要由OTA打包器打包后才能添加。


恢复出厂固件的方法:按住WK_UP按键的同时按下复位按键,保持WK_UP按键处于按下状态10秒,即可进入恢复状态。



参考资料

  • https://www.rt-thread.org/qa/thread-11864-1-1.html



推荐阅读:

如何正确使用MDK-ARM优化功能,以及优化之后带来的影响

从TrueSTUDIO迁移到STM32CubeIDE只需要简单几步


关注公众号『strongerHuang』,在底部菜单中查看更多精彩内容!


长按识别图中二维码关注

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存