STM32 编译结果 map 之 code、RO-data、RW-data、ZI-data 字段解析

2019-04-01来源: eefocus关键字:STM32  编译结果

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动态申请堆空间,编译器会优化,不把堆空间计算在内)。

关键字:STM32  编译结果 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/2019/ic-news040143671.html

上一篇:STM32 查看 FLASH 和 RAM 使用情况
下一篇:STM32 文件系统 fatfs 移植笔记详解

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32项目(三)——通用LIN控制器
需求:LIN马达控制器:AFS(DHL+AFL)——弯道辅助照明系统DHL:上极限,下极限,零位,马达老化循环;AFL:左极限,右极限,零位,马达老化循环;所有参数可配置:上极限,下极限,零位,左极限,右极限,马达循环上极限,马达循环下极限,马达循环次数,马达循环等待时间;保存至少30款产品的配置,配置界面需要有添加,读取,查找,删除功能。方案:STM32 + LIN + 串口(使用NXP的串口屏,TJA系列的LIN芯片)STM32的LIN接口作为主节点,马达作为从节点。系统设计:RTX多任务设计,串口处理任务,显示屏处理任务,LIN发送任务;(1)、串口处理任务:点击串口屏会获取到点击的坐标值,串口中断接受到数据加入到队列;任务
发表于 2020-12-09
STM32项目(二) —— 车灯测试台架
需求:(1)、点灯控制器:在线节拍,离线节拍;(2)、PWM控制盒:在线PWM,离线PWM;(3)、电流测试模块:检测车灯电流校准系数;方案:点灯控制器:STM32 + CAN + GPIO节拍:比如亮多长时间,灭多长时间;大节拍中嵌套多个小节拍,每个灯对应相同或者不同的节拍。上位机下发控制指令,表明此时是在线还是离线。(离线跑的节拍是在在线模式下下载的)在线模式:如果是直接输出,按照指定格式下发CAN消息,MCU接受消息并解析,切继电器点灯;如果是存储节拍,MCU内部Flash存储上位机通过CAN下发的点灯节拍。离线模式:从内部Flash中读取节拍,并控制继电器点灯;模式切换按钮:不仅可以通过上位机控制在线/离线模式,还可
发表于 2020-12-09
STM32项目(一) —— 展示车座椅
功能:模拟人开车时,ACR和ABL的变化。 主控制器:STM32(CAN,串口,网口,输入,输出)上位机:LibView ACR:卷收器(座椅上面的安全带)ABL:电机(座椅右下角接安全带的插孔)PUMA:控制器发送CAN给PUMA,PUMA控制ACR和ABL(DBC文件的解析);ACR通过CAN控制,ABL通过PWM控制电机。 STM32硬件接口:按键盒8路输入,网口与工控机软件通信,CAN1直接控制ACR,CAN2给PUMA信号控制ACR,串口与上位机软件通信(控制方向盘震动)。 主要有两块功能:静态模式和游戏模式。 静态模式:UC-WinRoad没工作时,STM32检测
发表于 2020-12-09
STM32——GPIO(2)
, GPIO_InitTypeDef* GPIO_InitStruct){  uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00;  uint32_t tmpreg = 0x00, pinmask = 0x00;  /* 断言,用于检查输入的参数是否正确 */  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));  assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));  assert
发表于 2020-12-09
Octonion全新AI工业状态监测扩展软件包可在STM32 MCU完美运行
专业开发工业设备诊断边缘人工智能(AI)的深度技术软件公司Octonion 发布了一个STM32Cube扩展软件包。该软件包是针对来自横跨多重电子应用领域的全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)的工业级STM32L4 +微控制器开发板的优化过的状态监测解决方案。 Octonions的新软件包支持意法半导体在快速增长的工业状态监测和预测性维护市场上发起的使用STM32微控制器和微处理器开发人工智能应用的市场活动。Octonion的I-CUBE-OCTMI 软件包是一个运行在STM32 超低功耗MCU上的自我维护系统,系统
发表于 2020-12-09
STM32——流水灯
stm32f10x_conf.h:打开stm32f10x_gpio.h和stm32f10x_rcc.h;stm32f10x_gpio.c 和 stm32f10x_rcc.c加入工程模板中,只说重点。【stm32f10x_rcc.c用于配置系统时钟 和外设时钟,由于每个外设都要配置时钟,所以它是每个外设都需要用到的库文件。】// 新建led.h  led.c#ifndef  _LED_H_#define  _LED_H_ #include "stm32f10x.h" #define ON  0#define OFF 1 #define LED1
发表于 2020-12-08
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved