做网站公司 包含了服务器费用吗,海珠区,北京网站建设升上去,广西住房城乡和建设厅网站一.获取内核寄存器的值
1.在MDK的DEBUG模式下#xff0c;当程序出现跑飞后#xff0c;确定卡死在HardFault_Handler中断处 2. 通过Register窗口读取LR寄存器的值来确定当前系统使用堆栈是MSP还是PSP
LR寄存器值堆栈寄存器0xFFFFFFF9MSP寄存器0xFFFFFFFDPSP寄存器
如下图所…一.获取内核寄存器的值
1.在MDK的DEBUG模式下当程序出现跑飞后确定卡死在HardFault_Handler中断处 2. 通过Register窗口读取LR寄存器的值来确定当前系统使用堆栈是MSP还是PSP
LR寄存器值堆栈寄存器0xFFFFFFF9MSP寄存器0xFFFFFFFDPSP寄存器
如下图所示当前程序使用的是PSP堆栈寄存器 二、查看堆栈寄存器保存的值
通过Register窗口确定MSP或PSP的地址 如下图所示当前程序卡死时使用的堆栈寄存器为PSP寄存器地址为0x20010318 MSP、PSP堆栈寄存器介绍 由于异常发生时内核将r0、r1、r2、r3、r12、r14(lr)、pc、xprs寄存器依次入栈 r14(lr)保存的是产生异常中断前内核执行的指令地址 r15(pc)保存的内核正在执行的指令地址 3 查看堆栈寄存器的保存值 将上面PSP寄存器的地址0x20010318输入到MDK的Memory窗口中得到的数据如下第六个数为lr寄存器的保存值
三、定位lr寄存器地址的函数名
在工程编译后的map文件中根据lr的地址确定运行函数如下图所示在产生异常中断前最后执行的地址为0x0801D727在函 prvAddCurrentTaskToDelayedList中 分析产生异常中断的原因
四、获取lr寄存器保持地址的方法
通过MDK在线调试如上面介绍的流程通过jlink工具使用命令行也可以完成上述过程的定位 JLink Commander调试方法
相关文章: