完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
正在尝试使用 RTT 做一个 bootloader。一直没有成功,现做了一些调试和对比,描述如下: 程序有BootLoader,项目app(命名:APP),测试app(命名:testApp)。 1、BootLoader中将所有用到的外设在跳转前都进行了复位,和关闭RCC使能。APP跳转地址为 0x08020000。 2、testApp是用 HAL 库进行编写的程序,无操作系统,只有一个功能就是闪灯。用到了HAL_Delay函数(即使用了SysTick中断),通过断点调试,可以在正确进入中断。 (经过测试,testApp可以正常运行) 3、APP 为使用 RTThread 的应用程序。该程序直接从 0x08000000 地址运行正常,调试也正常。 4、将APP 修改为从 0x08020000 地址开始运行,通过Bootloader 下载运行则不正常。 第三步 APP 直接运行时,执行完 SystemInit 后,内核相关寄存器内容如下: 第四步,从BootLoader运行时,跳转到APP后,通过汇编代码中打断点,执行完 APP 的 SystemInit 后(看汇编部分代码,为APP的启动汇编部分),内核相关寄存器内容如下: 从两个图中对比来看,没有发现不同。所以个人认为 APP 正式启动之前,两种情况下,MCU 状态应该已经处于一致。但为什么从 BootLoader运行就不正常。 当运行不正常时,通过Jlink调试,经过以下标注的代码后就跑飞了(跑到了非法地址)。 现在不清楚到底是哪里的问题,还是有哪些地方没有注意到,程序跳转成功了,但是运行不起来。 这个跑飞的代码位置还处于 OS 运行之前的初始化阶段,外设初始化和各个任务都还没开始运行。 希望有经验的各位大佬指教。 |
|
相关推荐
5个回答
|
|
systeminit里面的vector地址改了吗
|
|
|
|
|
|
MSP和PSP改了么,是处于MSP下么?
|
|
|
|
是处于MSP模式
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
655 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2448 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1292 浏览 0 评论
1895 浏览 0 评论
1486 浏览 0 评论
74873 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 18:43 , Processed in 0.752166 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号