搜索
bottom↓
回复: 13

RTT1.0 BSP下STM32F107例程编译下来怎么这么大?

[复制链接]

出0入0汤圆

发表于 2012-3-5 15:16:45 | 显示全部楼层 |阅读模式
Program Size: Code=123334 RO-data=5262 RW-data=688 ZI-data=20968  
//#define RT_DEBUG
//#define RT_THREAD_DEBUG
//#define RT_USING_DFS
//#define RT_USING_LWIP
以后还是很大
Program Size: Code=98914 RO-data=3170 RW-data=668 ZI-data=20892  

手册上
“RT-Thread Kernel内核部分包括了RT-Thread的核心代码,包括对象管理器,线程管理及调度,线
程间通信等的微小内核实现(最小能够到达4k ROM,1k RAM体积占用)。”

第一次玩rtos,望高手解惑,谢谢

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-3-5 17:39:45 | 显示全部楼层
GUI你用没用?另外,代码量和你实现的功能以及线程栈的大小都有关系。

出0入0汤圆

发表于 2012-3-5 19:58:17 | 显示全部楼层
这个是需要自己仔细定制的。

出0入0汤圆

 楼主| 发表于 2012-3-6 08:32:11 | 显示全部楼层
回复【1楼】tiancaigao7 天才杨威利
-----------------------------------------------------------------------

是啊,加上GUI那该有多大?我只是简单编译一下例程,看看系统占用。

出0入0汤圆

 楼主| 发表于 2012-3-6 08:33:45 | 显示全部楼层
回复【2楼】ffxz
-----------------------------------------------------------------------

建议为1.0出本书,这样我们这些初学者可以更好的入手

出0入0汤圆

发表于 2012-3-6 12:49:53 | 显示全部楼层
用scons编译,很多不必要的文件不会被编译进去

回复【楼主位】weif189  
program size: code=123334 ro-data=5262 rw-data=688 zi-data=20968  
//#define rt_debug
//#define rt_thread_debug
//#define rt_using_dfs
//#define rt_using_lwip
以后还是很大
program size: code=98914 ro-data=3170 rw-data=668 zi-data=20892  
手册上
“rt-thread kernel内核部分包括了rt-thread的核心代码,包括对象管理器,线程管理及调度,线
程间通信等的微小内核实现(最小能够到达4k rom,1k ram体积占用)。”
第一次玩rtos,望高手解惑,谢谢
-----------------------------------------------------------------------

出0入0汤圆

发表于 2012-3-6 12:52:33 | 显示全部楼层
回复【4楼】weif189  
回复【2楼】ffxz
-----------------------------------------------------------------------
建议为1.0出本书,这样我们这些初学者可以更好的入手
-----------------------------------------------------------------------
可以先参考《RT-Thread实时操作系统编程指南》,虽然是基于0.3.0版本,但基础知识都一样的
http://www.rt-thread.org/download/RT-Thread.pdf

出0入0汤圆

 楼主| 发表于 2012-3-8 10:07:30 | 显示全部楼层
之所以编译出来这么大好像和keil有关, keil好像会把没有使用的函数都链接进去,可以设置成不使用的函数不连接吗?

出0入0汤圆

发表于 2012-3-8 11:07:47 | 显示全部楼层
回复【7楼】weif189  
之所以编译出来这么大好像和keil有关, keil好像会把没有使用的函数都链接进去,可以设置成不使用的函数不连接吗?
-----------------------------------------------------------------------

请使用 scons --target=mdk4 -s 重新生成 keil 工程
这样不必要的源文件就不会被添加进 keil 工程了

出0入0汤圆

 楼主| 发表于 2012-3-8 11:29:46 | 显示全部楼层
回复【8楼】lgnq  
-----------------------------------------------------------------------

谢谢!学习 scons!

我用IAR6.3编译试了一下

没优化
90 480 bytes of readonly  code memory
10 248 bytes of readonly  data memory
20 269 bytes of readwrite data memory
最低优化
85 400 bytes of readonly  code memory
10 248 bytes of readonly  data memory
20 269 bytes of readwrite data memory
最低优化并且
//#define RT_DEBUG
//#define RT_THREAD_DEBUG
//#define RT_USING_DFS
//#define RT_USING_LWIP

53 216 bytes of readonly  code memory
6 164 bytes of readonly  data memory
7 545 bytes of readwrite data memory

keil和IAR的差距也太大了点吧

出0入0汤圆

 楼主| 发表于 2012-3-8 12:11:50 | 显示全部楼层
回复【8楼】lgnq  
-----------------------------------------------------------------------

刚了解了一下scons,具体的命令不太懂,貌似自动化编译工具和make类似的东西吧,怎么能减少编译出来的代码量呢?是连接的时候加参数吗?能用到keil里面去吗?

出0入0汤圆

发表于 2012-3-8 12:34:16 | 显示全部楼层
想减少体积当然是裁剪功能。
FINSH 功能要好几十K。
不过使用了库,光一个空工程就有几K了吧。
再说107的再怎么也有几百K,又没到用光的时候,裁那么小做什么。

Program Size: Code=14362 RO-data=2246 RW-data=304 ZI-data=2632  
点击此处下载 ourdev_724833JIQ8EL.zip(文件大小:5K) (原文件名:stm32f107_project.zip)

出0入0汤圆

 楼主| 发表于 2012-3-8 12:50:09 | 显示全部楼层
回复【11楼】aozima  
-----------------------------------------------------------------------

其实不是裁剪的问题,而是编译器把文件里可以编译的函数都编译连接,不管有没有用到,会有很多死函数,这样太浪费代码空间,有空间可以做更多的事情。
刚试了一下
keil里面options->target->code generation把Use Cross-Module optimization勾上应该可以把死函数去掉

利用 Cross-Module优化为全局代码优化创建一个链接反馈文件,不知道为什么会有这个效果,反正生成的代码小很多,和IAR差不多!

出0入0汤圆

发表于 2012-3-8 13:03:36 | 显示全部楼层
基本看到所有的链接器都会把不用的代码去掉,
即使是C51的链接器,也不过是给个提示,也没有实际链接到目标文件中去。
除非强制保留。

11楼同样的工程用IAR 5.41编译的
Debug
  14 544 bytes of readonly  code memory
   3 796 bytes of readonly  data memory
   4 372 bytes of readwrite data memory

Release
  12 102 bytes of readonly  code memory
   4 878 bytes of readonly  data memory
   4 369 bytes of readwrite data memory

“利用 Cross-Module优化为全局代码优化创建一个链接反馈文件,不知道为什么会有这个效果,反正生成的代码小很多,和IAR差不多!"
用11楼的工程勾起来与没勾一样的。没有变化。

估计CM3上已是最优了,所以没变化。不同的平台勾上会有些效果。(未考证,不保证!)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-29 15:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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