OpenEdv-开源电子网

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

IAP更新较大的(11K及以上)后程序不运行,更新4或7K的程序确可以正常运行

[复制链接]

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2019-10-1
在线时间
16 小时
发表于 2020-12-14 11:52:19 | 显示全部楼层 |阅读模式

APP应用正常放在0x08000000运行,bootloader放到0x08070000启动;
操作流程是,APP接受bin文件内容后写入flash:0x080350000,  每次写入最大1024,分多次写入;
写入完成后跳转到IAP,进行更新,每次读取1024字节,写入0x08000000开始的位置;然后复位;
现在现象是:4K/7K的bin文件能正常更新成功;  11k及以上的程序再更新完后复位,就不运行 更新的新程序了;


备份bin文件的代码:
  1. STMFLASH_Write(FLASH_APP_BIN_SAVE_ADDR+((RecevieBinPackageQuantity-1) * 0x400),(u32 *)packBinDataRECEVIE->stuBinData, 256);
复制代码
RecevieBinPackageQuantity:第几次写入
packBinDataRECEVIE->stuBinData:写入的数据




更新flash代码:
  1. for(tmpCnt = 0;tmpCnt < SAVE_FLASH.RecevieBinPackageQuantity;tmpCnt++)
  2.                 {
  3.                         STMFLASH_Read(BackUpAPPAddr+(tmpCnt*0x400)        ,(u32 *)BinData,256); //±&#216;D&#235;ê&#199;4μ&#196;±&#182;êy---&#182;áè&#161;±&#184;·Yμ&#196;APP       
  4.                         STMFLASH_Write(APPAddr+(tmpCnt*0x400)                                ,(u32 *)BinData, 256);
  5. }
复制代码
SAVE_FLASH.RecevieBinPackageQuantity:分几次读出
BackUpAPPAddr:备份地址0x08035000
APPAddr:APP地址0x08000000




求救..............




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2019-10-1
在线时间
16 小时
 楼主| 发表于 2020-12-14 11:53:39 | 显示全部楼层
验证过从bin文件读取的数据 和 接受的bin数据,都没问题
回复 支持 反对

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3369
金钱
3369
注册时间
2011-11-10
在线时间
207 小时
发表于 2020-12-14 19:47:32 | 显示全部楼层
你查查手册看看扇区都多大的。“每次写入最大1024,分多次写入”必须符合扇区大小
回复 支持 反对

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2020-12-14 20:23:26 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-13 17:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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