查看: 9622|回复: 9

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

[复制链接]
  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6030
    最后登录
    2025-8-21
    发表于 2014-11-18 14:47:14 | 显示全部楼层 |阅读模式
    本帖最后由 FSL_TICS_Robin 于 2014-11-18 14:50 编辑

    已经遇到很多客户反映: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编译环境背景知识
    Own handler for every.jpg

    二、Cortex M0+内核异常中断背景知识
    Exception types.jpg

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

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


    完整文档及测试代码请下载
    【经验分享】CW10.x编译环境查找HardFault异常原因.zip (1.37 MB, 下载次数: 238)
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    143

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    443
    最后登录
    2020-10-29
    发表于 2014-12-11 17:59:15 | 显示全部楼层
    本帖最后由 bsdpgsql 于 2014-12-11 18:03 编辑
    FSL_TICS_Robin 发表于 2014-12-1 09:04
    不用客气呢
    都是在解决客户遇到的问题时学到的,大家一起共同进步了
    ...

    额,有个简单的方法可以试试,个人经验,还没有看到网上哪里有说道的。
    不管返回地址放在栈的什么什么地方,总之isr返回总会返回到出问题的地方,所以把isr处理函数里面第一句就直接return,在这个return上打个断点,然后运行捕捉到这个return,然后单步,一般就能回到出问题的地方,,,回去之后再单步又异常就又回来这里return,这里就是个死循环,基于这个现象,如果单步return回不去,那就把断点取了,全速跑,然后暂停仿真器,第一次暂停不行就接着跑第二次再暂停,或者多来几次,有很大概率是停在出问题那条语句,,,
    如果以上都不行,那就老老实实按一楼说的弄了 个人经验90%以上的情况都可以通过这种偷懒的方式找到异常发生的地方。
    回复 支持 2 反对 0

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6030
    最后登录
    2025-8-21
     楼主| 发表于 2014-11-18 14:52:12 | 显示全部楼层
    希望对使用飞思卡尔Kinetis微控制器遇到Hard Fault异常中断的用户有所帮助,不足之处还请大家在帖子中予以指出。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    278

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    494
    最后登录
    2025-4-9
    发表于 2014-11-19 14:17:32 | 显示全部楼层
    学习了,谢谢楼主分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    13266
    最后登录
    2019-1-27
    发表于 2014-11-19 17:00:32 | 显示全部楼层
    赞一个
    回复

    使用道具 举报

    该用户从未签到

    74

    主题

    266

    帖子

    0

    高级会员

    Rank: 4

    积分
    747
    最后登录
    2023-5-24
    发表于 2014-11-26 15:51:15 | 显示全部楼层
    非常感谢!
    回复

    使用道具 举报

    该用户从未签到

    63

    主题

    263

    帖子

    0

    高级会员

    Rank: 4

    积分
    921
    最后登录
    2021-2-23
    发表于 2014-11-26 16:10:01 | 显示全部楼层
    学习了,谢谢楼主分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6030
    最后登录
    2025-8-21
     楼主| 发表于 2014-12-1 09:04:28 | 显示全部楼层
    liujia21 发表于 2014-11-19 14:17
    学习了,谢谢楼主分享

    不用客气呢
    都是在解决客户遇到的问题时学到的,大家一起共同进步了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    41

    帖子

    0

    注册会员

    Rank: 2

    积分
    90
    最后登录
    2014-12-24
    发表于 2014-12-6 00:34:26 | 显示全部楼层
    正在学习,感谢分享,感谢楼主
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2014-12-11 23:22:07 | 显示全部楼层
    bsdpgsql 发表于 2014-12-11 17:59
    额,有个简单的方法可以试试,个人经验,还没有看到网上哪里有说道的。
    不管返回地址放在栈的什么什么地方 ...

    很不错的经验方法
    确实比较方便使用,非常感谢你分享。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-3 03:18 , Processed in 0.117714 second(s), 34 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表