水之呢喃 发表于 2025-7-30 20:12

把程序放到大Page页中启动运行了

APM32F407的内置Flash的共分为了16页,对于512KB的容量,每页的容量并不是均匀分配,而是前面低地址的存储区域页大小较小,如16KB。后面高地址存储区域页大小较大,如128KB。

貌似把程序稳定部分,尤其那些已经稳定运行的库文件,放到大Page页里是一个非常好的选择。

今天就以APM32F407VE为例尝试一下在Keil环境下实现上述想法。其实,实现起来还是非常简单的。我把程序定位在了0x08010_0000 到 0x0801_FFFF 这64KB的程序空间里面。首先需要在配置里面把程序的起始地址与大小配置到Keil里面,如下图所示:



再返回工程,编译一下,看看MAP文件



看!还是蛮简单的。如果日后,项目复杂,工程文件多,64KB的空间不够用,可以再扩展到128KB的大页上面。亲,你们也来尝试一下吧!

梦塑者 发表于 2025-7-31 14:41

这个想法不错啊!
可以把配置信息的数据放到小的page页里面。
话说楼主是怎么想到的呢

穷得掉渣大侠 发表于 2025-7-31 19:08

这个方法确实可以优化程序的存储效率,尤其是在资源有限的情况下。你的实践分享很有帮助,谢谢!

彩虹捕手 发表于 2025-7-31 22:57

这个方法确实不错,对于提高程序的稳定性和运行效率很有帮助。你提供的Keil配置和MAP文件截图很直观,谢谢分享!

neomissing 发表于 2025-8-4 09:07

以上操作完全是错误做法,首先这个修改起始地址和大小是做boot和app的,修改程序的启动位置,不是这样放程序在不同扇区,keil目前程序存储默认做法是根据创建文件的位置来存储,靠近顶部文件先存储在前面区域,往下排列,当然你可以修复每个c或者函数存储位置,简单做法直接指定c文件存储区域,右键配置即可,不是如上的乱操作

迷雾隐者 发表于 2025-8-4 17:05

这个方法确实不错,将稳定部分的程序放在大页中可以提高效率。你提供的步骤和图片都很有帮助,谢谢分享!

SpiritSong 发表于 2025-8-7 21:13

有 道理啊!
我也是一直使用Keil默认的地址按序存放的方式来处理的。
页: [1]
查看完整版本: 把程序放到大Page页中启动运行了