ROM,RAM和FLASH 的区别以及Code=x RO-data=x RW-data=x ZI-data=对应关系与含义
ROM,RAM和FLASH 属性
ROM:ReadOnlyMemory只读存储器,只是应用时作为只读,前期先写入常量数据等
读写速度最慢,掉电不丢失,因价格便宜,作为小规模的常量数据载体
RAM:RandomAccessMemory随机存储器,
读写速度最快,掉电易丢失,因运行速率最快,作为运行内存载体
FLASH :闪存
读写速度居中,掉电不丢失,升级版ROM,作为大规模的读写数据载体
Code=x RO-data=x RW-data=x ZI-data=x 的含义
Code(代码): 程序大小,还包括了inline data(内联数据),存储在FLASH.
RO-data(只读的数据): Read-only-data,程序定义的常量,如const型,存储在FLASH中。
RW-data(有初始值要求的、可读可写的数据):
Read-write-data,已经被初始化的变量,存储在FLASH中。初始化时RW-data从flash拷贝到SRAM。
ZI-data:Zero-Init-data,未被初始化的可读写变量,存储在SRAM中。ZI-data不会被算做代码里因为不会被初始化。
个人猜想:
code是代码大小,前期写入到flash中,后期只要读取加载到ram中运行
RO-data是常量只读数据,一直写入到rom中
RW-data是已初始化读写数据,前期写入到flash中,后期读取加载到ram中
ZI-data是未初始化读写数据,根据code中的定义(即内联数据)预留ram分区中的大小来给变量数据读写,上电默认初始化为0
总结:
所以RO SIZE=CODE(程序每次运行读取加载到ram)+RO DATA
RW Size=RW-data(动态读写,已初始化)+ZI-data(动态读写,未初始化)
ROM Size=Code + RO Data + RW Data(与猜想不同,估计:前期都是用rom存储器,只是后来用flash取代了,所以rom=flash size(升级版rom)+RO-data)
疑点:虽然ROM Size=Code + RO Data + RW Data,但RW Data只用了336的大小,实际RW Data总大小为908