打印
[Kinetis]

【经验分享】CW10.x编译环境查找HardFault异常原因

[复制链接]
1947|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
已经遇到很多客户反映:CodeWarrior10.x编译环境调试Processor Expert软件生成的Kinetis芯片程序时经常会进入PE_ISR(Cpu_Interrupt) PE_DEBUGHALT中断,但仅从这个中断服务函数名上又无法辨别到底是什么原因导致的。参考以往问题反馈和同事Erich Styger的博文Debugging Hard Faults on ARM Cortex-M并经过几番尝试之后发现这往往是芯片由于各种原因导致的Hard Fault异常中断。在此与大家分享一下使用 CodeWarrior10.6编译环境调试PE生成的程序时,查找Hard Fault异常中断原因的方法。

此处简略介绍文档内容:
一、CodeWarrior10.x编译环境背景知识


二、Cortex M0+内核异常中断背景知识


三、人工查找HardFault异常原因
借鉴ARM官网专为Keil MDK编译环境提供的应用手册apnt209里提到的方法,在CodeWarrior10.x编译环境里展示:通过查看进入异常中断函数后的LR值来观察被栈入Main Stack 或 Process Stack的进入异常前的R0-R3,R12, LR, PC,PSR寄存器值。被栈入的LR链接寄存器存储着进入异常前调用的子程序地址信息,被栈入的返回地址PC寄存器存储着进入异常前将执行的那条代码。




四、程序查找HardFault异常原因
使用汇编代码在异常中断函数里将引起Hard Fault的代码地址或子程序地址存入R1寄存器以便大家观察。


完整文档及测试代码请下载
【经验分享】CW10.x编译环境查找HardFault异常原因.zip (1.37 MB)






PS:本帖可从 飞思卡尔MCU论坛 置顶帖 飞思卡尔Kinetis资料大本营 飞思卡尔论坛支持小组【经验分享】总汇 链接进入。

相关帖子

沙发
FSL_TICS_Robin|  楼主 | 2014-11-18 15:09 | 只看该作者
希望对使用飞思卡尔Kinetis微控制器遇到Hard Fault异常中断的用户有所帮助,不足之处还请大家在帖子中予以指出。

使用特权

评论回复
板凳
FSL_TICS_Jeremy| | 2014-11-19 14:19 | 只看该作者
最新的经验分享,让你一窥Hard_fault的秘密!

使用特权

评论回复
地板
ljl7288185| | 2016-6-17 14:27 | 只看该作者
用的KDS,不知道能不能参照这个来调试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

2439

帖子

13

粉丝