搜索
bottom↓
回复: 4

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

[复制链接]

出0入0汤圆

发表于 2019-5-24 08:31:56 | 显示全部楼层 |阅读模式
本帖最后由 younew 于 2019-5-24 08:31 编辑

使用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等系统功能,邮箱等都没用,。
各位有没有遇到类似的问题啊?或做有没有思路,提示一下,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2019-5-24 08:41:11 | 显示全部楼层
是不是任务堆堆栈设小了

出0入0汤圆

 楼主| 发表于 2019-5-24 09:00:32 | 显示全部楼层
Xplain 发表于 2019-5-24 08:41
是不是任务堆堆栈设小了

堆栈是1K和2K的,一般使用率在25%一下。就是不知道进入HardFault_Handler后看到堆栈使用率还准吗?

出0入0汤圆

发表于 2019-5-24 09:02:27 | 显示全部楼层
可以实时看看堆栈的, 除0也有可能

出870入263汤圆

发表于 2019-5-24 17:25:33 | 显示全部楼层
你检查看看是不是在中断中调用了os_开头的函数?中断只能调用isr_开头的函数。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 01:59

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表