硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2979|回复: 10
收起左侧

....请教个hardfault问题

[复制链接]

27

主题

91

回帖

172

积分

初级会员

积分
172
发表于 2020-7-23 09:24:38 | 显示全部楼层 |阅读模式
使用RTT的插件(UCOS移植)cmB定位hardfault,系统没跑2-3天出现:在中断或裸机环境下发生错误异常错误:主栈(10003328)发生溢出
=========== 线程堆栈信息 ===========
  addr: 200106c8    data: 00000000
  addr: 200106cc    data: 00000000
  addr: 200106d0    data: 00000000
  addr: 200106d4    data: 00000000
  addr: 200106d8    data: 00000000
  addr: 200106dc    data: 00000000
  addr: 200106e0    data: 00000000
  addr: 200106e4    data: 00000000
  addr: 200106e8    data: 00000000
  addr: 200106ec    data: 00000000
  addr: 200106f0    data: 00000000
  addr: 200106f4    data: 00000000
  addr: 200106f8    data: 00000000
  addr: 200106fc    data: 00000000
  addr: 20010700    data: 00000000
  addr: 20010704    data: 00000000
  addr: 20010708    data: 00000000
  addr: 2001070c    data: 00000000
  addr: 20010710    data: 00000000
  addr: 20010714    data: 00000000
  addr: 20010718    data: 00000000
  addr: 2001071c    data: 00000000
  addr: 20010720    data: 00000000
  addr: 20010724    data: 00000000
  addr: 20010728    data: 00000000
  addr: 2001072c    data: 00000000
  addr: 20010730    data: 00000000
  addr: 20010734    data: 00000000
  addr: 20010738    data: 00000000
  addr: 2001073c    data: 00000000
  addr: 20010740    data: 00000000
  addr: 20010744    data: 00000000
  addr: 20010748    data: 00000000
  addr: 2001074c    data: 00000000
  addr: 20010750    data: 00000000
  addr: 20010754    data: 00000000
  addr: 20010758    data: 00000000
  addr: 2001075c    data: 00000000
  addr: 20010760    data: 00000000
  addr: 20010764    data: 00000000
  addr: 20010768    data: 00000000
  addr: 2001076c    data: 00000000
  addr: 20010770    data: 00000000
  addr: 20010774    data: 00000000
  addr: 20010778    data: 00000000
  addr: 2001077c    data: 00000000
  addr: 20010780    data: 00000000
  addr: 20010784    data: 00000000
  addr: 20010788    data: 00000000
  addr: 2001078c    data: 00000000
  addr: 20010790    data: 00000000
  addr: 20010794    data: 00000000
  addr: 20010798    data: 00000000
  addr: 2001079c    data: 00000000
  addr: 200107a0    data: 00000000
  addr: 200107a4    data: 00000000
  addr: 200107a8    data: 00000000
  addr: 200107ac    data: 00000000
  addr: 200107b0    data: 00000000
  addr: 200107b4    data: 00000000
  addr: 200107b8    data: 00000000
  addr: 200107bc    data: 00000000
  addr: 200107c0    data: 00000000
  addr: 200107c4    data: 00000000
  addr: 200107c8    data: 00000000
  addr: 200107cc    data: 00000000
  addr: 200107d0    data: 00000000
  addr: 200107d4    data: 00000000
  addr: 200107d8    data: 00000000
  addr: 200107dc    data: 00000000
  addr: 200107e0    data: 00000000
  addr: 200107e4    data: 00000000
  addr: 200107e8    data: 00000000
  addr: 200107ec    data: 00000000
  addr: 200107f0    data: 00000000
  addr: 200107f4    data: 00000000
  addr: 200107f8    data: 00000000
  addr: 200107fc    data: 00000000
  addr: 20010800    data: 00000000
  addr: 20010804    data: 00000000
  addr: 20010808    data: 00000000
  addr: 2001080c    data: 00000000
  addr: 20010810    data: 00000000
  addr: 20010814    data: 00000000
  addr: 20010818    data: 00000000
  addr: 2001081c    data: 00000000
  addr: 20010820    data: 00000000
  addr: 20010824    data: 00000000
  addr: 20010828    data: 00000000
  addr: 2001082c    data: 00000000
  addr: 20010830    data: 00000000
  addr: 20010834    data: 00000000
  addr: 20010838    data: 00000000
  addr: 2001083c    data: 00000000
  addr: 20010840    data: 00000000
  addr: 20010844    data: 00000000
  addr: 20010848    data: 00000000
  addr: 2001084c    data: 00000000
  addr: 20010850    data: 00000000
  addr: 20010854    data: 00000000
  addr: 20010858    data: 00000000
  addr: 2001085c    data: 00000000
  addr: 20010860    data: 00000000
  addr: 20010864    data: 00000000
  addr: 20010868    data: 00000000
  addr: 2001086c    data: 00000000
  addr: 20010870    data: 00000000
  addr: 20010874    data: 00000000
  addr: 20010878    data: 00000000
  addr: 2001087c    data: 00000000
  addr: 20010880    data: 00000000
  addr: 20010884    data: 00000000
  addr: 20010888    data: 00000000
  addr: 2001088c    data: 00000000
  addr: 20010890    data: 00000000
  addr: 20010894    data: 00000000
  addr: 20010898    data: 00000000
  addr: 2001089c    data: 00000000
  addr: 200108a0    data: 00000000
  addr: 200108a4    data: 00000000
  addr: 200108a8    data: 00000000
  addr: 200108ac    data: 00000000
  addr: 200108b0    data: 00000000
  addr: 200108b4    data: 00000000
  addr: 200108b8    data: 00000000
  addr: 200108bc    data: 00000000
  addr: 200108c0    data: 00000000
  addr: 200108c4    data: 00000000
  addr: 200108c8    data: 00000000
  addr: 200108cc    data: 00000000
  addr: 200108d0    data: 00000000
  addr: 200108d4    data: 00000000
  addr: 200108d8    data: 00000000
  addr: 200108dc    data: 00000000
  addr: 200108e0    data: 00000000
  addr: 200108e4    data: 00000000
  addr: 200108e8    data: 00000000
  addr: 200108ec    data: 00000000
  addr: 200108f0    data: 00000000
  addr: 200108f4    data: 00000000
  addr: 200108f8    data: 00000000
  addr: 200108fc    data: 00000000
  addr: 20010900    data: 00000000
  addr: 20010904    data: 00000000
  addr: 20010908    data: 00000000
  addr: 2001090c    data: 00000000
  addr: 20010910    data: 00000000
  addr: 20010914    data: 00000000
  addr: 20010918    data: 00000000
  addr: 2001091c    data: 00000000
  addr: 20010920    data: 00000000
  addr: 20010924    data: 00000000
  addr: 20010928    data: 00000000
  addr: 2001092c    data: 00000000
  addr: 20010930    data: 00000000
  addr: 20010934    data: 00000000
  addr: 20010938    data: 00000000
  addr: 2001093c    data: 00000000
  addr: 20010940    data: 00000000
  addr: 20010944    data: 00000000
  addr: 20010948    data: 00000000
  addr: 2001094c    data: 00000000
  addr: 20010950    data: 00000000
  addr: 20010954    data: 00000000
  addr: 20010958    data: 00000000
  addr: 2001095c    data: 00000000
  addr: 20010960    data: 00000000
  addr: 20010964    data: 00000000
  addr: 20010968    data: 00000000
  addr: 2001096c    data: 00000000
  addr: 20010970    data: 00000000
  addr: 20010974    data: 00000000
  addr: 20010978    data: 00000000
  addr: 2001097c    data: 00000000
  addr: 20010980    data: 00000000
  addr: 20010984    data: 00000000
  addr: 20010988    data: 00000000
  addr: 2001098c    data: 00000000
  addr: 20010990    data: 00000000
  addr: 20010994    data: 00000000
  addr: 20010998    data: 00000000
  addr: 2001099c    data: 00000000
  addr: 200109a0    data: 00000000
  addr: 200109a4    data: 00000000
  addr: 200109a8    data: 00000000
  addr: 200109ac    data: 00000000
  addr: 200109b0    data: 00000000
  addr: 200109b4    data: 00000000
  addr: 200109b8    data: 00000000
  addr: 200109bc    data: 00000000
  addr: 200109c0    data: 00000000
  addr: 200109c4    data: 00000000
  addr: 200109c8    data: 00000000
  addr: 200109cc    data: 00000000
  addr: 200109d0    data: 00000000
  addr: 200109d4    data: 00000000
  addr: 200109d8    data: 00000000
  addr: 200109dc    data: 00000000
  addr: 200109e0    data: 00000000
  addr: 200109e4    data: 00000000
  addr: 200109e8    data: 00000000
  addr: 200109ec    data: 00000000
  addr: 200109f0    data: 00000000
  addr: 200109f4    data: 00000000
  addr: 200109f8    data: 0000003e
  addr: 200109fc    data: 10000784
  addr: 20010a00    data: 0801cd24
  addr: 20010a04    data: 00000006
  addr: 20010a08    data: 080184ea
  addr: 20010a0c    data: 08016283
  addr: 20010a10    data: 10003144
  addr: 20010a14    data: 00000000
  addr: 20010a18    data: 00000000
  addr: 20010a1c    data: 0800c64d
  addr: 20010a20    data: 00000080
  addr: 20010a24    data: 00000000
  addr: 20010a28    data: 00000003
  addr: 20010a2c    data: 0801cd24
  addr: 20010a30    data: 0801cd24
  addr: 20010a34    data: 00000000
  addr: 20010a38    data: 00000000
  addr: 20010a3c    data: 00000000
  addr: 20010a40    data: 08000000
  addr: 20010a44    data: 40026058
  addr: 20010a48    data: 00000003
  addr: 20010a4c    data: 10000784
  addr: 20010a50    data: 00000007
  addr: 20010a54    data: 00000200
  addr: 20010a58    data: 00000000
  addr: 20010a5c    data: 20000708
  addr: 20010a60    data: 20000f04
  addr: 20010a64    data: 00000000
  addr: 20010a68    data: 20010ab4
  addr: 20010a6c    data: 0800c64d
  addr: 20010a70    data: 00000200
  addr: 20010a74    data: 00000000
  addr: 20010a78    data: 00000007
  addr: 20010a7c    data: 0801123d
  addr: 20010a80    data: 00000000
  addr: 20010a84    data: 20000f04
  addr: 20010a88    data: 00000003
  addr: 20010a8c    data: 0801cd24
  addr: 20010a90    data: 0801cd24
  addr: 20010a94    data: 00000000
  addr: 20010a98    data: 00000000
  addr: 20010a9c    data: 00000000
  addr: 20010aa0    data: 1000001c
  addr: 20010aa4    data: 0800c587
  addr: 20010aa8    data: 0801cd24
  addr: 20010aac    data: 080184c5
  addr: 20010ab0    data: 00000003
  addr: 20010ab4    data: 20000708
  addr: 20010ab8    data: 00000200
  addr: 20010abc    data: 00000000
  addr: 20010ac0    data: 00000007
  addr: 20010ac4    data: 080007e1
