举报
在 RT-Thread 的 v5.2.1-beta 分支中,bsp/stm32/libraries 目录下启动文件不全,通常有以下原因:
RT-Thread 的 BSP 目录默认不会包含所有芯片的启动文件,而是通过以下机制动态补充:
startup_stm32fxxx.s)复制到 libraries/CMSIS/Device/startup 目录。这是为了减小仓库体积。scons --dist 生成完整工程或使用 CubeMX 配置生成缺失文件。libraries 目录可能只保留 HAL 库源码和 CMSIS 核心文件,具体芯片的启动文件需按需添加。bsp/stm32/libraries/CMSIS/Device/ST/STM32xxx/Source/Templates/arm/查找启动文件:
STM32Cube_FW_xxx/Drivers/CMSIS/Device/ST/STM32xxx/Source/Templates/arm)。stm32libs 仓库下载对应文件。放置到正确路径:
bsp/stm32/libraries/
└── CMSIS
└── Device
└── ST
└── STM32F4xx # 以 F4 为例
└── Source
└── Templates
└── arm
├── startup_stm32f401xe.s
├── startup_stm32f407xx.s
└── ... # 其他芯片型号修改链接脚本:
确保 board/linker_scripts/ 中的链接脚本与启动文件定义的堆栈大小一致。
scons --menuconfig
# 在 Hardware Drivers Config 中启用 CubeMX 支持在 menuconfig 中确认:
Hardware Drivers Config -> On-chip Peripheral Drivers -> Select STM32 Chipboard/board/Kconfig 中配置了正确的启动文件路径:config SOC_STM32F407VG
bool "STM32F407VG"
select RT_USING_COMPONENTS_INIT
select RT_USING_USER_MAIN
select BSP_STARTUP_FILE_NAME = "startup_stm32f407xx"scons -c && sconsbuild/kernel/startup.o # 确认该文件存在v5.2.1-beta 分支的 libraries 目录本身是完整的,但启动文件需按需引入。这是设计行为,非代码缺失。STM32F4xx_HAL)重新初始化工程。通过以上步骤,缺失的启动文件问题即可解决。
举报
更多回帖