Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Consen
Hello
注册于 3年前
回答
2
文章
0
关注者
0
关注TA
向TA提问
发私信
TA的回答
问
带操作系统的boot,跳转到带操作系统的app发生hardfault
发布于2年前
确认之后来结题了 先说结论 跳转函数在系统时钟主频较低时 跳转函数的执行设定是有点问题的 关闭总中断后最好是优先关闭systick,中间不要夹杂其它代码了。 问题诱因是因为主频配成了8M,导致关总中断后到关闭systick中间的指令时间大于systick触发时间,后续排查时直接看ICSR内存大小端看错了,还以为产生的是MemManager异常,其实就是systick中断挂起了。 就是这样,所以qboot的跳转函数针对指令时间问题可以优化一下,关总中断后优先关闭systick即可 ```c RT_WEAK 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)) { LOG_E("No legitimate application."); return; } rt_kprintf("Jump to application running ... \n"); rt_thread_mdelay(200); __disable_irq(); SysTick->CTRL = 0; SysTick->LOAD = 0; SysTick->VAL = 0; HAL_DeInit(); for(int i=0; i<128; i++) { HAL_NVIC_DisableIRQ(i); HAL_NVIC_ClearPendingIRQ(i); } HAL_RCC_DeInit(); __set_CONTROL(0); __set_MSP(stk_addr); app_func();//Jump to application running LOG_E("Qboot jump to application fail."); } ```
问
LWIP netif slipif.c 无法添加
发布于3年前
已解决 `properties -> c/c++ general -> paths and symbols -> source location ->(找到为加入项目中的文件路径)edit filter` 从目录中删除被屏蔽的文件来加入到工程
TA的主页
TA的回答
TA的提问
TA的文章
TA的粉丝
TA的关注
会员统计
注册于 3年前
个人主页被 803 人浏览
回到
顶部
发布
问题
投诉
建议
问 带操作系统的boot,跳转到带操作系统的app发生hardfault