如何把hardfault

如何把hardfault,第1张

你好,

入门新人 :对于从 C51 、MSP430 等简单单片机转而使用更加复杂的 ARM 新人来说,时不时出现的 "hard falut" 死机会让新人瞬间懵掉。定位错误的方法也往往是连接上仿真器,一步步 F10/F11 单步,定位到具体的错误代码,再去猜测、排除、推敲错误原因,这种过程十分痛苦。

熟练老手 :慢慢的大家知道可以通过故障寄存器信息来定位故障原因及故障代码地址,虽然这样能解决一小部分问题,但是重复的、繁琐的分析过程也会耽误很多时间。而且对于一些复杂问题,只依靠代码地址是无法解决的,必须得还原错误现场的函数调用逻辑关系。虽然连接仿真器可以查看到的函数调用栈,但故障状态下是无法显示的,所以还是得一步步 F10/F11 单步去定位错误代码的位置。另外,还有两种场景,

1、很多产品真机调试时必须断开仿真器

2、问题确实存在,但是极难被重现

所以定位这类问题就显得难上加难。

接下来将介绍一款全新的 ARM Cortex-M 系列 MCU 错误追踪库: CmBacktrace 库。使用该库后,上述所有问题都迎刃而解,可以将错误信息输出到控制台上,还可以将错误信息使用 EasyFlash 的 Log 功能保存至 Flash 中,设备死机后重启依然能够读取上次的错误信息。CmBacktrace 输出的信息包括函数调用栈、故障诊断结果、堆栈、故障寄存器及产品固件信息,极大的提升了错误定位的效率及准确性。

工具/原料

CmBacktrace: ARM Cortex-M 系列 MCU 错误追踪库

addr2line 工具

方法/步骤

1

在 GitHub 上搜索并下载最新 CmBacktrace 库。查看 \demos 目录下有没有合适自己的 Demo ,如有类似,则建议直接进行真机测试。

2

找到 Demo 工程,文件夹 RVMDK 下为 Keil 工程,EMARM 下为 IAR 工程。打开工程后,在 app/src/appc 中有 fault_test_by_unalign() 及 fault_test_by_div0() 两个 HardFault 测试函数,可以选择性的执行测试函数。

3

程序下载至开发板,并将其串口1 与电脑串口连接。电脑上打开该串口,串口配置 115200 8 1 N ,给开发板上电,即可看到类似如下的输出信息,故障原因也已被准确的诊断出来。

4

查看函数调用栈基本信息

5

通过命令行工具进入项目工程存放可执行文件的路径

6

使用 addr2line 命令,查看函数调用栈详细信息,并定位错误代码

希望对你有帮助~

右键单击-属性-兼容性,选择以win8兼容模式打开,我这么解决了,不过只能通过打开BIN文件内的PDSEXE才能打开文件,它自己创的桌面快捷方式用不了。然后可以右键PDSEXE点发送到桌面,重新生成一个快捷方式

proteus安装后不能运行

proteus安装后不能用?

1 首先安装setup7exe;

2 其次打开"所有程序"-Proteus 7 Professional-Licence Manager;添加许可文件LICENCElxk;

3 将Proteus 7 版exe复制到安装文件夹下运行;如C:\Program Files\Labcenter Electronics\Proteus 7 Professional

4 最后将汉化包中文件复制到C:\Program Files\Labcenter Electronics\Proteus 7 Professional\BIN覆盖原文件;

proteus89安装后stm32f运行不了

编译和链接都可以通过,但 uVision MDK不能全速运行

编译和链接都可以通过,但uVision MDK不能全速运行,一运行就停止了,原因在于Option-Target-Code Generation-Use MicroLIB 复选框没有打钩,一般来说,针对一运行就停止的情况,将Use MicroLIB勾选之后,重新编译,运行就可以通过了。仿真调试时没有问题,但通过JLink调试时出现如下提示:

"Flash Download Failed-"Cortex-M3" ,则可能的原因是:Option-Debug-Use Driver for Flash Programming-Setting-Flash Download-Programming Algotithm 或 Option-Utilities-Use Driver for Flash Programming-Setting-Flash Download-Programming Algotithm没有添加相应类型的芯片FLASH说明,一般在这两个选项卡中分别点击ADD,添加STM32F10x High-density Flash 即可。调试时,程序总是停止在LDR R0, =SystemInit 语句,原因如下:堆栈空间默认的太小

默认startup_stm32f10x_hds中 Stack_Size EQU 0x00000400,如果改大之后,可能调试就可以正常运行。

四、调试时,程序停止在HardFault_Handler的问题(引用网上的总结)

最近调试UCGUI和UCOSII,程序莫名其妙的死掉了,用JLINK调试,发现进入了HardFault_Handler,主要

原因有两个,堆栈溢出和数组越界,很不幸的是这两种情况都被我碰到了。

我的电脑安装proteus78,安装完之后,打不开,怎么解决

这是该程序出现问题,没有运行的缘故,两种解决办法,一是卸载该程序,并删除所在的文件夹,然后重装该程序,如果还不行,从别的网站下载该程序后再安装,如果还不行,那就是 *** 作系统中没有支持该程序的程序,这个程序可能是后来需要安装上的,如C++2010等,也可能是系统自带的程序缺失。

proteus 8 professional元件放好后无法运行

proteus8professional元件放好后无法运行可能是元损坏。

器件是由多个元件组合而成的完成比较复杂的特定功能的部件,元件则只是单个的二极管、三极管、场效应管、电阻、电容、电感等。

先对整个电路进行检查,确认没有诸如短路、元器件损坏之类的故障后,再行更换熔丝。

我下载的proteus78下载安装后打不开不了

你先把安装破解后的proteus78文件放到桌面,然后打开ISISEXE应用程序,如果打不开,可能是你下载的proteus有问题,建议重新下载或叫你的同学发他的可以运行的安装文件给你。如果在桌面可以运行,你就可以再把这个安装文件放到你想放到的地方,注意安装路径不能有中文,如:"D:\study software\Proteus78\BIN\ISISEXE"这个就可以。"D:\学习软件\Proteus78\BIN\ISISEXE"这个就不可以。

以上就是关于如何把hardfault全部的内容,包括:如何把hardfault、proteus8professional下载一次后不能用,重新下载安装时、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9731948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存