使用keil分析死机问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用keil分析死机问题相关的知识,希望对你有一定的参考价值。

参考技术A 当前使用的是Arm cortext M33,keil编译环境。
测试用例如下:

keil跑一下,死机了。 peripherals - core peripherals - Fault Reports NS ,可以看到以下信息:

解决问题,需要先推一下异常前的现场,以确定异常发生的位置:
Arm Cortex M在进入异常之前,会将异常前寄存器压栈,包含硬件自动入栈和软件入栈:

压栈顺序搞明白了,那么下面就去栈空间里找到保存的 lr 、 pc 等重要信息。
先确定一下是从 handler 模式还是 thread模式 进入的异常,这时,需要查看进入异常时的 EXEC_RETURN 的 bit2 来确定:

图1 已经是异常ISR又做了一次跳转,所以要看 EXEC_RETURN 的值,需要在MM FAULT的ISR函数打个断点,再跑一下:

EXEC_RETURN = 0xFFFFFFBC ( 图2 箭头指向),其 bit2 = 1,那说明是在 thread模式 发生了异常,现场信息都保存在了 PSP 指向的栈中。

psp = 0x2008D8C0 ,内存如下。因为我们在已进入 MemManage_Handler 就断点了,所以,没有执行主动压栈的部分,当前栈中只有硬件自动压栈的8个寄存器(下图红色框处,从右到左,依次是 psr,pc,lr,r12,r3,r2,r1,r0 ):

通过 addr2line 和符号表可以很容易定位到异常点(xxx_demo.c的369行):

使用电脑的时候总是死机是什么原因

在办公室,大家一般都遇到过自己或者同事的电脑死机过,这也是一种见怪不怪的事情了,话又说回来了,造成电脑死机的原因是什么?应该如何避免这种情况的发生呢?好系统重装助手针对这一问题来为大家分析一下原因。
技术分享图片
引起电脑死机的原因,大体上来讲,无非就是两大种:硬件和软件。
硬件原因
最常见的就是散热问题,时间长了,机箱里进灰尘,导致机箱温度不能及时扩散而运行不稳定,建议经常清理机箱灰尘;还有就是硬件设备的不兼容,不同厂家的内存构成双通道时不兼容,如果需要增加内存,建议购买同个品牌,同个频率的内存条;最后一种就是硬盘损坏,导致系统在读取时出现问题,建议定时对硬盘进行检测,以免造成数据丢失。
软件原因
运行时间过长,机器跟人一样,也需要休息,开机运行时间过长会导致系统不稳定出现死机,建议不用时及时关机;后台运行程序过多,会导致内存读写超负荷运转造成死机,建议把不用的程序在后台进行关闭;系统垃圾过多,长时间使用操作系统,会产生系统垃圾、磁盘碎片、插件等,也会造成系统不稳定,出现死机现象,建议经常对电脑进行垃圾清理;最后就是病毒的原因了,病毒***会占用大量系统资源,给系统造成运行负担,而且病毒也会破坏各种程序进程,从而导致系统出现死机,建议经常对电脑进行病毒查杀。
本文来源:https://www.yunqisoft.com/news/ssT433.html

以上是关于使用keil分析死机问题的主要内容,如果未能解决你的问题,请参考以下文章

linux系统死机分析及解决方法

centos7.2系统死机日志分析

KEIL编译器选择STC8A8K系列单片机报错未注册容量限制信息原因分析

分析电脑死机的常见的几种原因,以及对应的解决方法

平板电脑经常死机是怎么回事

Keil/MDK:STM32堆栈使用情况分析