zoukankan      html  css  js  c++  java
  • 一次STM32进入HardFault_Handler 的解决情况

    STM32进入HardFault_Handler调试

    --- title: STM32进入HardFault_Handler调试 date: 2020-06-18 10:26:48 categories: tags: - stm32 - debug - FreeRTOS ---

    背景

    工程要移植RTOS,以做业务改进。

    移植了FreeRTOS,发现没有执行程序;在线仿真的时候,发现PC走到SystemInit,第一条语句还没执行完就进入了HardFault_Handler

    分析

    1、检查了startup_stm32xxx.s,有对SVC_Handler等入口进行处理。而且程序是还没走到vTaskStartScheduler就出问题的。

    仔细查阅了网上的资料,STM32出现HardFault_Handler故障的原因主要有两个方面:

    • 内存溢出或者访问越界。
    • 堆栈溢出,增加堆栈的大小。

    2、用keil的仿真,根据PC与MSP、PSP的值找对应的错误现场。但由于是一执行C语句就异常的,所以这个方法没用。

    3、回顾自己的操作记录。

    想起自己在移植的时候,因为出现了Error: L6406E: No space in execution regions with .ANY selector matching xx.o(.bss).,于是改大了IARM1的size为0xF0000。超出了可访问的范围。改回原来的0xFF00以后程序又编译不过。

    想起FreeRTOSConfig.h中有对于栈大小的配置,于是将configTOTAL_HEAP_SIZE改小为( ( size_t ) ( 5 * 1024 ) )

    问题解决,顺利跑起来。

    start_task
    start_task
    start_task
    
    
  • 相关阅读:
    嘿,新年快乐
    最近无状态~
    奥巴马:我们为什么要上学
    大学学不会逃课是不会有出息的!
    赫赫,给红十字捐款的sb了吧
    狄仁杰你敢不装逼吗
    腾讯qq开始耍威胁用户的无赖手段了
    <转>关于信仰
    恩,老了~~~
    Vue 2.0学习笔记: Vue中的computed属性
  • 原文地址:https://www.cnblogs.com/schips/p/13157179.html
Copyright © 2011-2022 走看看