…如上图所示:使用芯片APM32F407ZG,使用地址0x08004000 ~ 0x0800FFFF 作为内部存储 因为是擦除大小是16KB 其余都是64KB/128KB所以定义了一个48KB大小const数组用来占用这个区域,避免链接时将执行代码链接到此区域。但编译的时候,链接脚本会把合适大小的执行代码填补0x08000000 ~ 0x08003FFF 区域,导致链接时把自动初始化组件给截断了。请教各位大神,有没有解决方法。避免自动初始化组件被截断的情况。
查看更多
(1)修改链接脚本,像 gcc 的链接脚本,可以指定地址,如果是 Keil MDK,可以通过 section 的 attribute 指定地址(2)48K 数组指定内存区域后, 自动初始化的段放在这个区域后面
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
APM32F407系列内部Flash为1MB 前64KB 区块大小为16KB,紧接着为1块64KB,其余块大小都为128KB。若是使用后面,做数据库的时候至少需要2个区块也就是说256KB。这会造成严重浪费空间资源。并且不利于做OTA方案。因此最佳方案就是使用如本帖所说。
最后你说的方案只适合简单的应用
@Iceorigin