`
anlx27
  • 浏览: 497537 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Keil MDK中的Code, RO-data , RW-data, ZI-data分别代表什么意思?(转)

阅读更多

一 基础知识

字节  8位
半字  16位
字    32位

 

二 解惑

Code, RO-data,RW-data,ZI-data

Code为程序代码部分
RO-data 表示 程序定义的常量const temp;
RW-data 表示 已初始化的全局变量
ZI-data 表示 未初始化的全局变量

Program Size: Code="18248" RO-data=320 RW-data=260 ZI-data=3952

Code, RO-data,RW-data ............flash
RW-data, ZIdata...................RAM

三 详细分析

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

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

    Total RO  Size (Code + RO Data)                18568 (  18.13kB)
    Total RW  Size (RW Data + ZI Data)              4212 (   4.11kB)
    Total ROM Size (Code + RO Data + RW Data)      18828 (  18.39kB)

ARM指令的长度刚好是1个字(分配为占用4个字节),Thumb指令的长度刚好是半字(占用2个字节)

R0-R15 (R15-PC,R14-LR,R13-SP) 32位

每个异常模式还带有一个程序状态保存寄存器 (SPSR),它用于保存在异常事件发生之前的CPSR

LDMIA R1!,{R2-R7, R12} ;将R1单兀中的数据读出到R2-R7,R12,  R1自动加1
STMIA RO!,{R3-R6,R10}  ;将R3-R6,R10中的数据保存到RO指向的地址,RO自动加1

 

在数据传送之前,将偏移量加到Rn中,其结果作为传送数据的存储地址.若使用后缀“!”,则结果写回到Rn中,且Rn值不允许为R15.指令举例如下:
LDR   Rd, [Rn, #Ox4]!

LDMFD  SP!,{R0-R3,PC}^ ;中断返回
“^”符号表示这是一条特殊形式的指令。这条指令在从存储器中装载PC的同时(PC是最后恢复的),CPSR也得到恢复

大端格式(Big-endian)
小端格式(Little-endian)

数据0x12345678存储格式
      大端格式
低地址<----0x12|0x34|0x56|0x78---->高地址
      小端格式
低地址<----0x78|0x56|0x34|0x12---->高地址

ARM微处理器支持7种运行模式,分别为: CPSR M[4:0]

1.用户模式(usr):ARM处理器正常的程序执行状态。       10000
2.快速中断模式(fiq):用于高速数据传输或通道处理。    10001
3.外部中断模式(irq):用于通用的中断处理。            10010
4.管理模式(svc):操作系统使用的保护模式。            10011
5.数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。10111
6.系统模式(sys):运行具有特权的操作系统任务。        11111
7.定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。 11011

 

ARM正常工作一般工作在用户模式和系统模式,复位的时候进入管理模式。

对于ARM指令集来说,PC指向当前指令的下两条指令的地址,

注意pc,在调试的时候显示的是当前指令地址,而用mov lr,pc的时候lr保存的是此指令向后数两条指令的地址

假设反汇编代码:  0x000001 :  mov lr pc   

(此时查看PC寄存器的值是0x000001,但实际PC值是0x000003, lr里面保存的就是0x000003)

 

fields 指定传送的区域(psr  CPSR或SPSR)
c 控制域屏蔽字节(psr[7..0])
x 扩展域屏蔽字节(psr[15..8])
s 状态域屏蔽字节(psr[23..16])
f 标志域屏蔽字节(psr[31..24])

例如:MSR cpsr_c, #0xD3 ;  CPSR[7...0] = 0xD3

分享到:
评论

相关推荐

    keil中的Code_RO-data_RW-dat_ZI-data

    ### Keil中的Code_RO-data_RW-dat_ZI-data详解 #### 1. 概念解析 在Keil C51环境中,编译链接过程会将程序分成不同的段进行管理,其中最重要的四种类型包括: - **Code**:代码段,存放程序的机器码。 - **RO-data*...

    Keil MDK中使用pc-lint的详细方法.doc

    Keil MDK 中使用 PC-Lint 的详细方法 Keil MDK 是一个功能强大的集成开发环境(IDE),它提供了一个完整的开发工具链,包括编译器、调试器、编辑器等。PC-Lint 是一个静态代码分析工具,能够帮助开发者检测源代码...

    keil MDK代码配色方案-暗黑主题

    KEIL MDK,全称Microcontroller Development Kit,是由ARM公司推出的嵌入式系统开发工具,广泛应用于基于ARM架构的微控制器编程。它包含了C编译器、宏汇编器、链接器、库管理器以及调试器等全套工具,是嵌入式开发的...

    亲测Keil MDK5.32完美运行开发环境

    Keil MDK,也称MDK-ARM、Realview MDK、I-MDK、uVision4 等。Keil MDK是由三家国内代理商提供技术支持和相关服务。 MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。 MDK-...

    Image$$RO$$Limit ARM中的RO、RW和ZI DATA.doc

    ARM映像文件中的RO、RW和ZI DATA ARM映像文件是一种可执行文件,包括bin或hex两种格式,可以直接烧到ROM中执行。在ARM集成开发环境中,一个程序包括只读的代码段和可读写的数据段。只读的代码段和常量被称作RO段...

    KEIL_MDK537.exe (Keil_MDK ARM单片机软件开发环境)

    Keil MDK,也称MDK-ARM、Realview MDK、I-MDK、uVision4 等。Keil MDK是由三家国内代理商提供技术支持和相关服务。 MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。 MDK-ARM...

    MDK5.39热乎安装包

    Keil MDK,也称MDK-ARM、Realview MDK、I-MDK、uVision4 等。Keil MDK是由三家国内代理商提供技术支持和相关服务。MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。 MDK-ARM...

    Keil MDK编译器与J-LINK使用

    前几天进手了一个J-LINK,因为H-JTAG毕竟对MDK支持的不是太完美,比如用keil mdk上面的下载按钮烧录程序,不是直接就能烧录进去,而是弹出H-Flash软件,再手工选择文件烧录;而且用H_JTAG单步调试还容易莫名其妙的跑...

    STM32H7XX-KEIL-MDK-外部FLASH-FLM下载算法-Application-Note

    STM32H7XX系列MCU在开发过程中,有时需要使用外部Flash作为程序存储空间,这时就涉及到MDK(Keil uVision)的下载算法。本文主要围绕STM32H7XX在KEIL-MDK环境下,针对外部Flash的FLM(Flash Loader Demonstrator)...

    STM32 Pack Keil.MDK-Middleware

    这个"STM32 Pack Keil.MDK-Middleware"文件包是专门为STM32微控制器系列设计的,确保了在Keil MDK(Microcontroller Development Kit)中进行高效且便捷的开发。 STM32 Pack的主要作用在于提供固件库,这些库包括...

    keil5软件安装包 keil5 MDK 5.34版本

    keil5 MDK 5.34版本keil5软件安装包 keil5 MDK 5.34版本keil5软件安装包 keil5 MDK 5.34版本keil5软件安装包 keil5 MDK 5.34版本keil5软件安装包 keil5 MDK 5.34版本keil5软件安装包 keil5 MDK 5.34版本keil5软件...

    Keil MDK-ARM Version 5 第二部分

    2013年10月份,ARM/KEIL正式推出KEIL MDK V5.00,该版本使用uVision5 IDE集成开发环境,是目前针对ARM微控制器,尤其是ARM Cortex-M内核最为便捷,功能最全的一款开发工具。 总共6个部分,全部下载再解压安装。 (MD5...

    ARM开发工具KEIL MDK-ARM v5.0强势来袭 part4

    在蛰伏了一年后ARM MDK再度发力,新一代集成开发工具V5震撼上市!和以往的版本V4相比有许多新的特色。

    MDK540 -官网“最新版”Keil MDK-Arm 5.40安装包

    MDK540安装包,作为Keil MDK系列中的一个版本,继承了Keil MDK一贯的强大功能和易用性。它专为嵌入式系统开发设计,提供了对多种单片机和微处理器的广泛支持,包括ARM、8051、Cortex-M等架构。MDK540集成了编译器、...

    Keil MDK主题美化和代码美化

    Keil MDK主题美化和代码美化!! Keil MDK主题美化和代码美化!! Keil MDK主题美化和代码美化!! Keil MDK主题美化和代码美化!! Keil MDK主题美化和代码美化!! Keil MDK主题美化和代码美化!! Keil MDK主题...

    Keil_MDK-ARM_5.28a_Downloadly.ir.rar

    Keil_MDK-ARM_5.28a_Downloadly.ir.rar Keil For ARM 5.28版本。MDK:Microcontroller Developer Kit微控制器开发工具。 Keil MDK-ARM是美国Keil软件公司(现已被ARM公司收购)出品的支持ARM微控制器的一款IDE(集成...

    Keil MDK最新版本下载地址(MDK-ARM Version 5.29)4-3 MDK529.part3.rar

    MDK-ARM MDK-ARM Version 5.29 Version 5.29 IDE-Version: μVision V5.29.0.0 Copyright (C) 2019 ARM Ltd and ARM Germany GmbH. All rights reserved. License Information: w v z LIC=ATTRA-1ASCC-...

    keil-MDK开发环境uCOS-III移植到STM32上源码,开发者著作

    keil-MDK开发环境uCOS-III移植到STM32上源码,keil-MDK开发环境uCOS-III移植到STM32上源码,开发者著作keil-MDK开发环境uCOS-III移植到STM32上源码,keil-MDK开发环境uCOS-III移植到STM32上源码,开发者著作

    STM32_IAR工程-Keil_MDK转换详解

    目前市场上较为流行的两款开发工具分别是IAR Systems的Embedded Workbench for ARM(简称IAR)与Keil公司的uVision(基于Keil MDK)。虽然大部分的STM32示例程序是基于IAR开发环境构建的,但由于Keil MDK拥有更加...

    图文解说Keil MDK下ST-Link II的连接设置

    在嵌入式开发中,Keil MDK是一款广泛使用的集成开发环境(IDE),尤其在STM32微控制器的开发中占据了重要地位。ST-Link II是意法半导体(STMicroelectronics)推出的调试器和编程器,用于连接开发板和电脑,以便进行...

Global site tag (gtag.js) - Google Analytics