Cortex-M3 内核HardFault错误调试定位方法.docx_第1页
Cortex-M3 内核HardFault错误调试定位方法.docx_第2页
Cortex-M3 内核HardFault错误调试定位方法.docx_第3页
Cortex-M3 内核HardFault错误调试定位方法.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Cortex-M3 内核HardFault错误调试定位方法1、首先更改startup.s的启动文件,把里面的HardFault_Handler代码段换成下面的代码:HardFault_HandlerPROCIMPORT hard_fault_handler_cTST LR, #4ITE EQMRSEQ R0, MSPMRSNE R0, PSPB hard_fault_handler_c ENDP2、然后把hard_fault_handler_c函数放在c文件的代码中。代码如下:void hard_fault_handler_c(unsigned int * hardfault_args)static unsigned int stacked_r0;static unsigned int stacked_r1;static unsigned int stacked_r2;static unsigned int stacked_r3;static unsigned int stacked_r12;static unsigned int stacked_lr;static unsigned int stacked_pc;static unsigned int stacked_psr;static unsigned int SHCSR;static unsigned char MFSR;static unsigned char BFSR;static unsigned short int UFSR;static unsigned int HFSR;static unsigned int DFSR;static unsigned int MMAR;static unsigned int BFAR;stacked_r0 = (unsigned long) hardfault_args0);stacked_r1 = (unsigned long) hardfault_args1);stacked_r2 = (unsigned long) hardfault_args2);stacked_r3 = (unsigned long) hardfault_args3);stacked_r12 = (unsigned long) hardfault_args4);/*异常中断发生时,这个异常模式特定的物理R14,即lr被设置成该异常模式将要返回的地址*/stacked_lr = (unsigned long) hardfault_args5); stacked_pc = (unsigned long) hardfault_args6);stacked_psr = (unsigned long) hardfault_args7);SHCSR = (*(volatile unsigned long *)(0xE000ED24); /系统Handler控制及状态寄存器MFSR = (*(volatile unsigned char *)(0xE000ED28);/存储器管理fault状态寄存器BFSR = (*(volatile unsigned char *)(0xE000ED29);/总线fault状态寄存器UFSR = (*(volatile unsigned short int *)(0xE000ED2A);/用法fault状态寄存器HFSR = (*(volatile unsigned long *)(0xE000ED2C); /硬fault状态寄存器DFSR = (*(volatile unsigned long *)(0xE000ED30);/调试fault状态寄存器MMAR = (*(volatile unsigned long *)(0xE000ED34);/存储管理地址寄存器BFAR = (*(volatile unsigned long *)(0xE000ED38); /总线fault地址寄存器while (1); 3、执行程序后,若发生内核错误,则程序会运行到最后的while(1)处。此时观察相应的堆栈和故障寄存器值, stacked_lr即为故障发生时进入故障中断前pc的值,在MDK软件调试状态下,假如stacked_lr的值为0x1A002D08,在左下方的命令窗口输入“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论