一 基础知识
字节 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
分享到:
相关推荐
Code为程序代码部分 RO-data 表示 程序定义的常量 const temp; RW-data 表示 已初始化的全局变量 ZI-data 表示 未初始化的全局变量
文档描述了如何在keil MDK 中集成PC-lint 代码走查工具的方法。
前几天进手了一个J-LINK,因为H-JTAG毕竟对MDK支持的不是太完美,比如用keil mdk上面的下载按钮烧录程序,不是直接就能烧录进去,而是弹出H-Flash软件,再手工选择文件烧录;而且用H_JTAG单步调试还容易莫名其妙的跑...
2013年10月份,ARM/KEIL正式推出KEIL MDK V5.00,该版本使用uVision5 IDE集成开发环境,是目前针对ARM微控制器,尤其是ARM Cortex-M内核最为便捷,功能最全的一款开发工具。 总共6个部分,全部下载再解压安装。 (MD5...
Keil MDK,也称MDK-ARM、Realview MDK、I-MDK、uVision4 等。Keil MDK是由三家国内代理商提供技术支持和相关服务。 MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。 MDK-ARM...
keil-MDK开发环境uCOS-III移植到STM32上源码,keil-MDK开发环境uCOS-III移植到STM32上源码,开发者著作keil-MDK开发环境uCOS-III移植到STM32上源码,keil-MDK开发环境uCOS-III移植到STM32上源码,开发者著作
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.ARM Compiler.[1.6.0-0] Version: 7.13.0(2021-05-25) Release Notes: Network Component Version 7.15.0(see revision history for detalls) -added functions netARp ClearCache and netDp ClearCache to ...
本人在使用的KEIL MDK5代码配色方案,暗黑主题,压缩包里面有预览图和字体文件。
MDK V4.74.EXE和MDK529.EXE网盘下载地址,Keil V4 Keil V5 ARM-MDK
Keil MDK-ARM系列教程 Keil(MDK-ARM)系列教程0-介绍下载安装与注册.pdf Keil(MDK-ARM)系列教程8-在线调试.pdf
Keil MDK-ARM各种数据类型占用的字节数 char short int float double占用字节数,uCOS-II
MDK即RealView MDK或MDK-ARM(Microcontroller Development kit),是 ARM 公司收购Keil公司以后,基于uVision界面推出的针对ARM7、ARM9、Cortex-M0、Cortex-M1、Cortex-M3、Cortex-M3、Cortex-R4等ARM处理器的...
这个是Keil官方的中间件支持包,为方便大家在国内使用下载,现上传上来给大家共享,keil uv5上使用,下载后打开mdk - project - manage - pack installer,然后 file - import即可导入mdk。
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 中使用虚拟串口调试串口
KEIL-MDK V5和ST-LINK驱动及STM32F1XX系列芯片支持包,我已经测试能够安装并且使用
Keil-MDK-7/9-518,开发工具,留存备大家使用,兼容keil4版本
Keil MDK 编译 ucOS-II 出现的警告和错误解决
KEIL_MDK下uCOS-II的移植,照着文档一步步来很简单的可以移植到STM32单片机上