打印

使用RTX(MDK4.7))时进入HardFault_Handler

[复制链接]
715|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wupeng1|  楼主 | 2019-5-24 08:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
使用RTX(MDK4.7))时进入HardFault_Handler 报Bus Fault,跟踪发现问题出在rt_rmv_dly 函数里面:
void rt_rmv_dly (P_TCB p_task) {
  /* Remove task identified with "p_task" from delay list if enqueued.      */
  P_TCB p_b;

  p_b = p_task->p_blnk;
  if (p_b != NULL) {
    /* Task is really enqueued */
    p_b->p_dlnk = p_task->p_dlnk;
    if (p_task->p_dlnk != NULL) {
      /* 'p_task' is in the middle of list */
      p_b->delta_time += p_task->delta_time;
      p_task->p_dlnk->p_blnk = p_b;
      p_task->p_dlnk = NULL;
    }

....
图片左边显示的LD 和PC值是使用SEGGER_HardFaultHandler.c记录的.rt_rmv_dly函数是在rt_pop_req函数中调用的
“rt_sem_psh ((P_SCB)p_CB);”
从图片中可以看出p_CB->cb_type是0x05
控制块的类型不是只有“
/* Values for 'cb_type' */
#define TCB             0
#define MCB             1
#define SCB             2
#define MUCB            3
#define HCB             4”这几个吗?怎样会有5呢?


程序中只是用的os_evt_wait_or,os_evt_wait_and,os_evt_clr, os_dly_wait等系统功能,邮箱等都没用,。
各位有没有遇到类似的问题啊?或做有没有思路,提示一下,谢谢!
rtx2.png (733.07 KB, 下载次数: 0)


rtx.png (785.88 KB, 下载次数: 0)






使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

21

帖子

0

粉丝