CortexCM3之Hardfault使用-创新互联

一、Hard Fault产生原因

成都创新互联公司是一家集网站建设,左权企业网站建设,左权品牌网站建设,网站定制,左权网站建设报价,网络营销,网络优化,左权网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

硬件方面常见原因:

  电源设计有错误,造成期间供电不稳定;

  电源质量不好,纹波、噪声过大;

  器件接地不良;

  对于带有Vcap引脚的器件,管脚处理不当;

  电路中有强干扰源,对器件造成干扰。

软件方面常见原因:

  使用了空指针;

  对地址偏移量的计算有误;

  数组越界导致程序出错;

  动态内存使用不当,导致访问了已释放的内存地址;

  通过地址访问了已失效的局部变量。

一般因为硬件造成Hardfault错误的可能性较低,大多数都是软件原因造成的。

二、用C把进入Hardfault时候的寄存器保存下来

在启动文件startup.s文件中,把HardFault_Handler函数重构一下:

HardFault_Handler\
    PROC
    EXPORT Hardfault_Handler            [WEAK]
    IMPORT hardfault_handler_c
    TST LR, #4
    ITE EQ
    MRSEQ R0, MSP
    MRSNE R0, PSP
    B hardfault_handler_c
    ENDP

上面这段是用汇编写的函数,具体分析如下:

第一行定义函数,

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章名称:CortexCM3之Hardfault使用-创新互联
当前地址:http://cdiso.cn/article/dcpgdg.html

其他资讯