[牛人杂谈] 新唐cortex-m051中慎用printf()函数

[复制链接]
 楼主| heisexingqisi 发表于 2016-7-31 22:44 | 显示全部楼层 |阅读模式
一个printf()函数4kB大小呢
转来的经验。
最近整合项目,遇到一个问题,我一开始没有注意,后来才慢慢发现,那就是我的程序已经烧不进去芯片中,经过翻查手册后才发现,新唐cortex-m051的Flash只有8KB,我的程序编译完之后bin文件竟然有16KB,而我的程序加上注释也只有1300多行,怎么会那么大呢?

笔者不知道是什么问题,于是就开始删减程序,把一些可以要可以不要的程序删除,(就是要了之后会更人性化的部分部分),等删除到printf 的时候,奇怪的事情出现了,我删除了4个printf,bin文件从16KB缩减到13KB,于是我把所有的printf都删除了,程序直接缩减到11KB。后来在一个程序中,非常小的程序中,一个printf函数调用,竟然多了4KB的空间。

由于一个函数而使我的程序大了那么多,我很好奇,于是便去翻查这个函数的原型,在新唐cortex-m0中到底是怎么封装的,可惜却没有找到,于是接下来弄别的程序,也没有管其它了,12月16日,新唐会来南京开巡回演讲,到时候我会问清楚他们的,等有了答案我再和大家分享

对于嵌入式编程来说,每个字节的空间都是那么的珍贵,希望各位同仁在编程的时候,慎用printf,虽然这个函数确实很方便,但是对于空间不足的来说,只能望而却步了,可以用它系统自带的UART功能中的send_to_PC()即发送一个字节通过串口到电脑。

玛尼玛尼哄 发表于 2016-7-31 23:01 | 显示全部楼层
格式化输出本来就是很费资源的,内部是个复杂的函数。
戈卫东 发表于 2016-8-1 20:17 | 显示全部楼层
051不够就换052,054,058,0516.。。。。。。
h32446975 发表于 2016-8-2 20:04 来自手机 | 显示全部楼层
自己写一个不支持浮点数的printf函数,很少代码就够了。
zhuotuzi 发表于 2016-8-3 21:50 | 显示全部楼层
在单片机的实际应用中,都不是用这些的,浪费资源效率低,都是直接发送给串口
glkk 发表于 2016-8-4 17:12 | 显示全部楼层
printf()这种东西是标准C函数库的东西,不是MCU厂家的东西,只不过厂家加了一个retarget让他支持串口,一般只做调试用。一般厂家会提供串口驱动,非常省空间。
Harvard 发表于 2016-8-5 21:45 | 显示全部楼层
是的  有点危言耸听.过期的经验了 没必要理会 都没有说明是哪个芯片,现在 最高配的M051,就是M0516也就是5-6块钱.  64k的flash写到你手软了 哈哈
 楼主| heisexingqisi 发表于 2016-8-5 22:49 | 显示全部楼层
现在都是讲究速度的,空间用不完就浪费了,所以这个只是如果紧缺考虑的。
huangcunxiake 发表于 2016-8-6 10:53 | 显示全部楼层
当年51时候是慎用的,现在arm,闪存很大,不需要这样考虑,现在考虑的就是怎么快速的完成开发。
zhuotuzi 发表于 2016-8-6 13:51 | 显示全部楼层
从来不用printf,这个调试的时候采用。
 楼主| heisexingqisi 发表于 2016-8-7 23:13 | 显示全部楼层
对于嵌入式编程来说,每个字节的空间都是那么的珍贵,所以要尽量用完,不然浪费了。
quray1985 发表于 2016-8-8 16:37 | 显示全部楼层
printf这个函数包含的程序占内存挺大的
 楼主| heisexingqisi 发表于 2016-8-20 20:49 | 显示全部楼层
051内存小,最好别浪费到调试上。
598330983 发表于 2016-8-21 00:10 | 显示全部楼层
实际上在成品上几乎都用不到Printf,都是调试阶段才用的
zhuomuniao110 发表于 2016-8-22 20:29 | 显示全部楼层
用它系统自带的UART功能中的send_to_PC()即发送一个字节通过串口到电脑
Thethree 发表于 2016-8-23 09:18 | 显示全部楼层
是不是因为太浪费资源了啊
 楼主| heisexingqisi 发表于 2016-8-25 22:43 | 显示全部楼层
Thethree 发表于 2016-8-23 09:18
是不是因为太浪费资源了啊

实现的过程太复杂,所以会消耗很多CPU资源,还会浪费很多存储空间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

157

主题

2767

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

157

主题

2767

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部