工作中把一些功能弄到较为低端的单片机,代码是现成的。倒腾之后编译,单片机存储不够了。
使劲把用不到的代码注释掉,存储空间还是不够。最后注释掉 printf 类的函数( sprintf 、snprintf 之类的),立刻节省了很多单片机的存储空间。
|  |      1v1      144 天前  1 外挂 eeprom ,片内 boot 引导,从片外 flash 启动固件 | 
|  |      2tbxark      144 天前 大学时候写单片打印设置宏, 只有 debug 的时候开启。release 的时候去掉。 | 
|  |      3seers      144 天前 via iPhone 听说过很多 printf 在单片机造成的 bug ,不知道真的假的 | 
|  |      4huluhulu      144 天前 printf 太占用系统资源了,存储和内容都挺占的,一般用 uart 打印日志比较经济划算。 | 
|      5loveour      144 天前  5 想起来之前同事打日志查性能问题,最后发现最耗的是日志。。 | 
|      6TerryRobles      144 天前 单片机也不支持 printf 啊,是我用的太低端吗。 | 
|      7someonesnone      144 天前 via Android printf 应该只有 debug 注释开启才启用, 你的环境不区分 debug release 吧... | 
|      836963      144 天前 用汇编写吧。。。c 再怎么翻译都不如汇编节省的 | 
|  |      9ysc3839      144 天前 via Android printf 整套解析逻辑都是运行时进行的,只要用了,就得把全部代码都打包进去。 有的 printf 实现非常复杂,甚至是图灵完备的 https://news.ycombinator.com/item?id=25691598 | 
|  |      10levelworm      143 天前 这种可以自己写吧?有些最小的 C 库可以试试看。 | 
|  |      11383394544      143 天前 现在的 LLM 有能力把 C 变成可用的汇编代码吗 | 
|  |      12villivateur      143 天前 把 printf 的 %f 功能去掉再试试,打印浮点数极其消耗资源 | 
|      13KeysPAN      143 天前 我记得大部分 print 是重定义到串口的,sprintf 这些能少用就少用。如果是 wifi 芯片还好,随便造 | 
|      14junyee      143 天前 可以使用微型的 clib 库,或手搓一个 printf .  只要这个函数大概占 1KB 的空间吧. | 
|      16multigram      143 天前 查下工程 map 文件吧,看下哪些代码占 ROM | 
|      18null2error      143 天前 C Standard Library ( libc )受害者+1 ps:C 标准库是非常好的学习对象,无论是代码层面还是应用层面,值得把每个头文件都看一遍 | 
|      19iseki      143 天前 via Android 记得小时候看过很久远的教程里,就说过 printf scanf 这俩函数背后拖着的一大堆东西,可能把 ROM 干爆( | 
|      20diivL      143 天前 printf 类函数的 fmt 也占不少空间,很可能比函数本身占的还多。 | 
|      21sampeng      143 天前 我都是 output 到串口之类的通信口。。简单可依赖。。。。 | 
|  |      22muooOOO      143 天前 microLib ,就很香。当然也可以自己写个 print ,能够打印字符串就行了,最多在加一个打印变量 | 
|      24Niunai      143 天前 缩小程序二进制文件的体积,通用做法是看 map 文件,根据 map 文件裁剪很直观。 | 
|  |      25spadger      143 天前 | 
|  |      26wanei      143 天前 串口打印,按位操作,对着自己写的手册 debug | 
|      27PanuiQ      142 天前 调试过一个龙芯 2K1000 裸跑的项目的设备驱动移植,printf 没实现,自己整了 3 个函数,分别打印字符串、十进制数和十六进制数,错误打印不出来,需要自己把原来驱动的打印信息,一条拆成好几条打印 |