Code:程序代码,存储在rom中; RO-data:只读数据,存储在rom中; RW-data:可读可写数据,既存储在ram中,也存储在rom中(RW-data已初始化的数据会存储在rom中,上电会从rom搬移至ram中); ZI-data:Zero Initialize,未初始化的数据,上电后在ram中划分一个区域统一存储,MDK会给默认赋值为0。 2、Code、RO-data、RW...
(4) 使用 armlink 链接对象文件,根据程序的调用把各个.o 文件的内容链接起来,最后生成程序的 axf 映像文件,并附带程序各个域大小的说明,包括 Code、RO-data、RW-data及 ZI-data 的大小。 (5) 使用 fromelf 生成下载格式文件,它根据 axf 映像文件转化成 hex 文件,并列出编译过程出现的错误(Er...
优化RO Data: 确保常量使用合理,避免不必要的常量定义,减少RO Data区的大小。 管理RW Data: 对于频繁访问的全局变量,可以考虑使用更高效的数据结构或算法来减少访问次数。同时,避免在RW Data中存储大量数据,以减少程序启动时的复制开销。 利用ZI Data: 对于需要初始化为零的变量,尽量使用ZI Data区,因为它们不需要...
CODE、RO、RW、ZI Data 域及堆栈空间 在工程的编译提示输出信息中有一个语句“Program Size:Code=xx RO-data=xx RW-data=xx ZI data=xx”,它说明了程序各个域的大小,编译后,应用程序中所有具有同一性质的数据 (包括代 码) 被归到一个域,程序在存储或运行的时候,不同的域会呈现不同的状态,这些域的意义...
Code代表执行的代码,程序中所有的函数都位于此处。RO-data代表只读数据,程序中所定义的全局常量数据和字符串都位于此处。RW-data代表已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量位于此处。ZI-data代表未初始化的读写数据,程序中定义了但没有初始化的全局变量和静态变量位于此处。
Total RO Size (Code + RO Data) Total RW Size (RW Data + ZI Data) Total ROM Size (Code + RO Data + RW Data) 堆栈的认知 1. STM32中的堆栈。 单片机是一种集成电路芯片,集成CPU、RAM、ROM、多种I/O口和中断系统、定时器/计数器等功能。CPU中包括了各种总线电路,计算电路,逻辑电路,还有各种寄...
RW-data, ZIdata...RAM 三详细分析 初始化时RW-data从flash拷贝到RAM ⽣成的map⽂件位于list⽂件夹下 (KEIL)Total RO Size (Code + RO Data) 18568 ( 18.13kB)Total RW Size (RW Data + ZI Data) 4212 ( 4.11kB)Total ROM Size (Code + RO Data + RW Data) 18828 ( ...
ZI-data是(Zero Initialize) 没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化; 简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code + RO Data + RW Data 程序运行的时候,芯片内部RAM使用的空间为: RW Data + ZI Data ...
keil里编译之后Code,RO-Data,RW-Data,ZI-Data详解 Code是程序的代码部分占用的空间 RO-Data是程序的常量以及const型的数据 RW-Data表示已经初始化的静态变量,变量有初始值 ZI-Data表示未初始化静态变量,变量无初始值 RO Size=Code+RO-Data RW Size=RW-Data+ZI-Data...
(2)定义未初始化的数组被调用后,ZI-data=2292,增加了1000,说明被调用到的未初始化的全局变量是存在ZI-data中的。 Program Size和RAM以及flash的关系 由上面分析得出 RAM=RW-data+ZI-data flash=Code+RO-data+RW-data 我们在挑选单片机芯片的时候,RAM和flash要根据实际项目大于上面算出的容量,才能确保我们的项目...