【STM32】Keil MDK 中的 Code、RO-data、RW-dat、ZI-data 是什么?分别放在哪里?

这篇具有很好参考价值的文章主要介绍了【STM32】Keil MDK 中的 Code、RO-data、RW-dat、ZI-data 是什么?分别放在哪里?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

          C语言中有栈、堆、bss、data、code段。具体每个段具体是存储什么数据的,直接百度吧。重点分析一下STM32以及在MDK里面段的划分。

  • Code存放在ROM
  • RO-data存放在ROM
  • RW-dat存放在RAM
  • ZI-data存放在RAM

单片机初始化时RW-data从flash拷贝到RAM

生成的map文件位于list文件夹下 (KEIL)

  • Total RO  Size (Code + RO Data)            
  • Total RW  Size (RW Data + ZI Data)             
  • Total ROM Size (Code + RO Data + RW Data)  

【STM32】Keil MDK 中的 Code、RO-data、RW-dat、ZI-data 是什么?分别放在哪里?,STM32,单片机入门,单片机,嵌入式硬件

Code:通常是指编译器生成的机器指令,也就是程序的执行代码,这些内容会被存储到ROM区

RO-data:它指程序中用到的只读数据,因而程序不能被修改的内容,这些数据被存储在ROM区。 RO-data区典型:
例1、C语言中const关键字定义的变量。
例2、C语言中定义的全局常量。
例3、C语言中定义的字符串。

RW-data:即可读写数据区域,一定是初始化为“非0值”的可读写数据,而且应用程序可以修改其内容,这些数据被存储在RAM区
RW-data区典型:
例1、C语言中定义的全局变量,且初始化为“非0值”。
例2、C语言中定义的静态变量。且初始化为“非0值”。

ZI-data的栈空间 (Stack) 及堆空间 (Heap):编译器给出的 ZI-data 占用的空间值中包含了堆栈的大小 (经实际测试,若程序中完全没有使用 malloc 动态申请堆空间,编译器会优化,不把堆空间计算在内)。 可读写数据区域,一定是未初始化或初始化为“0值”的可读写数据,应用程序同样可以修改其内容,这些数据被存储在RAM区
ZI-data区典型:
例1、C语言中定义的数组,只定义了数组的大小,并没有给每个成员赋非0值。

以下数据节选于程序的.map文件结尾。

      Code (inc. data)      RO Data    RW Data    ZI Data      Debug   

     26260       1882        312           236             36628        656971   Grand Totals
     26260       1882        312           236             36628        656971   ELF Image Totals
     26260       1882        312           236             0                0             ROM Totals

=========================================================================

    Total RO  Size (Code + RO Data)                          26572 (  25.95kB)
    Total RW  Size (RW Data + ZI Data)                      36864 (  36.00kB)
    Total ROM Size (Code + RO Data + RW Data)      26808 (  26.18kB)

=========================================================================

总结: 在拿到一款单片机的时候,一定要明确单片机的ROM大小和RAM大小。
ROM的最小空间一定要大于: Code + RO Data + RW Data的总和;
RAM的最小空间一定要大于: RW Data + ZI Data之和

注意:
ROM就是单片机的FLASH大小
RAM就是单片机的运行内存大小
以STM32G070为例,ROM = 128kB;RAM = 36kB

————————————————
参考链接:https://blog.csdn.net/zhai17863966493/article/details/125311733

Keil 中的Code, RO-data , RW-data, ZI-data - 扁桃体也发言 - 博客园

这篇文章也不错,可以看看

http://t.csdn.cn/IdQ7Vhttp://t.csdn.cn/IdQ7V文章来源地址https://www.toymoban.com/news/detail-680165.html

