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  编译结果 编辑:什么鱼 引用地址:STM32 编译结果 map 之 code、RO-data、RW-data、ZI-data 字段解析

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

推荐阅读最新更新时间:2023-10-12 16:31

STM32的map文件学习笔记
前言 前几个月针对公司自己的芯片写了个程序,这个程序有个硬性要求,就是能用的FLASH空间只有4KB,之前已经写得差不多了,最终占用空间3.6KB。 这不,最近又得加需求,还剩一点点FLASH空间可以使用,这该如何是好。需求已经加过来了,不行也得行啊。所以就得去优化之前的代码了,这就得研究比较底层的东西了。 我们的芯片与其它的MCU芯片用起来都差不多一样。我们在用ST的时候,编译完成,会生成很多文件,其中有一个.map文件,里面包含的信息就是工程 ROM/FLASH 和 RAM 的占用情况 。 之前只是关心.map文件的最后几行的 ROM/FLASH占用信息,如: 这次就得认真的学习一下这个文件了,只有清楚的知道这
[单片机]
<font color='red'>STM32</font>的map文件学习笔记
创建基于固件库的stm32程序模板并实现流水灯
一、准备 Keil mdk514 下载STM32F10x_StdPeriph_Lib_V3.5.0固件库(百度搜索或http://download.csdn.net/detail/weboo10000/9084145). 示例芯片型号:STM32F103C8 二、创建工程 1. 创建工程目录:新建一个文件夹,起名为“Template工程模板”,在该文件夹下建立下图所示子文件夹 图1:工程文件目录结构 2. 准备文件:复制固件库LibrariesSTM32F10x_StdPeriph_Driver下的2个文件夹到工程模板目录的FWLIB下;复制固件库LibrariesCMSISCM3CoreSupport下
[单片机]
创建基于固件库的<font color='red'>stm32</font>程序模板并实现流水灯
STM32开发笔记24:STM32L0低功耗设计——需求概述
单片机型号:STM32L053R8T6 这几篇日志将详细记录,自己应用stm32进行低功耗设计的全过程。 使用芯片:STM32L053R8T6 运行模式: Range 1:电源电压限制在1.71-3.6V,CPU最大运行频率为32MHz。 Range 2:CPU最大运行频率为16MHz。 Range 3:CPU最大运行频率4.2MHz 低功耗模式: Sleep mode(睡眠模式)、Low-power run mode(低功耗运行模式)、Low-power sleep mode(低功耗睡眠模式)、Stop mode with RTC(带有RTC的停止模
[单片机]
<font color='red'>STM32</font>开发笔记24:STM32L0低功耗设计——需求概述
STM32之SPI从机例程
#include stm32f10x.h /* RCC时钟配置 */ void RCC_config(void) { ErrorStatus HSEStartUpStatus; /* RCC寄存器设置为默认配置 */ RCC_DeInit(); /* 打开外部高速时钟 */ RCC_HSEConfig(RCC_HSE_ON); /* 等待外部高速时钟稳定 */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { /* 设置HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /*
[单片机]
stm32中断服务函数c语言,STM32中断使用总结——不使用固件库
ST提供的固件库给我们很大的方面,但我十分不喜欢使用固件库因为它不简洁等一些原因,所以自己不断琢磨怎么用汇编和C语言编写自己想要的程序。以定时器TMI1上溢中断的产生为例总结一下这种方法。硬件条件是:外部晶振使用HIE=6MHz;目标是:定时器每10S进中断一次使LED闪烁。 首先要知道这个中断(TIM1上溢事件)的中断向量地址在哪?汇编部分就是编写一个跳转程序,用来保证在产生中断时会跳入自己写的C程序中,这个可以参考启动代码STM32F10X.S中的复位函数的编写,但要注意地址的对准,这里不在赘述。 然后根据需要编写一个中断处理程序,这个里面必须将TIM1的上溢中断标志清零(TIM1_SR中第0位),否则时间没到程序一直
[单片机]
STM32的串口中断
总的来说,STM32单片机的串口还是很好理解的,编程也不算复杂。当然我更愿意希望其中断系统和51单片机一样的简单。 对于接收终端,就是RXNE了,这只在接收完成后才产生,在执行USART_ITConfig(USART1, USART_IT_RXNE, ENABLE)代码时不会进入ISR。但麻烦的就是发送有关的中断了:TXE或者TC,根据资料和测试的结果,TXE在复位后就是置1的,即在执行USART_ITConfig(USART1, USART_IT_TXE, ENABLE)后会立即产生中断请求。因此这造成一个麻烦的问题:如果没有真正的发送数据,TXE中断都会发生,而且没有休止,这将占用很大部分的CPU时间,甚至影响其
[单片机]
stm32.cube(十)——单HAL模块的结构
一、接口函数 对于linux驱动来说,基本的操作函数有Open、Close、Read、Write、Ioctrl,这是在OS的驱动层对外设进行操作的一套规范化的接口。对于更底层的硬件抽象层来说,上层的Open和Close意味着对外设的初始化设置和反初始化设置(回复到未被使用前的状态)。如果外设的作用是实现一个通讯传输,那么上层的Read、Write也要同样对应外设的发送和接收。若外设不是一个传输设备,那么就要有对应的I/O control函数来控制它。同时HAL还要提供取得外设状态的接口,以及外设的中断处理函数。所以一个HAL模块的函数结构基本上是这样的: 通讯外设的接口函数 在TRANSFER这里,大部分实现通信协议的外设都可
[单片机]
STM32系列里RTC的亚秒特性及功能(上)
绝大多数STM32系列里的RTC都具有亚秒【或称子秒】计数单元。为了了解亚秒特性及功能,不妨先看RTC的功能框图。本文中的有关截图若无特别说明均来自STM32L4系列参考手册。 RTC的时钟源【RTCCLK】可以是LSE、LSI或者HSE/32,由RTCCLK最终变成日历的秒脉冲驱动信号经过了2次分频。先经过上图中A处的异步分频单元,默认分频系数是128,形成ck_apre时钟,默认情况下该时钟频率为256Hz;然后该时钟脉冲来到图中B处的同步分频单元,默认分频系数为256,最终形成1Hz的秒脉冲【ck_spre】到日历单元。关于两分频单元分频系数的配置,通过对RTC_PRER寄存器的相关位编程实现。 其中异步分频系数配
[单片机]
<font color='red'>STM32</font>系列里RTC的亚秒特性及功能(上)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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