PAGE1
PAGE1
ARMCortex-M3架构详解
1.引言
ARMCortex-M3是ARM公司推出的一款高性能、低功耗的32位RISC(ReducedInstructionSetComputing,精简指令集计算)处理器内核。它广泛应用于嵌入式系统中,特别是那些需要高性能和低功耗的微控制器(MCU)应用。TexasInstruments的LM3S系列微控制器基于ARMCortex-M3内核,提供了丰富的外设和高性能的处理能力,适用于各种工业、医疗和消费电子应用。
2.ARMCortex-M3架构概述
2.1基本特性
ARMCortex-M3处理器内核具有以下基本特性:
32位RISC架构:采用精简指令集,提高了代码执行效率。
高性能:最高可达72MHz,提供了强大的处理能力。
低功耗:优化的功耗管理机制,适用于电池供电设备。
丰富的外设接口:支持多种外设接口,如UART、I2C、SPI、ADC、DAC等。
嵌入式跟踪宏单元(ETM):支持调试和性能分析。
嵌入式向量中断控制器(NVIC):高效的中断处理机制。
存储器保护单元(MPU):提供了存储器保护功能,增强了系统的安全性。
2.2工作模式
ARMCortex-M3支持以下工作模式:
线程模式:处理正常程序执行。
处理模式:处理中断和异常。
在线程模式下,处理器可以处于以下子模式:
特权模式:可以访问所有系统资源。
用户模式:只能访问受限的资源。
在处理模式下,处理器可以处理以下中断和异常:
复位:系统初始化。
未定义指令:执行了无法识别的指令。
硬件故障:检测到硬件故障。
总线故障:访问了非法的存储器地址。
使用故障:执行了非法的操作。
中断请求(IRQ):处理外部中断。
快速中断请求(FIQ):处理高优先级中断。
2.3内存映射
ARMCortex-M3的内存映射如下:
0-0x00000FFF:复位向量和中断向量表。
0-0x1FFFFFFF:系统存储器。
0-0x3FFFFFFF:片上SRAM。
0-0x5FFFFFFF:片上外设。
0-0x7FFFFFFF:外部存储器。
0-0xFFFFFFFF:保留区域。
3.ARMCortex-M3指令集
3.1指令集概述
ARMCortex-M3使用Thumb-2指令集,这是一种混合指令集,结合了16位和32位指令的优势,提供了高性能和高代码密度。Thumb-2指令集包括以下类型:
数据处理指令:处理数据操作,如加法、减法、逻辑运算等。
加载/存储指令:处理数据的加载和存储操作。
分支指令:处理程序跳转。
系统指令:处理系统控制和配置。
3.2数据处理指令
数据处理指令用于执行各种算术和逻辑运算。以下是一些常见的数据处理指令:
加法指令:
ADDR0,R1,R2;R0=R1+R2
ADDSR0,R1,#5;R0=R1+5,设置状态寄存器
减法指令:
SUBR0,R1,R2;R0=R1-R2
SUBSR0,R1,#5;R0=R1-5,设置状态寄存器
逻辑运算指令:
ANDR0,R1,R2;R0=R1R2
ORRR0,R1,R2;R0=R1|R2
EORR0,R1,R2;R0=R1^R2
3.3加载/存储指令
加载/存储指令用于从存储器中读取数据或将数据写入存储器。以下是一些常见的加载/存储指令:
加载指令:
LDRR0,[R1];R0=内存地址R1的值
LDRR0,[R1,#4];R0=内存地址R1+4的值
LDRR0,[R1,R2];R0=内存地址R1+R2的值
存储指令:
STRR0,[R1];内存地址R1的值=R0
STRR0,[R1,#4];内存地址R1+4的值=R0
STRR0,[R1,R2];内存地址R1+R2的值=R0
3.4分支指令
分支指令用于改变程序的执行流程。以下是一些常见的分支指令:
无条件分支:
Blabel;跳转到label
条件分支:
BNElabel;