历史上的今天
今天是:2025年04月01日(星期二)
2019年04月01日 | STM32 编译结果 map 之 code、RO-data、RW-data、ZI-data 字段解析
2019-04-01 来源:eefocus
1、Code
即代码域,它指的是编译器生成的机器指令,这些内容被存储到ROM区。
2、RO-data
Read Only data,即只读数据域,它指程序中用到的只读数据,这些数据被存储在ROM区,因而程序不能修改其内容。
例如:
C语言中const关键字定义的变量就是典型的RO-data。
3、RW-data
Read Write data,即可读写数据域,它指初始化为“非0值”的可读写数据,程序刚运行时,这些数据具有非0的初始值,且运行的时候它们会常驻在RAM区,因而应用程序可以修改其内容。
例如:
C语言中使用定义的全局变量,且定义时赋予“非0值”给该变量进行初始化。
4、ZI-data
Zero Initialie data,即0初始化数据,它指初始化为“0值”的可读写数据域,它与RW-data的区别是程序刚运行时这些数据初始值全都为0,而后续运行过程与RW-data的性质一样,它们也常驻在RAM区,因而应用程序可以更改其内容。
例如:
C语言中使用定义的全局变量,且定义时赋予“0值”给该变量进行初始化.。
若定义该变量时没有赋予初始值,编译器会把它当ZI-data来对待,初始化为0。
ZI-data的栈空间(Stack)及堆空间(Heap):
在C语言中,函数内部定义的局部变量属于栈空间,进入函数的时候从向栈空间申请内存给局部变量,退出时释放局部变量,归还内存空间。
而使用malloc动态分配的变量属于堆空间。在程序中的栈空间和堆空间都是属于ZI-data区域的,这些空间都会被初始值化为0值。
编译器给出的ZI-data占用的空间值中包含了堆栈的大小(经实际测试,若程序中完全没有使用malloc动态申请堆空间,编译器会优化,不把堆空间计算在内)。
史海拾趣
|
一、生产工艺 1.工艺: a)清洗:采用超声波清洗pcb或led支架,并烘干。 b)装架:在LED管芯(大圆片)底部电极备上银胶后进行扩张,将扩张后的管芯(大圆片)安置在刺晶台上,在显微镜下用刺晶笔将管芯一个一个安装在PCB或LED支架 ...… 查看全部问答> |
|
基于降压的结构可以与很多环路控制结构很好的匹配,而且不用考虑稳定性的限制,滞回控制适合在开关频率变化比较快和输入范围比较小的情况下应用。这种特性刚好满足LED对电源的要求。 随着LED的广泛应用,在很多地方线性电源这种简单的结构已经不能 ...… 查看全部问答> |
|
分配虚拟地址,并映射到指定物理地址 m_IOPreg = (volatile IOPreg *)VirtualAlloc(0,sizeof(IOPreg),MEM_RESERVE,PAGE_READWRITE|PAGE_NOCACHE); if(m_IOPreg ==NULL) &nb ...… 查看全部问答> |
|
stm32跑ucos-ii 2.86,外扩了sram,驱动正常了,但分散加载文件里只要把外部的sram想用起来,程度就死掉,无法运行,请问有人遇到改问题吗?怎么搞? 以下是我的手动分配的分散加载文件,把 RW_RAM1 0x60000000 0x00010000  ...… 查看全部问答> |
|
采用 TPS65950 为OMAP™3 供电:TI应用设计指南 此文档介绍了针对OMAP3530器件及TPS65950相关器件[电源集成电路 (IC)]的系统硬件实施。此文档主要说明针对处理器及相关电源IC的电源连接注意事项。… 查看全部问答> |




