完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
将STM32单片机的片上flash分为三个区域:
IAP程序区:0x8000000~0x8004000(分16kb空间用于存储iap程序和用户信息) 说明:iap程序主要是初始化一个通信串口用于接收主控发给单片机的升级bin文件数据帧,数据帧带有特定协议,后面详细说明,用户信息包含升级标志及原始参数存储,包括显示颜色、音量等级等,这些信息固定在分配的16kb空间的最后一页(一页是2kb),即0x8003800~0x8004000空间段为用户信息存储区。 APP1程序区:0x8004000~0x801a800(分90kb空间用于存放应用程序1) 说明:单片机最初始程序固件由iap+APP1组成.bin文件,下载到单片机上运行时也是由iap将运行的移位指针跳转到0x8004000开始正式运行。当有升级指令将程序由APP1切换成IAP程序时,升级标志位被改写,并进入iap程序等待升级固件数据帧,接收到真确固件后,iap会自动重启,并将升级标志恢复清零。再次运行时,iap将判断其之前的更新APP2段(0x801a800~0x8031000)的程序是否能运行,如果可以就跳转到APP2运行,此后如果有重新升级的指令,将程序存放到APP1段,跳转APP1运行,这样轮流交替升级就是iap的原理,由于目前扫码终端的运行固件(.bin)文件不是很大,分90kb空间一个区域是够用的,STM32F103VET有512Kb的片上flash,够用,无需外扩存储空间。 APP2程序区:0x801a800~0x8080000(从0x801a800以后的区域都为APP2区) 说明:APP2区与APP1区为升级固件主要存储区,升级时,IAP程序里处理会把新固件存放的那个区域的数据清空,而旧的应用程序会在下一次更新操作是清空。一定要确保固件大小在单个分配区域的最大范围之内,比如分配的区域是90Kb,则固件文件大小确保不大于90kb字节长度,如果大于,需要将APP区域空间分配大一点,避免下次升级时新固件数据存储把旧固件给覆盖或重叠,导致APP1与APP2区都无正常程序可运行,这种情况就只能用下载器现场从新烧写固件。 用户存储数据一定不要存放在APP1和APP2区域段,不知道那次升级就会把用户存储数据给擦除替换,这将导致iap无法读到正确的标志,升级将不能继续执行或根本无法运行(这种情况也只能下载器重新烧写固件)。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1568 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1513 浏览 1 评论
939 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
669 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1561 浏览 2 评论
1851浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
620浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
506浏览 3评论
511浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
492浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 05:26 , Processed in 0.659079 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号