搜索
bottom↓
回复: 11

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

[复制链接]

出0入0汤圆

发表于 2019-4-16 23:34:57 | 显示全部楼层 |阅读模式
本帖最后由 yangbo18416 于 2019-4-16 23:37 编辑

目前一个项目,需要把IAP程序从STM32F4移植到STM32F103上。目前的工作已经完成移植,且通过CAN可以完成数据的存储(通过LINK将对应区域数据提取出来和传送bin文件对比是一致的)。目前遇到的情况是,我自己用标准库写的测试程序可以通过该bootloader下载并运行,但是其他用HAL库写的测试程序可以下载,单无法运行。以上判断可以下载基于仿真结果,可执行到跳转程序。正常的程序直接跳转程序后就开始运行了,不正常的程序,则直接死机态。
目前对比两种不同库库函数编写的测试程序的.map文件,都可以看到对应的跳转。如图所示:

图一 RESET 地址信息(左侧为不成功的测试程序,右边为OK的测试程序)

图二 向量偏移地址(左边为失败的,右边为OK程序)

图三 ResetHandler地址(左边为失败的,右边为OK程序)

图四 利用标准库编写的测试程序,可正常通过bootloader下载运行

图五 同事利用HAL库编写的测试程序
目前没有思路往下走了,不知从哪里着手来查找问题!待升级的程序均是同事用HAL库编写的程序,时间也比较仅,还麻烦各位老司机给指点迷津!谢谢各位了!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入14汤圆

发表于 2019-4-17 00:15:10 | 显示全部楼层
所以我不敢碰HAL....不熟悉,看到一堆的宏定义自己都把控不了

出0入0汤圆

 楼主| 发表于 2019-4-17 08:28:25 | 显示全部楼层
isakura 发表于 2019-4-17 00:15
所以我不敢碰HAL....不熟悉,看到一堆的宏定义自己都把控不了


只接触过标准库,哎。。。这个问题怕是无解了

出0入4汤圆

发表于 2019-4-17 08:38:12 | 显示全部楼层
程序发上来看看

出0入362汤圆

发表于 2019-4-17 08:51:30 | 显示全部楼层
用HAL写bootloader,那得多大?
我之前用标准库写的bootloader,4k多,在2k一页的stm32f103rc/re上得占用6k空间,还算可以接受,但是放在16k的stm32f030f4上肯定没法用了。
改成全寄存器操作,也就1.5k多点。

出0入0汤圆

 楼主| 发表于 2019-4-17 09:00:41 | 显示全部楼层
bootloader用的标准库写的,我这边的工作是从STM32F407上移植到STM32F103上来使用。昨天晚上在网上找到了原作者的项目,使用原作者移植的程序也无法运行同事使用HAL编写的测试程序。目前猜测是又有HAL库和标准库在初始化上是不是有不同,待验证中!

出0入8汤圆

发表于 2019-4-17 09:07:26 | 显示全部楼层
yangbo18416 发表于 2019-4-17 09:00
bootloader用的标准库写的,我这边的工作是从STM32F407上移植到STM32F103上来使用。昨天晚上在网上找到了原 ...

不行的问题,可以去看看 SCB->VTOR 对不对吧。

出0入4汤圆

发表于 2019-4-17 09:11:27 | 显示全部楼层
IAP程序我这个最大了吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入8汤圆

发表于 2019-4-17 09:21:38 | 显示全部楼层
ztrx 发表于 2019-4-17 09:11
IAP程序我这个最大了吧

我得IAP  带 OS得 也是40多k   就一个iap程序   USB得 CDC 都占不少空间    在加上  hal库  OS

出0入8汤圆

发表于 2019-4-17 09:29:29 | 显示全部楼层
kebaojun305 发表于 2019-4-17 09:21
我得IAP  带 OS得 也是40多k   就一个iap程序   USB得 CDC 都占不少空间    在加上  hal库  OS ...


IAP 还跑 OS,要这么高级?
我在 GD32 上,裸奔 + USB-HID,花了 14KB。

出0入8汤圆

发表于 2019-4-17 09:30:49 | 显示全部楼层
security 发表于 2019-4-17 09:29
IAP 还跑 OS,要这么高级?
我在 GD32 上,裸奔 + USB-HID,花了 14KB。


我也是 GD32   OS +CDC  关键是APP 修改过来得,懒得精简了。

出0入0汤圆

 楼主| 发表于 2019-4-17 09:33:47 | 显示全部楼层
问题已经找到了,bootloader程序里在执行跳转指令前关掉了全局中断__set_PRIMASK(1),而同事写的应用程序上电没有执行__set_PRIMASK(0)操作,因此导致了bootloader可以跳转,但是不执行。而我编写的测试程序,有打开这个操作!
结贴,感谢各位的关注!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 06:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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