• 一次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
    
    
  • 相关阅读:
    From使用post与使用get区别
    HTML 自动跳转代码
    mjpgstreamer译文
    DOCUMENT.GETELEMENTBYID使用
    查看Linux内核版本的命令
    CGI编程学习5 穿插HTML,CSS零星知识
    使用Javascript显示时间
    北京大学<Perl 循序渐进>
    html之marquee详解
    Apache支持ASP.NET方法浅析
  • 原文地址:https://www.cnblogs.com/schips/p/13157179.html
Copyright © 2020-2023  润新知