详情请进入 湖南阳光电子学校 已关注:人 咨询电话:0731-85579057 微信号:yp941688, yp94168
分享的文章如下:
TencentOS tiny危险气体探测仪产品级开发重磅高质量更新
前两天还发了一篇LCD显示曲线的文章,我也把曲线显示这个功能加到这个开源项目进来了,看如下效果:
让传感器数据更直观之LCD曲线显示
但是有个问题,这个项目编译完的信息如下:
这里我们又要来唠一唠之前讲过的基础知识,加强大家的印象:Code:表示程序代码部分
RO-Data:表示程序定义的所有常量以及const型数据
RW-Data:表示已经初始化的所有静态变量,变量有初值
ZI-Data:表示未初始化的所有静态变量,变量无初值
关于MCU ROM和RAM的计算规则如下:ROM(FLASH) Size = Code + RO-Data + RW-Data
RAM Size = RW-Data + ZI-Data
我们再来看看这款MCU手册的描述:
由此可见,如果我们再往下继续添加代码的话,很快资源就不够了,但是我还是想继续往下添加更多功能呀,怎么办??如何优化?
2、问题解决 要解决这个问题,就很有必要来瞧瞧xxx.map文件了,我们找到这个MDK-ARM编译目录下的main.map文件:打开这个文件,然后滑到 底下可以看到如下信息:
通过这个信息,我们可以详细了解我们MCU的资源使用情况,也能基于这个资源使用情况继续评估项目往下做的可行性;然后我们继续从底下往上滑,可以看到这个文件代码占用资源的详细情况:
根据刚刚的编译信息,很显然,RO-Data的占用比较多,那我们就来分析一下这个部分是哪些文件占得比较多,我们就针对这个来进行优化,裁剪一些不必要的功能, 直接有效的方法,我们看到Image component sizes如下:
cc936.c这个文件含了对中文支持的一些处理和转换函数,该文件位于fatfs组件的option目录下,我们打开来看一下:
原来 大的罪魁祸首就是它!
接下来我们把这个数组屏蔽掉,然后将用到它的地方做注释并修改以下转换函数ff_convert如下: WCHARff_convert(/*Convertedcode,0meansconversionerror*/