发布者认证信息(营业执照和身份证)未完善,请登录后完善信息登录
总算知晓嵌入式开发节约内存的技巧

爱品网

爱品网 IPNO.CN

b2b免费推广平台

扫扫有惊喜

 
提醒:因为软件开发行业无明确禁止法规, 该企业仅提供软件开发外包定制服务,项目需取得国家许可,严禁非法用途
 
 
当前位置: 首页 » 资讯 » 教育培训 » 正文

总算知晓嵌入式开发节约内存的技巧

放大字体  缩小字体 发布日期:2021-11-25 16:30:01  浏览次数:63
核心提示:

  今天小编跟大家分享关于“嵌入式开发节约内存的技巧”的内容,希望对大家有所帮助。
  1.写在前面
  嵌入式开发,不同于PC、移动设备(手机、平板)以“

信息发布者: 勤学思教育网VIP 联系方式: 13988888888

  今天小编跟大家分享关于“嵌入式开发节约内存的技巧”的内容,希望对大家有所帮助。
  1.写在前面
  嵌入式开发,不同于PC、移动设备(手机、平板)以“GB”为单位的存储空间(ROM)和内存(RAM)。尤其是MCU、SOC,RAM是KB级别的容量,ROM则稍微较大;当然也有较大容量的MCU选择,成本也跟着上去。MCU类的产品出货量大,成本控制比较苛刻,所以在选择MCU时,老板当然希望占用资源越小越好,进而控成本。因此,我们在程序编码时,就需要考虑资源问题,甚至要使用上一些“手段”来控制,平衡资源和效率,尽可能降低固件占用资源同时保证效率。
  2.一些技巧
  程序界有句比较熟悉的话:“时间换空间、空间换时间”,字面意思就是资源空间和程序执行时间的权衡。比如,数据放在ROM中和RAM中时,两者的读取速度就不一样。本文目的是“节约内存”为出发点,所以对于一些处理技巧上,效率肯定会打折扣,这就是一个“权衡”问题,需根据具体实际应用场合来选择。
  [1] ROM代替RAM
  前面提到,MCU的ROM往往远大于RAM,而且ROM和RAM的成本6:1,常量数据可以存在在ROM中。常规操作就是加“const”修饰。
  [2] 用位域
  对于一些变量并未使用完整个数据类型范围,可以使用位域,未使用到的位留给其他使用。如1字节变量就可以实现8个bool型操作。位域常用在结构体中。
  [3] 传递指针(地址)
  对于MCU裸机编程或者带RTOS(实时系统)编程,虽然没有明确的驱动、应用分层界限,但为了提高程序可移植性和可读性,也会做一些分层处理。底层驱动提供的接口应该是以指针(地址)方式作为形参,而且中间尽量避免一些内存拷贝。即,内存空间应是由应用层申请的。
  [4] 逐个处理
  对于处理,可以将某段内存数据首地址直接传递到调用函数,由函数内部实现内存偏移处理。换一个方式处理,也可以单个数据传入,牺牲效率以换取内存。常见的情况有:
  1)串口编码发送。比如用户端发送“abcdef”,实际需编码成“12abcdef34”发送。如果单个字符发送则可以节约中间编码时临时内存拷贝的开销,但效率明显降低。
  2)串口接收。接收组串口字符数据并解析,单字节读读取缓存数据并解析,解析完则处理;比获取一定长度的数据再解析要节约一段内存。
  [5] 共享内存
  多个任何函数使用一段内存,可以进行“分时复用”。
  [6] 内存池
  对于嵌入式开发,特别是MCU类编程,一般不建议使用malloc/new等动态内存分配,因为多次申请释放过程会产生内存碎片,而MCU类内存并不大,容易导致内存申请不失败导致程序异常甚至崩溃。如果内存实在吃紧,可以使用“内存池”。
  内存池,在操作系统中很常见,我们也可以自己实现一套简易的内存池算法。内存池基本原理就是以链表的结构实现一定数量、相同大小的内存块,使用时从该内存池中申请指定大小的内存块,使用完释放,效率提升并降低碎片化。内存池只是降低碎片化,非完全杜绝,一般情况下,MCU类编程少用动态内存,严格场合不用。
  [7] 编译器优化
  这个是编译器选项的设置,对于自身代码有足够的信心,可以尽可能使用编译器的高优化选项。

免责声明:[ 总算知晓嵌入式开发节约内存的技巧]信息是由该公司[勤学思教育网]自行发布,该企业负责信息内容的真实性、准确性和合法性。[爱品网]仅列示上述信息,上述信息描述仅代表信息发布日的情况,不担保该信息的准确性,完整性和及时性,也不承担浏览者的任何商业风险。
本产品网址 : https://www.ipno.cn/news/i203843.html 可发送到QQ/微信/微博/博客等平台来推广此信息
 

 

网站首页 | 付款方式 | 关于我们 | 信息删除 | 联系方式 | 服务条款 | 版权隐私 | 网站地图 | 专题 | 排名推广 | 广告服务 | 积分换礼 | 网站留言 | RSS订阅 | 鄂ICP备14015623号-2

爱品网是一个开放的平台,信息全部为用户自行注册发布!并不代表本网赞同其观点或证实其内容的真实性,需用户自行承担信息的真实性,图片及其他资源的版权责任! 本站不承担此类作品侵权行为的直接责任及连带责任。

如若本网有任何内容侵犯您的权益,请联系: 473199705@QQ.COM

©2012-2021爱品网 免费信息发布平台,免费推广平台,免费B2B网站爱品网 www.ipno.cn
免责声明:本站所有信息由各公司自行发布,请在交易前确认真实合法性,本站不承担任何交易及知识产权侵权的法律责任! 鄂公网安备 42018502005275