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

一次STM32进入HardFault_Handler 的解决情况的更多相关文章

  1. STM32进入HardFault_Handler处理办法

    STM32进入HardFault_Handler处理办法 HardFault_Handler出现的情况一般有两种: 一种是:数组越界 一种是:堆栈溢出,程序指针指飞 方法一 在中断HardFault_ ...

  2. stm32进入HardFault_Handler的定位方法

    写程序偶尔会遇到程序死机的现象.这个时候,就需要debug来定位. 通常情况下,程序会进入HardFault_Handler的死循环(针对stm32系列),我遇到过两次. 第一次是使用数组之前,数组的 ...

  3. 调试器不能连接到STM32的问题与解决办法

    很多人都碰到过调试器不能连接到STM32的问题,不管是IAR的J-Link还是Keil的ULink,或者是ST的ST-Link.出现这个问题时,调试软件会提示不能建立与Cortex-M3的连接,或提示 ...

  4. sql还原数据库时候,遇到数据库被占用的解决情况

    最近上班时候,经常要做数据库还原,时常遇到数据被占用的情况, 执行一句sql语句就可以解决, ALTER DATABASE dbname SET OFFLINE WITH ROLLBACK IMMED ...

  5. Android Api 27 在 Android 8.0 上出现 Only fullscreen opaque activities can request orientation 的解决情况

    刚上班,没有业务开发,对 App 的 Api 由 26 升级到了 27, 结果在 Android 8.0 的设备上会出现 crash . Log 如下: java java.lang.IllegalS ...

  6. Django项目执行时No Module Named ' ' 问题的解决情况

    出现这种问题的情况大致都是因为该模块未安装,使用 pip install xxx 进行安装,即可解决此类问题. 出现ModuleNotFoundError: No module named 'rest ...

  7. stm32 串口乱码的解决

    版权声明:本文为博主原创文章. 前几天在中移物联网申请了一个迷你开发板,运行官方提供的程序,感觉板子是正常的.但是自己写的程序能够刷到板子上,但是串口却是乱码.官方和我的额程序都是用的库函数的方式写的 ...

  8. STM32 ~ MDK环境下调试程序 HardFault_Handler 相关

    STM32出现HardFault_Handler故障的原因主要有两个方面: 1.内存溢出或者访问越界.这个需要自己写程序的时候规范代码,遇到了需要慢慢排查. 2.堆栈溢出.增加堆栈的大小. 出现问题时 ...

  9. stm32 HardFault_Handler调试及问题查找方法

    STM32出现HardFault_Handler故障的原因主要有两个方面: 1.内存溢出或者访问越界.这个需要自己写程序的时候规范代码,遇到了需要慢慢排查. 2.堆栈溢出.增加堆栈的大小. 出现问题时 ...

  10. STM32 硬件I2C 到底是不是个坑?

    /** ****************************************************************************** * @author    Maox ...

随机推荐

  1. SqlServer2008R2 在开始菜单中找不到配置管理器

    直接找到C:\Windows\SysWOW64\SQLServerManager10.msc,打开即可.

  2. 简说python之初连ORACLE数据库

    目录 Python操作Oracle数据库 1.安装cx_Oracle模块 2.安装oracle客户端 3.python操作oracle示例 4.配置TNS 5.通过tns连接数据库的python 通过 ...

  3. gin-vue-admin开发教程 01安装与启用

    目录 目标 视频教程地址: 环境要求 前端环境安装文档: 安装node npm cnpm yarn(选装) 后端环境安装文档: Golang1.14.2 环境的安装 goland的配置 gin-vue ...

  4. C++ 资源大全:标准库、Web框架、人工智能等 | 最全整理

    C++ 资源列表,内容包括: 标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等 目录 进程间通信 Json 日志 机器学习 数学 内存分配 多媒体 网络 PDF 物理学 ...

  5. Django项目windows上开发,虚拟机上调通打包,生产环境解压即用

    linux上部署Django项目 首先创建一个简易的Django项目 使用自动生成的这个数据库 压缩上传 解压运行,不可以 [root@mcw1 /opt/mcwtest]$ ls app01 db. ...

  6. Nginx 调试模块 echo-nginx-module

    引言 Nginx 作为一个高性能的 HTTP 和反向代理 Web 服务器.如今很多项目都会选择 Nginx 作为反向代理服务器,但是避免不了在使用的过程中,会遇到各种各样的问题.因此 echo-ngi ...

  7. go goroutine pool设计

    推荐一遍由浅入深简绍goroutine pool设计的方案.https://strikefreedom.top/high-performance-implementation-of-goroutine ...

  8. css 透明气泡效果

    css body { background:#333333; } .login-card { text-align:center; width:430px; height:430px; margin: ...

  9. python-判断两个序列的成员是否一样

    目的:判断两个序列的成员是否一样,如:list1 = [1, 2],list2 = [2, 1],则两个序列的成员是一样的. 实现:借助集合set()的性质实现. 代码如下: 1 if __name_ ...

  10. Atlas快速入门

    先说一些废话 之前的公司在数据中台的项目上调研决定启用了Atlas作为我们数据血缘管理的工具,让我给大家写了一份Atlas快速入门的文档,所以在这里我将这篇文档以一个纯新手视角的方式再一次优化,希望能 ...