OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3638|回复: 7

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

[复制链接]

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
发表于 2017-7-6 10:14:25 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 yuzeyuan1 于 2017-7-6 10:15 编辑

比如256K的flash,程序量必须小于128?
我用的F407的片子,512Kflash。刚刚接触IAP升级,还不会弄,但是我hex文件的大小是265k。是应该看这个大小吗?

最佳答案

查看完整内容[请看2#楼]

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 之和。
自在随心
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2016-11-16
在线时间
111 小时
发表于 2017-7-6 10:14:26 | 显示全部楼层
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 之和。
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
 楼主| 发表于 2017-7-6 11:26:41 | 显示全部楼层
yklstudent 发表于 2017-7-6 10:48
没有这要求,不超过你分配给APP程序的FLASH空间大小就好了

请问串口IAP实验里,txt里说“本实验下载成功后,需用串口调试助手发送SRAM APP/FLASH APP等APP代码(.bin文件)验证IAP功能.”
这个。。怎么用串口调试助手发送bin文件呢?
自在随心
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
 楼主| 发表于 2017-7-6 11:31:16 | 显示全部楼层
yuzeyuan1 发表于 2017-7-6 11:26
请问串口IAP实验里,txt里说“本实验下载成功后,需用串口调试助手发送SRAM APP/FLASH APP等APP代码(.bin ...

额,我会了,有个打开文件
自在随心
回复

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1704
金钱
1704
注册时间
2012-5-10
在线时间
440 小时
发表于 2017-7-6 11:31:47 | 显示全部楼层
Flash分区:bootloader区,程序1区,程序2区。。。
只要你的程序bin文件加上bootloaderbin文件大小小于flash就行
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
 楼主| 发表于 2017-7-6 15:09:54 | 显示全部楼层
本帖最后由 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空间是固定的
自在随心
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
 楼主| 发表于 2017-7-6 15:10:20 | 显示全部楼层
yklstudent 发表于 2017-7-6 10:48
没有这要求,不超过你分配给APP程序的FLASH空间大小就好了

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

使用道具 举报

9

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
421
金钱
421
注册时间
2017-4-26
在线时间
64 小时
发表于 2017-7-6 16:00:19 | 显示全部楼层
最近IAP是越来越火了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-17 01:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表