打印
[麦麦茶水间]

MCU 的RAM与ROM优化

[复制链接]
724|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 jinyi7016 于 2023-9-8 14:19 编辑

#申请原创# @21小跑堂

关于MCU资源受限的问题,可由以下几点进行分析解决。
工具层
1、编译器的优化等级,如STM32CubeIDE与Keil中的设置


2、更换编译器,IAR、Keil、Gcc,不同的编译器,对不同的单片机的优化程度可能不一样,有的适用于8051,有的适用arm,如果资源只是差一点,可能更换个编译器试试,如果差很多,那只能另想办法了。
代码层
  • 代码中是否引入了一些公用的函数库,如ST的HAL库,或是一些lib,这些一般会占用比较大的空间。如果库中的功能并没有用的很多,可以自己用代码实现,或是换成LL库,一些封装层数比较少的库。
  • 优化数据结构,使用union,使用数据对齐等方式。
  • 代码逻辑,比如,如果你的for只是循环了几次,不妨不使用for,直接写出来。相反,如果相似逻辑比较多,那就使用for,而不是一条一条的按顺序写。当然,这种方式并不一定完全有效,要根据自己的编译器、代码逻辑进行测试,那种方式节省资源用哪种方式。
  • 全局变量、局部变量、const的使用,不同的变量定义方式,最后编译出来的结果也不尽相同。
  • 学会看map文件,通过map文件分析出是哪个程序占用的RAM或是ROM比较大,从而针对性的进行优化。

硬件层
如果上面的方式都无法解决资源不足的情况,那只能从硬件层面去解决了。

  • 增加外部的RAM与ROM,这要看单片机的外设支持情况,是否有相应的外设,ROM还好说,IIC的EEPROM一般都有,RAM虽然有串行的,也有并行的,根据你项目的具体功能需求进行选择,如果对速度要求比较高,一定要用并行的,而单片机外设不支持的话,只能是按下一条方法了
  • 更换兼容的更大资源的单片机。现在同系列的、同型号的,会有不同的后缀,支持更大的ROM与RAM。
  • 充分了解所使用单片机的Memory Map,一些功能复杂的单片机还有缓存,资源要充分利用。


方案层
由于行业不同、产品用户群不同,对成本的敏感程度也不同。
其实MCU资源不足的根本原因,还是要降低产品成本,而成本与最初产品硬件方案制定又密不可分。
  • 如果你的产品对几角、几分的成本也要扣一扣的话,那完全不必使用通用MCU,而选择邦定芯片牛屎芯片软封装芯片)。
  • 使用特殊功能+MCU的一体化MCU,如带蓝牙的MCU,或wifi的MCU,带计量的MCU,而不是把MCU与功能性芯片分开。
  • 将产品线进行分级,就像手机,有标准版,有pro版本,有pro+版,有Ultra版等等。不同的产品线对功能上进行取舍,MCU的选择上也有区分以降成本。






使用特权

评论回复
沙发
dongnanxibei| | 2023-9-8 11:46 | 只看该作者
发错板块了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

131

主题

1331

帖子

12

粉丝