在使用MCU过程中,工程师们往往会格外关注代码体积,或者数据量占用情况。在MCU开发领域,硬件资源严苛是该领域的一大特点。在严苛条件下,设计出满足目标、程序运行稳定、体积小的程序代码是一个软件工程师所追求的目标。
下文来谈谈自己在实际软件开发中是如何把握程序代码体积,数据占用大小的,分享一点小经验。
手中,正在使用到Fatfs文件系统,那么就fatfs文件系统谈谈吧!
首先在keil MDK集成开发环境中,编译一个项目工程,编译完成后。查看输出信息,如下图:
图示:无错无警告,编译通过,干到这可以提交下班了。但这不是我们要求,深入优化、分析代码将自己带入另一个境界!
看到上面Program Size大小总感觉不爽,咋成这样的。总有一个想法,这还可不可以更小。
于是探索才刚刚开始......
步骤一:进入工程文件保存路径,找到MDK编译输出文件夹,打开.map文件。鼠标一甩(或者你不用鼠标),拖到最后,找到这个:
![](/qrcode.jpg)
于是按照Program Size上的数值加一加,咦,完全一样,原来如此!
步骤二:看见这么大的数值总是不爽,那RO-data怎么可以这么大呢,往下写之前,还是需要谈谈上面每个参数啥意思(万一你不知道呢0.0)请看博客:https://www.cnblogs.com/iriczhao/p/10500842.html,于是又看看.map文件,如下图:
发现,RO Data为176320,顺眼右边看,看见cc936.o。哦哦!原来如此,这文件中可能有一个特别的地方。于是乎,打开工程,找找该文件,如下:
担心你看生气了,于是截图一小部分。原来是有这么一串,才导致RO Data变得这么大。于是,一冲动,将其注释掉,重新编译,如下:
哇!怎么变这么小,顺势降下100多K,一时间无法相信哈。有点高兴,原来如此。但是不能没有cc936啊,如果将其注释掉了话,fatfs文件系统直接一边凉快去了。
总结:
前面废话感觉太多,于是总结一下。
(1)在keil MDK集成开发环境中,.map文件极其重要。通过该文件提供的相关信息,将快速获取程序代码大小和每个文件编译后所产生的数据信息等等(没说完呀!可实际看看)
(2)通过上述过程的一波操作,相信你将对程序的优化、设计会有更加深入的理解(我不是大佬,但我愿意分享一丢丢小想法0.0,向大佬看齐!)。
写在最后:
if (文中出错) { 请您告诉我,我将改正! 不要骂我哟! } else { 哈哈!祝阅读文档愉快! }