完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
打算学习一下Free-RTOS,手里有一块STM32F103C8T6的板子,就想着先拿来练手,移植上去先学起来,并且打算在CSDN上记录一下一路遇到的坑,萌新第一次写博客,如果有什么意见或者有不对的地方欢迎大家留言。
我是先去图书馆借了本“FreeRTOS源码详解与应用开发”跟着教程一步一步移植好后,编译发现一大堆错误 ..OutputESP32Server_FreeRTOS.axf: Error: L6406E: No space in execution regions with .ANY selector matching heap_4.o(.bss). ..OutputESP32Server_FreeRTOS.axf: Error: L6406E: No space in execution regions with .ANY selector matching tasks.o(.bss). ..OutputESP32Server_FreeRTOS.axf: Error: L6406E: No space in execution regions with .ANY selector matching bsp_usart.o(.bss). ..OutputESP32Server_FreeRTOS.axf: Error: L6406E: No space in execution regions with .ANY selector matching tasks.o(.data). ....还有好多 ..OutputESP32Server_FreeRTOS.axf: Error: L6407E: Sections of aggregate size 0x1087c bytes could not fit into .ANY selector(s). 上网一查是因为芯片的空间不足,网上的解决方法写有很多 1.勾选Use MicroLIB 在option -> 选择Target -> 勾选Use MicroLIB 实际操作一下发现确实有用,但是好像收效甚微,勾选后重新编译,内存确实占用的少了一点,但是还是通过不了编译呀 这个时候我又跟着进行了第二步操作 ..OutputESP32Server_FreeRTOS.axf: Error: L6406E: No space in execution regions with .ANY selector matching heap_4.o(.bss). ..OutputESP32Server_FreeRTOS.axf: Error: L6406E: No space in execution regions with .ANY selector matching tasks.o(.bss). ..OutputESP32Server_FreeRTOS.axf: Error: L6406E: No space in execution regions with .ANY selector matching bsp_usart.o(.bss). ..OutputESP32Server_FreeRTOS.axf: Error: L6406E: No space in execution regions with .ANY selector matching tasks.o(.data). .... ..OutputESP32Server_FreeRTOS.axf: Error: L6407E: Sections of aggregate size 0x1061c bytes could not fit into .ANY selector(s). 2.更改Optimization 为 Level 3(-O3) 在option-> 选择C/C++ -> 更改Optimization 为 Level 3(-O3) 网上给出的解释是这是一个优化等级,不同优化等级,占用代码量和运行速度是不一样的 (-O3)运行最快,代码量最少,但是最容易出问题 但是实际操作后发现好像没有用处。 3.更改configTOTAL_HEAP_SIZE的大小 在FreeRTOSConfig.h文件夹下 更改configTOTAL_HEAP_SIZE的大小 这个也是目前最暴力,最有效的方式,因为跟着书移植这些也都没有改动,但是书里面是基于F4移植的,这里给操作系统开辟的内存很大,而C8T6的资源很少所以造成了出现内存不足的情况,我在这里将configTOTAL_HEAP_SIZE配置为10k #define configTOTAL_HEAP_SIZE ((size_t)(10 * 1024)) /* 系统总堆栈大小 */ 通过编译,问题解决。 |
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1178浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 09:01 , Processed in 1.083791 second(s), Total 50, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号