====================================
发生总线错误,原因:精确的数据总线错误
发生总线错误的地址:4b075a09
查看更多函数调用栈信息,请运行:addr2line -e F429MCU.axf -a -f 08016282 0800c64c 0800c64c 0800c586 080184c4 080007e0

使用add2line工具 打印: -a -f 08016282 0800c64c 0800c64c 0800c586 080184c4 080007e0
0x08016282
_printf_core
../clib/microlib/printf/printf.c:?
0x0800c64c
OSTaskCreateExt
D:\Substation\10_eth_station\02_station_rs485_NewFrm\Project\MDK-ARM(uV4)/..\..\uCOS-II\uCOS-II\Source\/os_task.c:381
0x0800c64c
OSTaskCreateExt
D:\Substation\10_eth_station\02_station_rs485_NewFrm\Project\MDK-ARM(uV4)/..\..\uCOS-II\uCOS-II\Source\/os_task.c:381
0x0800c586
OSStart
D:\Substation\10_eth_station\02_station_rs485_NewFrm\Project\MDK-ARM(uV4)/..\..\uCOS-II\uCOS-II\Source\/os_core.c:854
0x080184c4
main
D:\Substation\10_eth_station\02_station_rs485_NewFrm\Project\MDK-ARM(uV4)/..\..\User\/main.c:1020
0x080007e0
$d
??:?

