【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)  

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/IdQ7Vicon-default.png?t=N176http://t.csdn.cn/IdQ7V

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Keil-MDK是一种嵌入式软件开发工具,可以兼容STM32F4系列芯片的支持库。 STM32F4系列芯片是意法半导体推出的一款高性能微控制器系列,内含ARM Cortex-M4内核。这些芯片广泛应用于各种领域的嵌入式系统开发。Keil-MDK的支持库为开发者提供了简化开发流程、减少编程工作量的便利。 Keil-MDK的支持库可以帮助开发者通过抽象的接口,快速访问STM32F4系列芯片的功能和外设。通过这些支持库,开发者可以方便地使用芯片上的GPIO口、定时器、USART、ADC等外设,而无需深入了解底层硬件细节。支持库还提供了一些高级功能,如断控制、DMA等,可加快开发进度。 Keil-MDK的支持库具有高度可移植性,支持不同型号的STM32F4芯片。通过简单的配置,开发者可以轻松选择合适的芯片型号,并利用相同的代码在不同的芯片上进行开发。这种可移植性大大简化了嵌入式系统的开发过程,提高了开发效率。 总之,Keil-MDKSTM32F4系列芯片支持库为开发者提供了通用的接口和功能,简化了嵌入式系统的开发流程,提高了开发效率。开发者可以轻松地利用这些库进行芯片的驱动开发和应用程序的编写。 ### 回答2: Keil MDK是一款开发软件,适用于基于ARM Cortex-M内核的微控制器。在Keil MDK,有一个支持库可以帮助开发者更加方便地使用STM32F4系列芯片。 STM32F4系列芯片是由STMicroelectronics开发的一款微控制器,该系列芯片采用了ARM Cortex-M4内核,具有强大的处理能力和丰富的外设资源。而Keil MDK的支持库,专门针对STM32F4系列芯片进行了优化和适配。 通过使用Keil MDKSTM32F4系列支持库,开发者可以方便地访问芯片的各种外设,如GPIO、USART、SPI、I2C等,并进行相关配置和控制。此外,支持库还提供了丰富的API函数,大大简化了开发过程,使开发者可以更加高效地编写代码。 Keil MDKSTM32F4系列支持库还提供了相应的驱动程序,可以帮助开发者快速启动项目并进行调试。同时,支持库还包含了一些实用工具和示例代码,可以帮助开发者更好地理解和应用芯片的功能。 总之,Keil MDKSTM32F4系列支持库为开发者提供了丰富的工具和资源,使他们能够更加轻松地开发基于STM32F4系列芯片的应用程序。无论是初学者还是有经验的开发者,都可以通过使用这个支持库,快速、高效地实现自己的项目。 ### 回答3: Keil MDKKeil公司开发的嵌入式软件开发工具,主要用于ARM处理器的软件开发。STM32F4系列是意法半导体公司推出的一款高性能的32位微控制器系列,它们在Keil MDK具备完整的支持库。 在Keil MDKSTM32F4系列芯片支持库提供了丰富的软件资源,以帮助开发人员进行STM32F4系列芯片的开发工作。这些支持库包括了各种驱动程序、函数库和例程,以支持各种外设的操作和功能实现。 首先,STM32F4系列芯片支持库提供了标准外设驱动程序,包括GPIO、USART、SPI、I2C、ADC等,这些驱动程序简化了对外设的配置和控制,使开发者可以更加方便地使用这些外设,并且提高了开发效率。 其次,STM32F4系列芯片支持库还包括了各种函数库,例如操作系统(RTOS)支持库、射频(RF)支持库、USB支持库等。这些函数库提供了丰富的功能接口,使开发者可以直接调用这些接口来实现相应的功能,从而避免了重复编写代码的工作。 另外,STM32F4系列芯片支持库还提供了大量的应用实例和示例代码,这些代码可以帮助开发者更好地理解和使用STM32F4系列芯片的各种功能。通过参考这些示例代码,开发者可以快速上手,减少开发周期。 总之,Keil MDKSTM32F4系列芯片支持库为开发者提供了丰富的软件资源,使得开发者能够更加便捷地进行STM32F4系列芯片的软件开发工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值