STM32
直播中

吴湛

9年用户 779经验值
擅长:电源/新能源
私信 关注
[问答]

HAL库IAP失败的原因?

第一个项目HAL库:STM32Cube FW_F1 V1.2.0,生成A_boot.bin,A_app.bin,从A_boot跳转A_app成功
第二个项目HAL库:STM32Cube FW_F1 V1.4.0,生成B_boot.bin,B_app.bin,从B_boot跳转B_app失败

交叉测试:A_boot.bin跳转B_app成功,说明B_app没有问题;B_boot.bin跳转A_app成功,说明B_boot没有问题;问题在哪里?

回帖(1)

1653339509.516700

2024-5-10 17:37:13
根据您提供的信息,我们可以逐步分析可能导致IAP(In-Application Programming)失败的原因:

1. 首先,您提到了两个不同的STM32Cube FW_F1版本:V1.2.0和V1.4.0。这可能意味着两个版本之间存在一些差异,这可能是导致IAP失败的原因之一。建议您仔细阅读两个版本的文档,看看是否有任何关于IAP的更改或不兼容的地方。

2. 其次,您提到了交叉测试的结果。A_boot.bin跳转B_app成功,说明B_app没有问题;B_boot.bin跳转A_app成功,说明B_boot没有问题。这表明问题可能出在B_boot.bin和B_app.bin之间的跳转过程中。可能的原因包括:

   a. 跳转地址不正确:请检查B_boot.bin中的跳转地址是否正确指向B_app.bin的入口点。

   b. 内存布局问题:请检查B_app.bin的内存布局是否与B_boot.bin兼容。例如,确保B_app.bin的起始地址和大小与B_boot.bin中的预期值相匹配。

   c. 中断和异常处理:请检查B_boot.bin和B_app.bin中的中断和异常处理是否正确设置。错误的中断和异常处理可能会导致跳转失败。

3. 另外,还有一些其他可能导致IAP失败的原因,例如:

   a. 时钟设置问题:请检查B_boot.bin和B_app.bin中的时钟设置是否正确,以确保系统在跳转过程中正常运行。

   b. 存储器访问权限问题:请确保B_app.bin具有正确的存储器访问权限,以便在跳转后正常执行。

   c. 编译器/链接器设置问题:请检查您的编译器和链接器设置,确保它们与STM32Cube FW_F1 V1.4.0兼容。

综上所述,要解决IAP失败的问题,您需要仔细检查B_boot.bin和B_app.bin之间的跳转过程,以及可能影响跳转的其他因素。希望这些建议能帮助您找到问题所在并解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分