求助STM32F103 执行IAP升级程序异常的原因?

2019-12-11 18:38发布

本帖最后由 yangbo18416 于 2019-4-16 23:37 编辑

目前一个项目,需要把IAP程序从STM32F4移植到STM32F103上。目前的工作已经完成移植,且通过CAN可以完成数据的存储(通过LINK将对应区域数据提取出来和传送bin文件对比是一致的)。目前遇到的情况是,我自己用标准库写的测试程序可以通过该bootloader下载并运行,但是其他用HAL库写的测试程序可以下载,单无法运行。以上判断可以下载基于仿真结果,可执行到跳转程序。正常的程序直接跳转程序后就开始运行了,不正常的程序,则直接死机态。
目前对比两种不同库库函数编写的测试程序的.map文件,都可以看到对应的跳转。如图所示:
失败.png (107.62 KB, 下载次数: 0) 下载附件 2019-4-16 23:29 上传
图五 同事利用HAL库编写的测试程序
目前没有思路往下走了,不知从哪里着手来查找问题!待升级的程序均是同事用HAL库编写的程序,时间也比较仅,还麻烦各位老司机给指点迷津!谢谢各位了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
ztrx
1楼-- · 2019-12-12 12:41
IAP程序我这个最大了吧

TIM截图20190417090939.png (63.39 KB, 下载次数: 0)

下载附件

2019-4-17 09:11 上传

kebaojun305
2楼-- · 2019-12-12 18:29
ztrx 发表于 2019-4-17 09:11
IAP程序我这个最大了吧

我得IAP  带 OS得 也是40多k   就一个iap程序   USB得 CDC 都占不少空间    在加上  hal库  OS
security
3楼-- · 2019-12-12 19:43
 精彩回答 2  元偷偷看……
kebaojun305
4楼-- · 2019-12-13 00:48
security 发表于 2019-4-17 09:29
IAP 还跑 OS,要这么高级?
我在 GD32 上,裸奔 + USB-HID,花了 14KB。


我也是 GD32   OS +CDC  关键是APP 修改过来得,懒得精简了。
yangbo18416
5楼-- · 2019-12-13 05:15
问题已经找到了,bootloader程序里在执行跳转指令前关掉了全局中断__set_PRIMASK(1),而同事写的应用程序上电没有执行__set_PRIMASK(0)操作,因此导致了bootloader可以跳转,但是不执行。而我编写的测试程序,有打开这个操作!
结贴,感谢各位的关注!

一周热门 更多>