TM32CubeMX生成keil工程 L6236E: No section matches selector 报错解决方法

本文详细解析了使用STM32CubeMX V4.27生成Keil V5工程时遇到的编译错误:L6236E。此错误与.sct文件相关,通常由未添加或选择错误的startup_*.s文件引起。通过在项目Drivers/CMSIS目录下添加正确的启动文件,如MDK-ARMstartup_stm32f103xe.s,可以有效解决该问题。

STM32CubeMX V4.27生成keil V5工程,编译后报以下错误
error: L6236E: No section matches selector - no section to be FIRST/LAST.
在这里插入图片描述
双击定位至以下位置在这里插入图片描述
错误出现在“xxxx.sct”文件,sct文件,全名scatter file,中文名分散加载文件,是ARM程序链接时的输入参数。默认设置下,Keil会自动生成.sct文件。出错的的“NH3N STM32.sct”文件就是keil自动生成的。
**

原因可能是:

1.没有添加startup_*.s 文件

2.startup_*.S文件选择错误

错误解决方案:

在项目Drivers/CMSIS目录中添加:\MDK-ARM\startup_stm32f103xe.s。startup文件名根据需要选择对应的文件。在这里插入图片描述
重新编译便不再报错。
OK 问题解决!!!

### CUBEMX生成文件时KEIL出现L6236E错误的原因分析 在使用STM32CubeMX工具生成项目并编译的过程中,如果遇到Keil链接器报错 `L6236E: No section matches selector` 的情况,这通常表明链接脚本中的某些配置不匹配实际的目标代码结构。以下是可能原因及其解决方案: #### 错误解释 该错误表示链接器无法找到与指定的选择符相匹配的部分(section)。这种问题通常是由于链接脚本中的定义与目标程序的实际部分名称或属性不符引起的[^1]。 #### 解决方案 为了有效解决问题,可以尝试以下几个方面的方法: 1. **检查SCATTER文件** 链接脚本(scatter file)用于描述如何分配内存区域以及各部分的加载地址。确认 `.sct` 文件中是否有未使用的或者错误命名的选择符。例如: ```plaintext LR_IROM1 0x08000000 0x00100000 { ; load region size_region ER_IROM1 0x08000000 0x00100000 { ; exec region size_region *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 0x00040000 { ; RW data .ANY (+RW +ZI) } } ``` 如果存在多余的选择符(如多余的 `+FIRST` 或者其他自定义标签),可能会引发此错误。删除这些不必要的选择符即可解决一部分问题[^2]。 2. **调整启动代码** 启动代码(startup.s 或 startup.c)有时会引入额外的节名(sections),而这些节名并未被正确映射到 scatter 文件中。确保所有的初始化函数都已正确定义,并且其对应的节名已被包含在散列文件中。例如,在 STM32 中常见的 `Reset_Handler` 和中断向量表应位于特定位置。 3. **更新工具链版本** 使用较旧版 Keil 工具可能导致兼容性问题。建议升级至最新版本 MDK-ARM Professional Edition 并重新导入工程设置。新版本修复了许多历史遗留问题,能够更好地支持现代微控制器架构。 4. **清理重建工程项目** 删除中间产物后再执行全量构建操作也可能缓解一些隐匿的小毛病。具体做法是在 IDE 菜单栏选择 Project -> Clean Target... ,然后再 Build All 来验证修正效果。 ```c // 示例:简单的重置处理逻辑片段 void Reset_Handler(void){ SystemInit(); // 初始化系统时钟等基础环境变量 } ``` 以上方法涵盖了大部分场景下的排查思路,但仍需结合具体情况灵活运用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值