金牌会员
 
- 积分
- 1327
- 金钱
- 1327
- 注册时间
- 2019-7-11
- 在线时间
- 165 小时
|
10金钱
最近拿STM32熟悉IAP,目前正在DEBUG。简单记录一下当前的问题,希望有路过的前辈指点一下。
芯片型号STM32ZEH6
512KB FLASH划分情况
----------------------------------------------------------------------------------------------------------
bootloader 64KB | flag 2KB | app1 222KB | blank 1KB | app2 222KB | blank 1KB
----------------------------------------------------------------------------------------------------------
由于是简单的练手,当前的思路是这样的:
1. bootloader仅仅做跳转,根据flag的值决定跳到app1还是app2。
2. app1/2通过串口接收bin文件并写入app2/1的flash空间。
目前从bootloader跳转到app1没问题。
接收bin文件的size没问题,内容未验证。
写入flash的字节数量有问题。
执行第一次更新之后,flag的值变更了,但是执行的还是老的app。是不是意味着下面这种放在main()中的改变中断向量表偏移地址的写法无效?
- flag = readHalfWord_flash(FLAG_ADDR);
- if (0x0002 == flag) {
-
- LED9_ON;
- NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00048400);
- } else {
-
- LED5_ON;
- NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00010800);
- }
复制代码
|
|