请问大家,大致原因是什么,用检测线程堆栈方法,打印:
Prio   Used  Free  Per   State  Taskname
   64     17    111  13%  0x00  uC/OS-II Idle
   63     26    102  20%  0x00  uC/OS-II Stat
   62     30     98  23%  0x00  uC/OS-II Tmr
    3    166    346  32%  0x00  ?
   11    128    384  25%  0x04  Task_CAN1_Recv
   29     80    432  15%  0x00  Task_CAN_Upload
   12    292    220  57%  0x00  Task_CAN_Class1_Recv
   28     66     62  51%  0x00  Task_CAN_Upload_IO
    4    116    396  22%  0x00  Rs485_SendTask
    5     92    164  35%  0x04  Rs485_1_RecvTask
    6    126    130  49%  0x20  Rs485_2_RecvTask
    7    251      5  98%  0x04  Rs485_3_RecvTask
    8     92    164  35%  0x04  Rs485_4_RecvTask
    9     76    180  29%  0x04  Rs485_5_RecvTask
   10    102     26  79%  0x00  Manual_Task
   22     56    456  10%  0x00  ?
   19     72    184  28%  0x00  Bind97_Task
   25    108     20  84%  0x00  MoniterTask
   26     92    420  17%  0x00  Task_Bind95
   18    100     28  78%  0x00  Task_SerOffline
   13     54    202  21%  0x00  Task_SerPW
   27     66     62  51%  0x04  Task_Tft
   32     72    184  28%  0x00  Task_CanMsg
   20     86    170  33%  0x04  Init_PwrHdlTask

