内存优化是指 ram 或者 rom 的使用大小优化,想要优化内存,必须得了解下面这几个知识:在程序中,得知道哪些类型的代码是占用 ram,哪些代码是存储在 rom 空间上的。熟悉 ld 文件,知道程序的内存布局是怎样的,有哪些类型的内存、内存大小,不同的代码段(.text .rodata .data .bss)分别分配到哪个内存空间。会看 map 文件,了解程序中内存使用的细节。gcc 工具链中的链接器有一个功能,配置加上 -Wl,–print-memory-usage,可以在链接之后输出内存使用情况。heap 内存放在 ram 这块内存,在.data .bss段内存之后,根据代码使用情况动态调整大小。从 ld 文件和 heap_4.c 可以看到 _empty_ram 就是 heap 的起始地址,结束地址到 ram 的末尾。123456789101112131415161718192021222324252627282930313233343536373839. = ORIGIN(ram);/* globals.for example: int ram_data[3]={4,5,6}; */ /* VMA in RAM, but keep LMA in flash */_begin_data = .;.data :{*(.data .data.*)*(.sdata)*
...
继续阅读
(51)