stm32F103c8 keil移植FreeRTOS时内存不够

本文探讨了在STM32F103C8微控制器上移植FreeRTOS时遇到的内存不足问题,通过修改heap大小配置并分享解决方法。后续提到的问题包括任务切换困难和函数调用受限,有待深入探究和优化技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

stm32F103c8 (flash 64k、ram 20k)keil移植FreeRTOS时内存不够
linking...
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching led.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching tasks.o(.bss).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching imu.o(.bss).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching ano_dt.o(.bss).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching system.o(.bss).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching si24r1.o(.bss).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching paramsave.o(.bss).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching tasks.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching mpu6050.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching control.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching heap_2.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching power.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32f10x_rcc.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching system_stm32f10x.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32f10x_it.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching filter.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching si24r1.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching remotedata.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching ano_dt.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching main.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching delay.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching port.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching rand.o(.data).
.\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdout.o(.data).
.\Objects\Template.axf: Error: L6407E: Sections of aggregate size 0x57c bytes could not fit into .ANY selector(s).
Not enough information to list image symbols.
Not enough information to list the image map.
Finished: 2 information, 0 warning and 25 error messages.
".\Objects\Template.axf" - 25 Error(s), 0 Warning(s).
Target not created.

在链接阶段出错,解决办法如下:

修改FreeRTOSConfig.h中的配置:

#define configTOTAL_HEAP_SIZE		( ( size_t ) ( 17 * 1024 ) ) 

改为:

#define configTOTAL_HEAP_SIZE		( ( size_t ) ( 10 * 1024 ) ) 

再次编译即可通过

但是之后还会遇到内存过小任务不能切换或者不能调用,或者跳不出vTaskDelay函数,有待解决

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值