解决 gcc + openocd + stm32 烧录程序时覆盖 bootloader 的问题

我希望将 bootloader 放到 0x08000000,主程序放到 0x08008000。gcc 编译时默认会把 Program Header 的 Align 调到 0x10000,导致产生的 ELF 文件的加载地址从 0x08000000 起始,openocd 烧写时会覆盖掉 bootloader,产生麻烦。解决办法是在链接器参数中增加 -z max-page-size=4096,调小页面大小;或者直接增加 -n选项,让 Program Header 不要对齐。修改后,烧录时就不会覆盖掉 bootloader 了。

CC BY-SA 4.0 本作品使用基于以下许可授权:Creative Commons Attribution-ShareAlike 4.0 International License.

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据