IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 解决PLATFORMIO STM32F407VE工程卡死在启动文件的问题 -> 正文阅读

[嵌入式]解决PLATFORMIO STM32F407VE工程卡死在启动文件的问题

解决PLATFORMIO STM32F407VE工程卡死在启动文件的问题

由于工作原因,需要在linux平台做固件开发,因此在查询了一些资料后,选择了vscode+platformio的方式来搭建STM32的开发环境。但是在调试STM32F407工程的时候出现了一些问题,因此特意记录一下。

环境

Ubuntu 18.04 lts;vscode 1.58.0;platformio core5.1.1 home 3.3.4;MCU STM32F407VET6

问题现象

使用board generic-stm32f407vet6创建的工程还未跳转到main就卡死在启动文件的Infinite_Loop中,如下图。
在这里插入图片描述

分析

经过仔细调试发现程序一旦运行到__libc_init_array以后就会跳转到Infinite_Loop,而__libc_init_array查找资料后发现是用来初始化C库的,而为何最后会跳转到Infinite_Loop,实际上是因为我们的HardFault_Handler的中断函数没有定义,所以跳转到默认的中断函数上,我们可以定义一个HardFault_Handler函数,就会发现确实是触发硬件错误中断。如下图。
在这里插入图片描述
一开始我以为是启动文件存在问题,反复试了很多次后,却发现board选择STM32F407IGT6就是没问题,并且他和STM32F407VET6共用一个启动文件,没办法,于是我只能反复确认两者编译时需要的文件哪些不同,最后我定位到了STM32F407VE_DEFAULT.ld文件,在./platformio/packages/tool-ldscripts-ststm32中,可以发现这文件是copy自STM32F030C6Tx,连头部注释都没改。如图。
在这里插入图片描述
仔细检查该文件,发现在内存定义那有个严重错误。如图。
在这里插入图片描述
STM32F407VET6内存大小确实是192KB,但是他其实是有三块内存组成,其中有一块64KB的CCM地址是不连续的。以下为数据手册描述。
在这里插入图片描述
在这里插入图片描述
到这里问题就简单了,直接将RAM的LENGTH修改为128K,重新编译,运行,解决。
在这里插入图片描述

结论

STM32F407VE_DEFAULT.ld文件内存定义存在问题。

解决方法

将./platformio/packages/tool-ldscripts-ststm32/STM32F407VE_DEFAULT.ld中的内存定义改为下图方式
在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:21:57  更:2021-07-15 16:22:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:40:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码