完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
static void vControlSwitch (void) 这段代码 在rtt 没有启动之前调用 是可以跳转到主APP的,但是一任务中调用 会直接导致跳转失败,APP代码无法执行, 有没有踩过RTT做bootloader 的坑的 |
|
相关推荐
2个回答
|
|
需要关掉systick 以及所有中断
|
|
|
|
是的需要关闭所有中断,防止出错,可以参考 qboot 中的实现代码
void qbt_jump_to_app(void) { typedef void (*app_func_t)(void); u32 app_addr = QBOOT_APP_ADDR; u32 stk_addr = *((__IO uint32_t *)app_addr); app_func_t app_func = (app_func_t)(*((__IO uint32_t *)(app_addr + 4))); if ((((u32)app_func & 0xff000000) != 0x08000000) || (((stk_addr & 0x2ff00000) != 0x20000000) && ((stk_addr & 0x2ff00000) != 0x24000000))) { LOG_E("No legitimate application."); return; } rt_kprintf("Jump to application running ... n"); rt_thread_mdelay(200); __disable_irq(); HAL_DeInit(); for(int i=0; i<128; i++) { HAL_NVIC_DisableIRQ(i); HAL_NVIC_ClearPendingIRQ(i); } SysTick->CTRL = 0; SysTick->LOAD = 0; SysTick->VAL = 0; HAL_RCC_DeInit(); __set_CONTROL(0); __set_MSP(stk_addr); app_func();//Jump to application running LOG_E("Qboot jump to application fail."); } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2219 浏览 0 评论
2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
17660 浏览 11 评论
2406 浏览 0 评论
IaaS+on+DPU(IoD)+下一代高性能算力底座技术白皮书
3815 浏览 0 评论
飞凌嵌入式-ELFBOARD 常用的USB接口及其不同版本介绍第1期
1289 浏览 0 评论
69337 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-28 18:15 , Processed in 0.661849 second(s), Total 73, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号