IAP升级是不是要求程序量要小于内部flash的大小的一半?

2019-08-17 03:12发布

本帖最后由 yuzeyuan1 于 2017-7-6 10:15 编辑

比如256K的flash,程序量必须小于128?
我用的F407的片子,512Kflash。刚刚接触IAP升级,还不会弄,但是我hex文件的大小是265k。是应该看这个大小吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
wenzh3333
1楼-- · 2019-08-17 08:22
Code:表示程序所占用 FLASH 的大小(FLASH)。
RO-data:即 Read Only-data,表示程序定义的常量,如 const 类型(FLASH)。
RW-data:即 Read Write-data,表示已被初始化的全局变量(SRAM)
ZI-data:即 Zero Init-data,表示未被初始化的全局变量(SRAM)
有了这个就可以知道你当前使用的 flash 和 sram 大小了,所以,一定要注意的是程序的大
小不是.hex 文件的大小,而是编译后的 Code 和 RO-data 之和。
yuzeyuan1
2楼-- · 2019-08-17 09:50
 精彩回答 2  元偷偷看……
yuzeyuan1
3楼-- · 2019-08-17 10:56
yuzeyuan1 发表于 2017-7-6 11:26
请问串口IAP实验里,txt里说“本实验下载成功后,需用串口调试助手发送SRAM APP/FLASH APP等APP代码(.bin ...

额,我会了,有个打开文件
xsx127
4楼-- · 2019-08-17 14:49
Flash分区:bootloader区,程序1区,程序2区。。。
只要你的程序bin文件加上bootloaderbin文件大小小于flash就行
yuzeyuan1
5楼-- · 2019-08-17 15:52
本帖最后由 xsx127 于 2017-7-7 09:26 编辑
xsx127 发表于 2017-7-6 11:31
Flash分区:bootloader区,程序1区,程序2区。。。
只要你的程序bin文件加上bootloaderbin文件大小小于fla ...

您好,我刚刚拿代码测试了一下,实现了固件更新,但有两个问题
1:RAM那么小,为什么会有SRAM进行固件更新这个用法呢?有好处么?
2、flash里分bootloader区,程序1区,程序2区。程序1用到的所有数据都会在程序1区里,如果最开始程序1区是100kB,它会不会在程序运行过程中再变大了?比如变大到110kB。如果它会变大,我是不是要把程序2区的起始地址弄的远一些,以免被覆盖?

1,ram比程序小,却能更新程序是因为,分段更新,第一次往flash 0-100地址写数据,第二次往flash 100-200写数据,就算你程序很大,也只占用100字节的内存
2,程序的大小是编译后固定的,占用flash空间是固定的
yuzeyuan1
6楼-- · 2019-08-17 20:51
yklstudent 发表于 2017-7-6 10:48
没有这要求,不超过你分配给APP程序的FLASH空间大小就好了

您好,我刚刚拿代码测试了一下,实现了固件更新,但有两个问题
1:RAM那么小,为什么会有SRAM进行固件更新这个用法呢?有好处么?
2、flash里分bootloader区,程序1区,程序2区。程序1用到的所有数据都会在程序1区里,如果最开始程序1区是100kB,它会不会在程序运行过程中再变大了?比如变大到110kB。如果它会变大,我是不是要把程序2区的起始地址弄的远一些,以免被覆盖?

一周热门 更多>