完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
板子: AT32F403ARGT7 ram 96k
rt-thread: 4.1.0 bootloader: 跳转前 以下重置操作
app start: 0x8020000
运行结果, 能正常跳转到app, main函数未输出就直接fault
如下修改可以正常运行
app程序进行单独运行没有问题的 |
|
相关推荐
1个回答
|
|
|
嗯,用户遇到了在AT32F403ARGT7上从bootloader跳转到APP时出现总线错误的问题。这个问题看起来挺棘手的,让我先理清楚整个流程。 用户使用的芯片是AT32F403ARGT7,RAM有96KB,运行的是RT-Thread 4.1.0。bootloader在跳转前做了一些重置操作,包括调用系统复位函数、关闭外设时钟等。现在跳转后出现了总线错误,这说明程序在执行APP代码时访问了非法内存地址。 首先考虑中断向量表的问题。bootloader和APP的中断向量表地址肯定不同,用户可能没有在跳转后更新VTOR寄存器。AT32的VTOR默认在0x08000000,而APP的起始地址应该是偏移后的位置,比如0x08010000。如果跳转后没有设置VTOR,当发生中断就会出问题。 然后是堆栈指针的设置。在跳转前必须把APP的堆栈指针设置正确。查看用户提供的代码片段,发现他确实设置了MSP为APP的复位向量地址,但可能读取的位置不对。应该是从APP起始地址直接读取第一个字作为MSP,第二个字才是复位地址。 用户还做了很多外设复位操作,这个思路是对的,但要注意有些寄存器复位状态可能影响跳转。特别注意到他修改了CRM->cfg_bit.sclksel,这个操作有点可疑,可能改变了系统时钟源但没等稳定就跳转了。 中断关闭可能也不彻底。bootloader在跳转前应该关闭所有中断,包括全局中断和使用过的外设中断。RT-Thread的rt_hw_interrupt_disable()应该能处理全局中断,但外设中断也需要单独关闭。 内存布局也很关键。要检查链接脚本中APP的起始地址是否和bootloader设置的跳转地址一致。RAM使用是否有重叠,特别是bootloader使用的RAM区域是否和APP冲突。96KB RAM虽然不算小,但如果bootloader用了下半部分而APP默认从0x20000000开始,就会冲突。 最后想到时钟配置的一致性。bootloader可能配置了高速时钟,但APP启动时默认使用内部时钟。如果bootloader跳转前重置了时钟但没有复位芯片,APP可能在高频下跑内部时钟导致崩溃。 解决方案应该分步骤验证:先在跳转代码中正确设置VTOR和MSP;确保中断全部关闭;检查链接脚本的地址;简化时钟重置操作;最后在APP初始化时尽快重新配置时钟。可能还要在跳转前打印一些寄存器状态帮助调试。 根据您描述的 AT32F403ARGT7 在从 Bootloader 跳转到 APP 时出现 Bus Fault 错误,结合您提供的 Bootloader 跳转前操作代码,问题很可能源于 中断向量表未正确切换 和 系统状态未完全清理。以下是详细分析和解决方案: 核心原因分析
改进后的 Bootloader 跳转代码(关键步骤)关键验证点
调试建议
总结问题解决路径完成上述步骤后,95% 的类似问题可解决。 若仍存在问题,需结合 |
|
|
|
|
只有小组成员才能发言,加入小组>>
184个成员聚集在这个小组
加入小组rtstudio是否可像keil加载ini解决虚拟串口与mcu串口通讯?
1211 浏览 0 评论
【Vision Board创客营连载体验】基于RA8D1-Vision Board的自动路径规划小车
1775 浏览 1 评论
【Vision Board创客营连载体验】基于Vision Board的垃圾分类
2156 浏览 0 评论
【Vision Board创客营连载体验】使用 Vision Board 做一个 UVC Camera
1777 浏览 0 评论
【Vision Board创客营连载体验】TinyMaix进行手写数字识别
2004 浏览 0 评论
1461浏览 5评论
在RT-Thread Studio中新建的stm32f407-atk-explorer工程运行qemu失败,是什么原因引起的?
1764浏览 3评论
为什么rt_device_read()只能读取到两个字节数据?
359浏览 3评论
连得上热点,但是ping baidu.com出现timeout,请问跟什么有关?
418浏览 3评论
413浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 10:36 , Processed in 0.730958 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1427
