zoukankan      html  css  js  c++  java
  • keil遇到hardfault时原因的查找

    当硬件仿真遇到hardfault会进入响应的中断软件陷阱中void HardFault_Handler(void),此时通过view-registers中的

    1 如果STACK=MSP,则查看SP的堆栈值,在memrory窗口输入sp的值回车,在地址内容之后的第21字节开始的4个字节为LR的值,在堆栈调用窗口右击选择show callee code,在反汇编窗口右击选择show code at address,输入LR的值然后回车,就是发生hardfault前的调用大致位置,仔细查找即可,

    一般都是因为数组越界,访问了超过范围或者未定义的地址,或者利用字符串库函数或者内存操作库函数时出现的情况。

     或者用

    CmBacktrace +addr2line定位hardfault:

    其中addr2line可全盘搜索,然后将其放到C盘WINDOWS下,在ENV中添加软件包,在keil-mdk中设置axf输出(注意output下的bin和user下axf名字要一致),然后在出现hard fault后,在win 的命令行中切换到项目axf文件所在的文件夹,然后按照cmbacktrace中的提示在命令行中运行addr2line -e........

     最终:

  • 相关阅读:
    @atcoder
    @atcoder
    @一句话题解
    @gym
    JS-try/catch方法判断字符串是否为json格式
    JS-find、filter、forEach、map
    JS-条件语句5准则
    JS-防抖与节流
    CSS-强制换行
    Elasticsearch-基础介绍及索引原理分析(转载)
  • 原文地址:https://www.cnblogs.com/jieruishu/p/11126348.html
Copyright © 2011-2022 走看看