野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 31122|回复: 8

例程移植到STM32F103RB,如何减少UC/OS-III占用的RAM

[复制链接]
发表于 2016-5-28 21:36:52 | 显示全部楼层 |阅读模式
本帖最后由 goodidears 于 2016-5-31 17:41 编辑

我在开发板上把程序框架和基本功能实现后,选用了STM32F103RB画板子,程序移植后编译通不过,提示错误如下,急等解决方法
linking...
.\Objects\HT.axf: Error: L6406E: No space in execution regions with .ANY selector matching lib_mem.o(.bss).
.\Objects\HT.axf: Error: L6406E: No space in execution regions with .ANY selector matching app.o(.bss).
.\Objects\HT.axf: Error: L6406E: No space in execution regions with .ANY selector matching os_cfg_app.o(.bss).
.\Objects\HT.axf: Error: L6406E: No space in execution regions with .ANY selector matching os_var.o(.bss).
.\Objects\HT.axf: Error: L6406E: No space in execution regions with .ANY selector matching startup_stm32f10x_md.o(STACK).
.\Objects\HT.axf: Error: L6406E: No space in execution regions with .ANY selector matching os_var.o(.data).
.\Objects\HT.axf: Error: L6406E: No space in execution regions with .ANY selector matching cpu_core.o(.data).
.\Objects\HT.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32f10x_rcc.o(.data).
.\Objects\HT.axf: Error: L6406E: No space in execution regions with .ANY selector matching cpu_core.o(.bss).
.\Objects\HT.axf: Error: L6406E: No space in execution regions with .ANY selector matching lib_mem.o(.data).
.\Objects\HT.axf: Error: L6406E: No space in execution regions with .ANY selector matching os_prio.o(.data).
.\Objects\HT.axf: Error: L6406E: No space in execution regions with .ANY selector matching os_cpu_c.o(.data).
.\Objects\HT.axf: Error: L6407E: Sections of aggregate size 0xa888 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 13 error messages.
".\Objects\HT.axf" - 13 Error(s), 0 Warning(s).

已做的改动尝试一:
1.把DEVICE改为stm32f103RB;
2.c++中“STM32F10X_HD
”改为“STM32F10X_MD”
3.启动文件改为MD,修改PendSV Handler和SysTick Handler分别为OS_CPU_PendSVHandler、OS_CPU_SysTickHandler
但还是编译不通过

已做的改动尝试二:
1.我以为是程序太大,芯片空间不足,就把开发板的“多任务(切换三个LED)”,按照“尝试一”移植,还是编译不过








回复

使用道具 举报

发表于 2016-5-30 09:02:31 | 显示全部楼层
c++中  指定编译的头文件的路径
回复 支持 反对

使用道具 举报

发表于 2016-5-30 09:08:44 | 显示全部楼层
程序使用的空间太大,裁剪下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-30 20:49:53 | 显示全部楼层
fire 发表于 2016-5-30 09:02
c++中  指定编译的头文件的路径

您好,火哥。我使用的您starup文件夹里面的“startup_stm32f10x_md.s”,按照您“startup_stm32f10x_hd.s”里面的方法将“PendSV Handler”改为“OS_CPU_PendSVHandler”,将“SysTick Handler”改为“OS_CPU_SysTickHandler”。
图片是我按照您的方法添加了“头文件”的路径,但编译还是提醒相同的错误。
火哥把您带操作系统的“单任务(切换LED1)”,试着移植到STM32F103RB,问题会重现。我尝试着使用您不带操作系统的LED例程,不会出现上述编译错误,且可以在电路板上正常运行。

添加了头文件的路径

添加了头文件的路径
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-30 20:55:44 | 显示全部楼层
本帖最后由 goodidears 于 2016-5-30 22:04 编辑
flyleaf 发表于 2016-5-30 09:08
程序使用的空间太大,裁剪下

您好,flyleaf。我也曾经怀疑过这一点,所以我就把我编写的程序放一边。使用火哥提供的“单任务(切换LED1)”,这个例程占用的空间比较小,还是提醒相同的编译错误。
我也曾怀疑是不是ucosiii占用空间太多了,又尝试了裸机例程中的“GPIO-流水灯”,可以编译通过,且在电路板上运行正常。
难道真的是ucosiii占用空间太多了,128k的flash都不够用???然后我编译了例程“多任务(切换多个LED)”,编译如下

从编译结果看肯定不是flash不够用,而是ram不够用,远远超过stm32f103rb的20k,ucosiii操作系统中的一些配置需要改动???
我随后做了如下尝试:DEVICE选择STM3F103RE,C++中选择hd的头文件,编译通过。那么是不是可以得出结论我选择stm32f103rb的ram太小???

多任务(切换三个LED)占用空间

多任务(切换三个LED)占用空间
回复 支持 反对

使用道具 举报

发表于 2016-5-31 08:44:47 | 显示全部楼层
跟那些没有关系,看看堆和栈是不是设置得太大了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-31 11:57:11 | 显示全部楼层
flyleaf 发表于 2016-5-31 08:44
跟那些没有关系,看看堆和栈是不是设置得太大了

您好,flyleaf
问题我也算整明白了,stm32f103的ram不够用,主要是ucsoiii操作系统占用的太多。
您说和ucosiii配置无关,和堆和栈有关。按照您的提示,我看了下例程“单任务(切换LED1)”,里面只有一个任务“static  void  AppTaskStart  (void *p_arg)”,栈空间是“#define   APP_TASK_START_STK_SIZE    128”,编译这个例程,占用的ram约37k,只有一个任务,且只有128,肯定不是这个原因。您所说的堆和栈具体指哪些?帮忙指点下或链接或文档。
QQ图片20160531115249.png
回复 支持 反对

使用道具 举报

发表于 2019-8-2 11:28:35 | 显示全部楼层
根据芯片修改 lib_cfg.h的LIB_MEM_CFG_HEAP_SIZE (Configure heap memory size)的大小就搞定了
回复 支持 反对

使用道具 举报

发表于 2021-3-12 16:16:59 | 显示全部楼层
txrshmily 发表于 2019-8-2 11:28
根据芯片修改 lib_cfg.h的LIB_MEM_CFG_HEAP_SIZE (Configure heap memory size)的大小就搞定了 ...

我也遇到楼主这样的问题,请问针对20kRAM芯片,移植uCOS-III需要怎么修改这个堆的具体大小呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 07:50 , Processed in 0.072348 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表