首页 > 编程语言 >MDK5—stm32程序的组成、存储与运行

MDK5—stm32程序的组成、存储与运行

时间:2023-04-23 14:33:56浏览次数:52  
标签:初始化 存储 ZI 初始值 程序 stm32 编译器 MDK5 data

 

MDK编译完成后,程序显示由Code、RO-data、RW-data、ZI-Data段组成(栈空间(Stack)及堆空间(Heap))。

1、Code:代码域,它指的是编译器生成的机器指令,这些内容被存储在ROM区;

RO-data:Read Only data,只读数据域,它指程序中用到的只读数据,这些数据被存储在ROM区,因而程序不能修改其内容。例如C语言中const关键字定义的变量就是典型的RO-data。

 

2、RW-data:Read Write data,可读写数据域,它指初始化为“非0值”的可读写数据,程序刚运行时,这些数据具有非0的初始值,且运行的时候它们会常驻在RAM区,因而应用程序可以修改其内容。例如C语言中使用定义的全局变量,且定义时赋予“非0值”给该变量进行初始化。

 

3、ZI-data:Zero Initialie data,0初始化数据,它指初始化为“0值”的可读写数据域,它与RW-data的区别是程序刚运行时这些数据初始值全都为0,而后续运行过程与RW-data的性质一样,它们也常驻在RAM区,因而应用程序可以更改其内容。例如C语言中使用定义的全局变量,且定义时赋予“0值”给该变量进行初始化(若定义该变量时没有赋予初始值,编译器会把它当ZI-data来对待,初始化为0);

 

4、ZI-data的栈空间(Stack)及堆空间(Heap):属于ZI-data区域,会被初始值化为0值。编译器给出的ZI-data占用的空间值中包含了堆栈的大小(经实际测试,若程序中完全没有使用malloc动态申请堆空间,编译器会优化,不把堆空间计算在内)。可在startup_stm32f10x_hd.s文件修改其大小,但不得超过芯片的sRAM大小。

 

 程序在掉电和上电的运行状态下存储器的情况:

 

 

 

标签:初始化,存储,ZI,初始值,程序,stm32,编译器,MDK5,data
From: https://www.cnblogs.com/zst0395/p/17346474.html

相关文章

  • python 操作阿里云oss 对象存储上传下载文件
    python操作阿里云对象存储oss阿里云账号要有操作oss权限安装OSSSDKpipinstalloss2上传文件#-*-coding:utf-8-*-importoss2importos#阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控......
  • Docker_存储卷-挂载
    Docker存储卷volumeDocker-managedvolume(docker管理卷)Bindmountvolume(绑定挂载卷)挂载Docker提供了3种方法将数据从Docker宿主机挂载(mount)到容器:volumes,Volumes由Docker管理,存储在宿主机的某个地方(在linux上是/var/lib/docker/volumes/ 受控存储bi......
  • 计组笔记:第三章 存储系统
    第三章存储系统【复习提示】本章是历年考査的重点,特别是有关Cache和存储器扩展的知识点容易出综合题。此外,存储器的分类与特点,存储器的扩展(芯片选择、连接方式、地址范围等),低位交叉存储器,Cache的相关计算与替换算法,虚拟存储器与快表也容易出选择题。读者应在掌握基本原理和......
  • STM32CubeMx配置串口,并控制LED灯亮灭
    一、环境配置软件:stm32cubemx6.4.0keil5.30大虾丁丁串口调试助手硬件:正点原子stm32f103ZET6开发板二、配置stm32cubemx项目选择USART1,Asynchronous(异步通讯),RS232是异步通讯,就是没有同步时钟也没有同步线进行通讯。 设置串口基础配置:波特率:115200Bit/s;数据长度8位;无校......
  • STM32:IIC
    1IIC  iic全称interintegratedcircuit,集成电路总线;为串行通信接口协议;通过SCL、SDA2线进行板间通讯;  iic标准规定在iic协议在快速模式下传输速率最高可达400Kbits/s,在高速模式下最高3.4Mbits/s  以iic协议传输的eeprom存储器at24cxx,最大存储容量16K"bits",传输速率最......
  • 数据库校验用户核心代码实现、用户密码加密存储
    数据库校验用户核心代码实现核心代码实现创建一个UserDetailsService接口,重写其中的方法。更加用户名从数据库中查询信息@ServicepublicclassUserDetailsServiceImplimplementsUserDetailsService{@AutowiredprivateUserMapperuserMapper;@Overrid......
  • 用 python 上传文件到微信小程序云存储
    前言小程序上了云托管后不打算继续使用其他图床,而是使用云托管自带的图床。而由于时间紧迫只能在本地使用云托管提供的服务器调用对象存储api云托管上传文件的文档在这里上传文件文档如果你上传带有中文名的文件,或者上传的路径有中文名时,需要修改一下requests库的源码,否......
  • STM32下载ELF文件、最小可执行bin文件测试
    1、STM32能下载ELF格式的文件吗?答:可以。因为所谓的bin文件就是ELF文件的.text代码段。当然前提是下载工具能识别ELF文件格式,STM32下载ELF文件并不意味着STM32可以把ELFdownload到Flash上,而是下载工具能从ELF提取到bin文件,下载时通信链路上传输的也只有要bin文件。例如有elf文......
  • 基于“ModBus写文件”实现STM32串口IAP升级固件(上)
    文章目录一、ModBus协议1.10x15(写文件)请求响应例程二、上位机2.1预定义2.2主要流程图2.3界面2.4主要程序读取信息按钮-点击事件升级固件按钮-点击事件一、ModBus协议ModBus是一个应用层的通信协议,广泛应用于工业控制等领域。主要功能码有0x03(读多个寄存器),0x10(写多个寄存器),0......
  • Ubuntu 搭建一个局域网文件存储服务器
    在Ubuntu上搭建一个局域网文件存储服务器可以使用Samba服务,Samba是一个能够与Windows兼容的文件和打印机共享服务。下面是搭建过程:安装Samba服务打开终端,运行以下命令安装Samba:sqlCopycodesudoapt-getupdatesudoapt-getinstallsamba创建共享文件夹......