到了这里,关于【STM32】Keil MDK 中的 Code、RO-data、RW-dat、ZI-data 是什么?分别放在哪里?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • keil官网下载MDK的STM32芯片pack包

    背景         最近重装了电脑系统,重新安装了MDK所以导致MDK芯片包需要重新下载,软件内下载又太慢,所以趁现在找到了官网下载方法把方法分享出来供大家参考。 1、在浏览器中输入网址:www.keil.arm.com进入如下界面,然后点击:Hardware -Devices 2、在Devices中选择,在红色方框

    2024年02月13日
    浏览(51)
  • MDK keil5新建STM32工程文件--实践篇

    一、先下载芯片支持包 第一步 :当然是先百度搜索我们的keil官网(网址):https://www.keil.com/   第二步 :点击首页的Project,会跳转如界面,再次点击Arm Cortex-M,如图所示:    第三步 :点击后会再次跳转,这时候我们再次点击Public Software Packs,如图所示: 第四步 :点击后

    2024年02月16日
    浏览(54)
  • 【STM32】keil MDK-Arm 5.38 功能详解

    keil 是ARM的软件子公司, MDK-Arm 是keil的一个产品,把它称作keil也是可以的。 arm 链接:https://developer.arm.com/Tools%20and%20Software/Keil%20MDK#Overview keil:https://www.keil.com/download/ keil MDK是一个完整的软件开发解决方案,用于创建,构建和调试基于Arm的微控制器的嵌入式应用程序。keil

    2024年02月11日
    浏览(137)
  • Keil MDK编程环境下的 STM32 IAP下载(学习笔记)

    ICP ICP(In Circuit Programing)。在电路编程,可通过 CPU 的 Debug Access Port 烧录代码,比如 ARM Cortex 的 Debug Interface 主要是 SWD(Serial Wire Debug) 或 JTAG(Joint Test Action Group); ISP ISP(In System Programing)。在系统编程,可借助 MCU 厂商预置的 Bootloader 实现通过板载 UART 或 USB 接口烧录代码,比如

    2024年02月06日
    浏览(38)
  • MDK Keil5 创建Stm32工程-理论篇(这里以Stm32F103Zet6为例)

    整个工程可以粗略的划分为几个文件夹: BSP 底层驱动比如GPIOTimer等驱动文件 CMSIS 内核相关的文件 Firmware 生成的固件下载文件 Mycode 用户编写的相关文件,主要编写的文件都在这个文件夹里 Project 工程文件 startup 芯片启动文件 STM32F10x_FWLib 标准库文件 USER 主函数等文件 readm

    2023年04月24日
    浏览(86)
  • 基于MDK-Keil环境如何把STM32程序直接下载到SRAM运行

    对于 Cortex-M 内核的微控制器,它们都可以支持在 RAM 中执行程序,有些非 ARM 的微控制器是不支持的。 在内部 SRAM 执行程序,有基于以下几方面的原因: 1、所使用的设备可能具有OTP(One-time Programmable,一次性可编程)ROM区域,还没有确定最终代码之前,还不会把程序编程到

    2024年02月07日
    浏览(38)
  • 【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例)

    学习相关的基础知识请阅读本专栏其他文章,一定有你想要的。 https://blog.csdn.net/weixin_43764974/category_11021363.html 本文软硬件: STM32F103C8T6 ARM MDK 5.38 ARM complier 6 ST-Link v2 StdPeriph Drivers(标准库) 文章开始前,我想再次说一下: keil 、 μvision 、 ARM MDK 这几个名词(尽管前面的额文

    2024年02月16日
    浏览(79)
  • KEIL5 MDK中下载STM32全系列芯片包的简易方法(免费)

    本文介绍了两种免费方法 本例中使用的STM32型号为STM32F407VET6。 打开Keil uVision5,点击下图所示的Pack Installer图标。 根据芯片型号开头字母可以查询到对应芯片。 例如STM32F4系列的芯片包名称为STM32F4xx_DFP,版本为2.14.0。 在网址中输入“https://www.keil.com/pack/Keil.”+对应的芯片包名

    2024年02月05日
    浏览(55)
  • STM32H723 + DP83848 + LWIP + RT-Thread(FreeRTOS) + STM32CubeMX + Keil MDK 超详细

    MCU:STM32H723ZGT ETH PHY :DP83848 RT-Thread:RT-Thread nano 3.1.5 Software Pack:STM32CubeH7 Firmware Package V1.10.0 / 11-February-2022 STM32H723配置以太网+Freertos注意事项 STM32H723+Lwip+ETH+CUBE 完整配置(排了巨多坑!) Cube配置STM32H743+DP83848以太网工程 STM32H743+CubeMX-梳理MPU的设置 首先使用 CubeMX配置相关外

    2024年02月13日
    浏览(46)
  • 【正点原子STM32】KEIL MDK5使用技巧(文本美化、代码编辑、查找&替换技巧、工程编译问题定位、窗口视图管理)

    一、文本美化 1.1、编辑器设置 1.2、字体和颜色设置 1.3、用户设置 1.4、代码提示语法检测 1.5、global.prop文件妙用 二、代码编辑技巧 2.1、Tab键的妙用 2.2、快速定位函数或变量被定义的地方 2.3、快速注释快速取消注释 三、查找替换技巧 3.1、快速打开头文件 3.2、查找功

    2024年01月23日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包