购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 ARM嵌入式系统的硬件构成

由于ARM公司成功的商业模式,使得ARM在嵌入式市场上取得了巨大的成功。基于ARM技术的微处理器系统占据了32位RISC微处理器75%以上的市场份额。目前嵌入式行业主流的ARM微处理器包括Cortex、ARM7、ARM9、Xscale等几个系列,这些系列的架构特点如表1.2所示。

表1.2 常见ARM微处理器系列

对于上表中所列出的各种型号ARM嵌入式微处理器,都利用ARM公司的IP授权为ARM内核定制了各种各样的设备。各个芯片开发商在此基础上形成了上述ARM微处理器芯片。同样,用户也可以结合图1.15查看ARM处理器的分类。

图1.15 ARM嵌入式处理器的分类

1.3.1 ARM嵌入式处理器结构

一般而言,ARM嵌入式芯片主要由32位ALU、31个32位通用寄存器和6个状态寄存器、32×8位乘法器、32×32位桶形移位寄存器、指令译码及控制逻辑、指令流水线和数据/地址寄存器组成,如图1.16所示。

图1.16 ARM嵌入式处理器的结构

在ARM处理器结构中,使用了流水线技术以提高处理器指令的运行速度。在流水线操作中,允许多个操作同时进行,以及处理和存储系统连续操作。以3级流水线为例,指令的执行分为以下3级。

1)取指级

在取指级中,处理器主要完成程序存储器中指令的读取,并放入指令流水线中等候处理。

2)译码级

在译码级中,对指令进行译码,为下一个周期的操作运行准备数据路径所需要的控制信号。在译码级操作中,处理器占用“译码逻辑”而不使用“数据路径”。

3)执行级

在执行级指令中,处理器使用“数据路径”,寄存器堆栈被读取,操作数在桶形移位寄存器中进行移位操作,ALU(算术运算寄存器)产生相应的运算结果并回写到目的寄存器中。ALU的计算结果根据指令要求更改状态寄存器的条件位。

1.3.2 ARM嵌入式处理器中的指令

指令是指用来指示ARM嵌入式处理器进行操作的命令。下面这行代码就是一条常用的ARM指令。

该指令用来将寄存器R1中的值加上0x33,然后将计算的结果保存到寄存器R0中。需要注意的是,在汇编语言中,分号“;”用来对代码进行注释,以增加代码的可读性和可维护性。

一般情况下,不同类型的ARM处理器会支持不同的指令集。在常用的ARM嵌入式系统中,处理器可以支持两种不同的指令模式和指令集:32位的ARM指令集(ARM模式)和16位的Thumb指令集(Thumb模式)。

需要提醒用户注意的是,虽然ARM嵌入式系统开发中大多数应用程序都采用了C语言进行编程,但也不能忽视汇编语言的功能。因为汇编语言是所有编程语言中效率最高、最直接的编程方法。通过汇编语言,用户可以直接对ARM处理器底层的寄存器进行操作。

在ARM指令集中就是以汇编程序语言为基础设计的。在基于ARM的嵌入式系统开发中,即使大部分代码都可以用C语言或者其他高级语言来实现,但系统的引导程序、启动代码仍必须使用汇编语言来实现。在本书的第2章,将详细向读者介绍有关ARM指令集的相关内容。

1.3.3 ARM硬件配置

用户在进行ARM嵌入式系统开发之前,需要对ARM处理器的硬件配置有一定的了解。在这里,针对常用的车载ARM嵌入式芯片STM32F103XX,以Cortex-M3内核为例,详细介绍ARM的硬件配置。

Cortex-M3是一个32位ARM处理器内核。内部的数据宽度是32位的,寄存器也是32位的,存储器的接口同样也是32位的。与常用的ARM嵌入式处理器一样,Cortex-M3采用了哈佛结构,拥有独立的指令总线和数据总线,可以同时进行取址操作和数据访问操作。

采用哈佛结构的数据/指令存储方式,处理器在访问数据的时候不再占用数据总线,从而提升了系统处理的性能。为进一步提高ARM处理器的处理能力,CM3的内部结构中包含了多条总线接口方式,每条总线都专门为特定的应用场合进行综合优化,并可以多条总线并行工作。

图1.17 Cortex-M3中的寄存器组

1.CM3中的寄存器组

在CM3处理器中包含了R0~R15寄存器组,如图1.17所示。其中,R13为堆栈指针SP。需要注意的是,SP寄存器有两个,但在同一时刻,用户只能看到其中的某一个,也就是所谓的“banked”寄存器。

其中,R0~R12为通用寄存器,都是32位的寄存器,主要用于ARM处理器内部的数据操作,但在ARM指令集中,并不是所有的语句都可以访问R0~R12寄存器。其中,绝大部分的16位Thumb指令只能访问R0~R7寄存器,而32位的Thumb-2指令则可以访问所有的寄存器。

2.嵌套向量中断控制器

Cortex-M3在ARM内核上搭载了一个终端控制器,即嵌套向量终端控制器(NVIC,NestedVectored Interrupt Controller),它与ARM内核紧密耦合,并提供如下功能:

● 支持系统嵌套中断;

● 支持向量中断;

● 支持动态调整中断优先级;

● 较短的中断延迟;

● 可屏蔽系统中断。

3.存储器映射

总体而言,Cortex-M3可以支持4GB的存储空间,并且被划分为若干区域,具体如图1.18所示。

图1.18 存储器映射成若干区域

从图1.18中可以看出,与其他ARM处理器不同的是,在Cortex-M3内核中,系统预先定义了存储器映射框架。通过将片上外设的寄存器映射到外设区,就可以实现以访问内存的方式来访问外部存储器,从而控制外设的工作。

4.存储器保护单元

在Cortex-M3中有一个可选的存储器保护单元。通过存储器保护单元可以对特权级访问和用户级访问分别实现不同的访问限制。在系统运行的过程中,当检测到权限犯规(Violated)时,存储器会产生一个fault的异常。这个异常可以由fault异常的服务例程来分析,同时也可以对其进行更正。 fyVf2NsJd8C8rSx6c1FEhqfhVu6ZVw1v5oH3lEnr9phFeRnrfYmIui1EG+4Od18Q

点击中间区域
呼出菜单
上一章
目录
下一章
×