推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

固件RAM不够大数组优化.docx

更新时间:2026-10-13 20:31:39 大小:37K 上传用户:他山之石可攻玉查看TA发布的资源 标签:固件RAM优化大数组constFlash 下载积分:2分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

固件里用了个大数组,RAM不够编译都过不了

一、现象

固件里加了个大数组(比如查表、缓冲、波形),编译时报RAM不够(或链接时超出RAM)。很多人懵了,不知道怎么办。其实RAM不够,很多时候是"大数组放错地方"或"没优化内存"。

二、RAM不够的常见原因

1. 大数组没加const:大数组(查表、缓冲)如果没加const,放RAM(前面聊过常量放Flash省RAM)

2. 全局大数组:大数组声明成全局(一直占RAM),其实可以在需要时才用(或局部)

3. 多个大缓冲重复:多个模块各开大缓冲,重复占用(前面聊过共享缓冲区)

4. 栈太大:局部大数组占栈,栈区要够大(前面聊过)

5. 没考虑对齐/结构体填充:结构体/数组对齐填充浪费(前面聊过)

三、怎么解决RAM不够

1. 大数组加const放Flash:只读的大数组(查表、波形、固定字符串)加const,放Flash省RAM(前面聊过)

2. 减小数组:按"实际需要"开容量,别开太大(前面聊过)

3. 共享缓冲:多个模块的缓冲共用(如果不同时用)(前面聊过)

4. 局部化:能用局部的别全局(栈上、用完释放)(前面聊过)

5. 优化结构体:减少对齐填充(成员按大小排,前面聊过)

6. 看MAP文件:用MAP文件看哪个占了大量RAM,针对性优化(前面聊过)

四、RAM不够的排查顺序

1. 看编译/MAP文件:哪个变量/数组占了大量RAM

2. 找大块:有没有没加const的大数组、全局大数组、多个重复缓冲

3. 优化:加const放Flash、减小容量、共享、局部化、优化结构体


部分文件列表

文件名 大小
固件RAM不够大数组优化.docx 37K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载