没有堆栈满

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2020-7-23 09:36:45 | 显示全部楼层
这个地址是啥:4b075a09

查了没
回复

使用道具 举报

27

主题

91

回帖

172

积分

初级会员

积分
172
 楼主| 发表于 2020-7-23 09:59:43 | 显示全部楼层
eric2013 发表于 2020-7-23 09:36
这个地址是啥:4b075a09

查了没

4b075a09 没查,这个是仿真时候   mem中看没。。。
回复

使用道具 举报

27

主题

91

回帖

172

积分

初级会员

积分
172
 楼主| 发表于 2020-7-23 10:04:18 | 显示全部楼层
eric2013 发表于 2020-7-23 09:36
这个地址是啥:4b075a09

查了没

但是发现个现状     7    251      5  98%  0x04  Rs485_3_RecvTask   出问题时候这个线程堆栈达到98%,这个任务是处理 第3路485数据的,可是这路总线没有接任何设备。。。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2020-7-23 10:48:21 | 显示全部楼层
borrow1988 发表于 2020-7-23 10:04
但是发现个现状     7    251      5  98%  0x04  Rs485_3_RecvTask   出问题时候这个线程堆栈达到98%, ...

4b075a09有必要查下是那个外设地址范围。
回复

使用道具 举报

27

主题

91

回帖

172

积分

初级会员

积分
172
 楼主| 发表于 2020-7-23 10:59:22 | 显示全部楼层
eric2013 发表于 2020-7-23 10:48
4b075a09有必要查下是那个外设地址范围。

查看STM32F4xx 寄存器边界地址   这个地址没有外设
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2020-7-23 11:02:59 | 显示全部楼层
borrow1988 发表于 2020-7-23 10:59
查看STM32F4xx 寄存器边界地址   这个地址没有外设

如果是这样的话,大概率是程序操作越界了,你的截图任务栈不是最大值,是当前值。

有必要逐步排查下了。
回复

使用道具 举报

27

主题

91

回帖

172

积分

初级会员

积分
172
 楼主| 发表于 2020-7-23 11:16:52 | 显示全部楼层
eric2013 发表于 2020-7-23 11:02
如果是这样的话,大概率是程序操作越界了,你的截图任务栈不是最大值,是当前值。

有必要逐步排查下了 ...

请问下 怎么打印最大值, 还有以前做LINUX时候出现过类似现象,当时是PRINTF导致的,怀疑这次类似,我现在把调试关闭,配置release模式,跑几天试试
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2020-7-23 11:26:02 | 显示全部楼层
borrow1988 发表于 2020-7-23 11:16
请问下 怎么打印最大值, 还有以前做LINUX时候出现过类似现象,当时是PRINTF导致的,怀疑这次类似,我现 ...

uC/Probe可以监测。

你看下最新版的uCOS-II里面有没有一个RedZone基准,uCOS-III是有的,比较好用,专门检测任务栈越界问题的。
回复

使用道具 举报

27

主题

91

回帖

172

积分

初级会员

积分
172
 楼主| 发表于 2020-7-28 16:23:28 | 显示全部楼层
eric2013 发表于 2020-7-23 11:26
uC/Probe可以监测。

你看下最新版的uCOS-II里面有没有一个RedZone基准,uCOS-III是有的,比较好用,专 ...

。。。。解了,printf打的多导致,或者说printf写的不安全。。。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2020-7-28 18:10:03 | 显示全部楼层
borrow1988 发表于 2020-7-28 16:23
。。。。解了,printf打的多导致,或者说printf写的不安全。。。

谢谢告知最终原因。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-10 23:52 , Processed in 0.299107 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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