[开发工具]

实战经验 | 使用STM32CubeIDE填充未用FLASH区域

[复制链接]
272|5
手机看帖
扫描二维码
随时随地手机跟帖
STM新闻官|  楼主 | 2024-2-28 14:16 | 显示全部楼层 |阅读模式
本帖最后由 STM新闻官 于 2024-2-28 14:25 编辑

一、引言
在 IAR 中有一个功能可以设置“将未用到 FLASH 区域填充成设定的数值(如 0xFF) 及是否计算 checksum”。STM32CubeIDE 中没有该功能的 GUI 实现,但可以通过修改 Link File 实现,本文就修改方法进行介绍。
二、STM32CubeIDE 未用 Flash 区域的填充
2.1. STM32CubeIDE GCC 工具链介绍
STM32CubeIDE 使用 GNU GCC arm 工具链进行编译,链接。具体来讲就是使用 arm -none-eabi-gcc 进行代码编译;使用 arm-none-eabi-gcc 进行链接(因为 arm-none-eabi-ld 对c/c++文件混合型生成的.o 文件支持性较差);使用 arm-none-eabi-objcopy 生成 hex, bin 文件;使用 arm-none-eabi-objdump 生成编译链接过程的信息文件等。如下面的STM32CubeIDE build 日志输出。填充 Flash 区域就是用到了 GNU GCC linker 的功能。
6461965ded0efba747.png

2.2. 用 0xFF 填充 Flash 未用区域
在 STM32CubeIDE 中,为了实现填充 Flash 未用区域,可以修改 Link 文件。具体做法是在 ld 文件中,在 Sections 中最后一个要放入 FLASH (> FLASH)的 section 之后,添加一个附加 section(如下例中 padding), 该 section 大小为剩余 FLASH 大小,内容为 0xFF。再将该 section 使用“> FLASH”放入 FLASH 即可。
下面以 STM32H747 工程中的一个 Link File 示例:
4795865ded13b729a9.png
6291265ded18186cf4.png
2.3. 代码区的 checksum如果需要计算代码区的 checksum,上例中的 padding section,则不要全部填充,可剩余1 到几个字节。如使用 16 位 checksum,则将 Number_bytes_checksum 设置为 2。
6450165ded16391f53.png
待完成 checksum 计算后,将 checksum 数值写入 bin 文件的最后几个字节即可生成完整的烧录 bin 文件。

三、 小结

本文介绍了在 STM32CubeIDE 中,利用 Link 文件实现 Flash 未用区域填充 0xFF(或其他数值)的方法,核心是增加填充了的 section。有需要的客户可以参考文中的具体实现方法。


使用特权

评论回复
STM新闻官|  楼主 | 2024-2-28 14:25 | 显示全部楼层
点击按钮下载《使用STM32CubeIDE填充未用FLASH区域》原文档。[color=var(--weui-LINK)]点击下载

使用特权

评论回复
STM新闻官|  楼主 | 2024-2-28 14:26 | 显示全部楼层

使用特权

评论回复
zwsam| | 2024-2-29 08:56 | 显示全部楼层

使用特权

评论回复
药无尘| | 2024-2-29 14:54 | 显示全部楼层
为啥要填充未用FLASH呢

使用特权

评论回复
技术工程师| | 2024-3-4 14:37 | 显示全部楼层
同问

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:您的嵌入式应用将得益于意法半导体领先的产品架构、技术、多源产地和全方位支持。意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。

493

主题

619

帖子

16

粉丝