ARM7

1、ARM处理器解析

ARM9、ARM11是哈佛结构,5级流水线结构,所以性能要高一点。ARM9和ARM11大多带内存管理器,跑操作系统好一点,ARM7适合裸奔。我们惯称的 ARM9系列中又存在ARM9与ARM9E两个系列,其中ARM9 属于ARM v4T架构,典型处理器如ARM9TDMI和ARM922T;而ARM9E属于ARM v5TE架构,典型处理器如ARM926EJ和ARM946E。因为后者的芯片数量和应用更为广泛,所以我们提到ARM9的时候更多地是特指ARM9E系列处理器(主要就是ARM926EJ和ARM946E这两款处理器)。下面关于ARM9的介绍也是更多地集中于ARM9E。

2、ARM7处理器和ARM9E处理器的流水线差别

对嵌入式系统设计者来说,硬件通常是第一考虑的因素。针对处理器来说,流水线则是硬件差别的最明显标志,不同的流水线设计会产生一系列硬件差异。

让我们来比较一下ARM7和ARM9E的流水线,ARM9E从ARM7的3级流水线增加到了5级,ARM9E的流水线中容纳了更多的逻辑操作,但是每一级的逻辑操作却变得更为简单。比如原来 ARM7的第三级流水,需要先内部读取寄存器、然后进行相关的逻辑和算术运算,接着处理结果回写,完成的动作非常复杂;而在ARM9E的5级流水中,寄存器读取、逻辑运算、结果回写分散在不同的流水当中,使得每一级流水处理的动作非常简洁。这就使得处理器的主频可以大幅度地提高。因为每一级流水都对应 CPU的一个时钟周期,如果一级流水中的逻辑过于复杂,使得执行时间居高不下,必然导致所需的时钟周期变长,造成CPU的主频不能提升。所以流水线的拉长,有利于CPU主频的提高。在常用的芯片生产工艺下,ARM7一般运行在100MHz左右,而ARM9E则至少在200MHz以上。

3、ARM9E处理器的存储器子系统

像ARM926EJ 和ARM946E这两个最常见的ARM9E处理器中,都带有一套存储器子系统,以提高系统性能和支持大型操作系统。如图2所示,一个存储器子系统包含一个 MMU(存储器管理单元)或MPU(存储器保护单元)、高速缓存(Cache)和写缓冲(Write Buffer);CPU通过该子系统与系统存储器系统相连。

高速缓存和写缓存 的引入是基于如下事实,即处理器速度远远高于存储器访问速度;如果存储器访问成为系统性能的瓶颈,则处理器再快也是浪费,因为处理器需要耗费大量的时间在 等待存储器上面。高速缓存正是用来解决这个问题,它可以存储最近常用的代码和数据,以最快的速度提供给CPU处理(CPU访问Cache不需要等待)。

4、复杂处理器内部的存储器子系统

MMU则是用来支持存储器管理的硬件单元,满足现代平台操作系统内存管理的需要;它主要包括两个功能:一是支持虚拟/物理地址映射,二是提供不同存储器地址空间的保护机制。一个简单的例子可以帮助我们理解MMU的功能,在一个操作系统下,程序开发人员都是在操作系统给定的API和编程模型下开发程序;操作系统通常只开放一个确定的存储器地址空间给用户。这样就带来 一个直接的问题,所有的应用程序都使用了相同的存储器地址空间,如果这些程序同时启动的话(在现在的多任务系统中这是非常常见的),就会产生存储器访问冲 突。那操作系统是如何来避免这个问题的呢?

操作系统会利用MMU硬件单元完成 存储器访问虚拟地址到物理地址的转换。所谓虚拟地址就是程序员在程序中使用的逻辑地址,而物理地址则是真实存储器单元的空间地址。MMU通过一定的规则, 可以把相同的虚拟地址映射到不同的物理地址上去。这样,即使有多个使用相同虚拟地址的程序进程启动,也可以通过MMU调度把它们映射到不同的物理地址上 去,不会造成系统错误。

5、MMU的功能和作用

MMU 处理地址映射功能之外,还能给不同的地址空间设置不同的访问属性。比如操作系统把自己的内核程序地址空间设置为用户模式下不可访问,这样的话用户应用程序 就无法访问到该空间,从而保证操作系统内核的安全性。MPU与MMU的区别在于它只有给地址空间设置访问属性的功能而没有地址映射功能。

Cache以及MMU等硬件单元的引入,给系统程序员的编程模型带来了许多全新的变化。除了需要掌握基本的概念和使用方法之外,下面几个针对系统优化的点既有趣又重要:

1.系统实时性考虑因素
为保存地址映射规则的页表(Page Table)非常庞大,通常MMU中只是存储器了常用的一小段页表内容,大部分页表内容都存储于主存储器里面;当调用新的地址映射规则时,MMU可能需要 读取主存储器来更新页表。

这在某些情况下会造成系统实时性的丢失。比如当需要执行一段关键的程序代码时,如果不巧这段代码使用的地址空间不在当前MMU的 页表处理范围里面,则MMU首先需要更新页表,然后完成地址映射,接着才能相应存储器访问;整个地址译码过程非常长,给实时性带来非常大的不利影响。所以一般来说带MMU和Cache的系统在实时性上不如一些简单的处理器;不过也有一些办法能够帮助提高这些系统的实时效率。

一个简单的办法是在需要的时候关闭MMU和Cache,这样就变成一个简单处理器了,可以马上提高系统实时性。当然很多情况下这不可行;在ARM的MMU和 Cache设计中,有一个锁定的功能,就是说你可以指定某一块页表在MMU中不会被更新掉,某一段代码或数据可以在Cache中锁定而不会被刷新掉;程序 员可以利用这个功能来支持那些实时性要求最高的代码,保证这些代码始终能够得到最快的响应和支持。

2.系统软件优化
在嵌入式系统开发中,很多系统软件优化的方法都是相同和通用的,多数情况下这种规则也适用于ARM9E架构上。如果你已经是一个ARM7的编程高手,那么恭 喜你,以前你掌握的优化方法完全可以用在新的ARM9E平台上,但是会有一些新的特性需要你加倍注意。最重要的便是Cache的作用,Cache本身并不 带来编程模型和接口的变化,但是如果我们考察Cache的行为,就能够发现对于软件优化,Cache是有比较大的影响的。

Cache 在物理上就是一块高速SRAM,ARM9E的Cache组织宽度(cache line)都是4个word(也就是32个字节);Cache的行为受系统控制器控制而不是程序员,系统控制器会把最近访问存储器地址附近的内容复制到 Cache中去,这样,当CPU访问下一个存储器单元的时候(这个访问既可能是取指,也可能是数据),可能这个存储器单元的内容已经在Cache里了,所 以CPU不需要真的到主存储器上去读取内容,而直接读取Cache高速缓存上面的内容就可以了,从而加快了访问的速度。

从Cache的工作原理我们可以看 到,其实Cache的调度是基于概率的,CPU要访问的数据既可能在Cache中已经存在(Cache hit),也可能没有存在(Cache miss)。在Cache miss的情况下,CPU访问存储器的速度会比没有Cache的情况更坏,因为CPU除了要从存储器访问数据以外,还需要处理Cache hit或miss的判断,以及Cache内容的刷新等动作。只有当Cache hit带来的好处超过Cache miss带来的牺牲的时候,系统的整体性能才能得到提高,所以Cache的命中率成为一个非常重要的优化指标。

根据Cache行为的特点,我们可以直观地得到提高Cache命中率的一些方法,如尽可能把功能相关的代码和数据放置在一起,减少跳转次数;跳转经常会引起 Cache miss。保持合适的函数大小,不要书写太多过小的函数体,因为线性的程序执行流程是最为Cache友好的。循环体最好放置在4个word对齐的地址,这 样就能保证循环体在Cache中是行对齐的,并且占用最少的Cache行数,使得被多次调用的循环体得到更好的执行效率。

6、性能和效率的提升

前面介绍了ARM9E相比于ARM7性能上的提高,这不仅表现在ARM9E有更快的主频、更多的硬件特性上面,还体现在某些指令的执行效率上面。执行效率我 们可以用CPU的时钟周期数(Cycle)来衡量;运行同一段程序,ARM9E的处理器可以比ARM7节省大约30%左右的时钟周期。

效率的提高主要来自于ARM9E对于Load-Store指令执行效率的增强。我们知道在RISC架构的处理器中,程序中大约有30%的指令是Load- Store指令,这些指令的效率对系统效率的贡献是最明显的。ARM9E中有两个因素帮助提高Load-Store指令的效率:

1)ARM9内核是哈佛架构,拥有独立的指令和数据总线;相对应,ARM7内核是指令和数据总线复用的冯诺依曼架构。

2)ARM9的5级流水线设计把存储器访问和寄存器写回放在不同的流水上面。

两者结合,使得在指令流的执行过程中每个CPU时钟周期都可以完成一个Load或Store指令。下面的表格比较了ARM7和ARM9处理器之间的Load -Store指令。从中可以看出所有的Store指令ARM9比ARM7省1个周期,Load指令可以省2个周期(在没有互锁的情况下,编译工具能够通过 编译优化消除大多数的互锁可能)。

综合各种因素,ARM9E处理器拥有非常强大的性能。但是在实际的系统设计中,设计人员并不总是把处理器性能开到最大,理想情况是把处理器和系统运行频率降低,使得性能刚好能满足应用需求;达到节省功耗和成本的目的。在评估系统能够提供的处理器能力过程中,DMIPS指标被很多人采用;同时它也被广泛应用于不同处理器间的性能比较。

但是用DMIPS来衡量处理器性能存在很大的缺陷。 DMIPS并非字面上每秒百万条指令的意思,它是一个测量 CPU运行一个叫Dhrystone的测试程序时表现出来的相对性能高低的一个单位(很多场合人们也习惯用MIPS作为这个性能指标的单位)。因为基于程 序的测试容易受到恶意优化的干扰,并且DMIPS指标值的发布不受任何机构的监督,所以使用DMIPS进行评估时要慎重。例如对Dhrystone测试程 序进行不同的编译处理,在同一个处理器上运行也可以得出差别很大的结果。

DMIPS 另外一个缺点是不能测量处理器的数字信号处理能力和Cache/MMU子系统的性能。因为Dhrystone测试程序不包含DSP表达式,只包含一些整型 运算和字符串处理,并且测试程序偏小,几乎可以完整地放在Cache里面运行而无需与外部存储器进行交互。这样就难以反映处理器在一个真实系统中的真正性 能。

一种值得鼓励的评估方法是站在系统的角度看问题,而不仅仅拘泥于CPU本身;而系统性能评估最好的测试向量就是用户应用程序或相近的测试程序,这是用户所需的最真实的结果。

7、ARM9E处理器的DSP运算能力

伴随应用程序的多样化和复杂化,诸如多媒体、音视频功能在嵌入式系统里面也是全面开花。这些应用需要相当的DSP处理能力;如果是在传统的RISC架构上实 现这些算法,所需的资源(频率和存储器等)会非常不经济。ARM9E处理器一个非常重要的优势就是拥有轻量级的DSP处理能力,以非常小的成本(CPU增 加功能需要增加硬件)换来了非常实用的DSP性能。

因为CPU的DSP能力并不直接反映在像DMIPS这样的评测指标中,同时像以前的ARM7处理器中也没有类似的概念;所以这一点对所有使用ARM9E处理器进行开发的人来说,都是需要注意的一个要点。

ARM9E的DSP扩展指令,主要包括三个类型:

1)单周期的16x16和32x16 MAC操作,因为数字信号处理中甚少32位宽的操作数,在32位寄存器中可以对操作数分段运算显得非常有用。

2)对原有的算术运算指令增加了饱和处理扩展,所谓饱和运算,就是当运算结果大于一个上限或小于一个下限时,结果就等于上限或是下限;饱和处理在音频数据和视频像素处理中普遍使用,现在一条单周期饱和运算指令就能够完成普通RISC指令“运算-判断-取值”这一系列操作。

3)前导零(CLZ)运算指令,提高了归一化和浮点运算以及除法操作的性能。

以流行的MP3解码程序为例。整个解码过程中前端的三个步骤是运算量最大的,包括比特流的读入(解包)、霍夫曼译码还有反量化采样(逆变换)。ARM9E的 DSP指令正好可以高效地完成这些运算。以44.1 KHz@128 kbps码率的MP3音乐文件为例,ARM7TDMI需要占用20MHz以上的资源,而ARM926EJ则只要小于10MHz的资源在 从ARM7到ARM9的平台转变过程中,有一件事情是非常值得庆幸的,即ARM9E能够完全地向后兼容ARM7上的软件;并且开发人员面对的编程模型和架 构基础也保持一致。但是毕竟ARM9E中增加了很多新的特性,为了充分利用这些新的资源,把系统性能优化好,需要我们对ARM9E做更多深入地了解。

转自:嵌入式资讯精选

围观 578

为了更好的将USB的通用性和CAN的专业性结合起来,通过计算机的USB接口接入CAN专业网络,实现系统控制的便利性和应用的高效性,本文讲述了一种基于ARM7处理器实现USB接口与CAN总线的实例,通过其可以在PC实现对CAN总线上设备的监控。

1、硬件系统设计

1.1 处理器简介及其外围电路设计

主控制器选用NXP公司的ARM7核处理器LPC2119。LPC2119是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-STM CPU,并带有128 KB嵌入的高速FLASH存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。实行流水线作业,提供Embedded ICE逻辑,支持片上断点和调试点,具有先进的软件开发和调试环境。LPC2119具有非常小的64脚封装、极低的功耗、多个32位定时器、4路10位ADC、2路CAN、PWM通道、多个串行接口,包括2个16C550工业标准UART、高速I2C接口(400 kHz)和2个SPI接口,46个GPIO以及多达9个外部中断,特别适用于汽车、工业控制应用以及医疗系统和容错维护总线。

LPC2119内部集成2个CAN控制器,每一个CAN控制器都与独立CAN控制器SJA1000有着相似的寄存器结构。它的主要特性有:单个总线上的数据传输速率高达1 Mb/s;32位寄存器和RAM访问;兼容CAN2.0B,ISO11898-1规范;全局验收滤波器可以识别所有的11位和29位标识符;验收滤波器为选择的标准标识符提供Full CAN-style自动接收。图1所示为LPC2119外围电路,为保证可靠复位,采用外部复位电路STM809。

基于ARM7处理器的USB接口与CAN总线的实例
图1 LPC2119外围电路

1.2 USB接口电路设计

USB接口采用沁恒电子的CH375。CH375是一个USB总线的通用接口芯片,支持USB-HOST主机方式和USB-DEVICE/SLAVE设备方式。在本地端,CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。CH375提供了串行通信方式,通过串行输入、串行输出和中断输出与单片机/DSP/MCU/MPU等相连接。图2所示为CH375的接口电路。

基于ARM7处理器的USB接口与CAN总线的实例
图2 USB接口电路

1.3 CAN总线接口电路设计

CAN总线收发器采用82C250,并选用6N137作隔离,LPC2119的TD和RD引脚不是直接与82C250的TX、RX引脚相连,而是通过高速光耦6N137与82C250相连,这样可增强CAN总线节点的抗干扰能力,从而实现总线各节点间电气隔离。高速光耦6N137用于保护LPC2119内部CAN总线控制器,该光耦两侧采用5 V的DC-DC电源,可使器件的VCC与VCC1完全隔离,提高系统的抗干扰能力以及节点的稳定性和安全性。图3所示为LPC2 119与CAN驱动器82C250的连接电路。DC-DC电源模块采用B0505LS-2W,电路在图4中所示。

基于ARM7处理器的USB接口与CAN总线的实例
图3 CAN驱动器82C250的连接电路

基于ARM7处理器的USB接口与CAN总线的实例
图4 DC-DC隔离电路

1.4 系统电源设计

整个电路的电源由USB供电,由于LPC2119的IO电路电源要求为3.3 V,内核电路电源要求为1.8 V,在本应用中采用两片低压差线性温压器(LDO)1117为系统供电,如图4所示。

1.5 系统PCB设计

整个系统的PCB采用双面板方式设计,大小为100×120,布局及外形如图5所示。

基于ARM7处理器的USB接口与CAN总线的实例
图5 布局及外形

2、固件设计

本系统软件设计时采用μVision3 IDE,μVision3IDE是一个窗口化的软件开发平台,它集成了功能强大的编辑器、工程管理器以及各种编译工具(包括C编译器、宏汇编器、链接/装载器和16进制文件转换器),通过ULINK仿真调试。程序框架采用传统的前后台方式。CAN控制器驱动程序包括4部分内容:CAN控制器的初始化、报文的接收、报文的发送和总线异常处理。由于LPC2119没有开发内部读写总线,本设计在对CH375操作时使用通用I/O模拟并口读写时序,其端口定义方式如下:

基于ARM7处理器的USB接口与CAN总线的实例

程序在使用通用I/O模拟并口读写时序对CH375的基本操作包括CPU端口初始化、向CH375写命令、向CH375写数据、从CH375读数据,其实现过程包含:初始化void CH375_PORT_INIT();向CH375写命令void xWriteCH375Cmd(uint8 mCmd);向CH375写数据void xWrite CH375 Data(uint8 mData);从CH375读数据uint8 xReadCH375Data(void)等4个基本函数。

3、结语

本系统设计采用内置CAN控制器的LPC2119作为主控制器,CH375作为USB接口芯片,实现USBCAN转换器,论述了LPC2119的外围电路、CAN总线驱动电路以及LPC2119与CH375之间的接口连接,并在软件给出LPC2119使用通用I/O模拟并口读写时序的方法,对LPC2119,CH375及CAN总线的实际应用具有一定的参考价值。

来源:畅学电子网

围观 392

1 引言

在现代装甲通信指挥装备中,功能强大、控制精确、运行可靠的装备,均由越来越多的电子分机、部件通过密集的线缆、线束、网络连接而成。

线缆、网络连接的正确性和可靠性,在保障整个电子系统可靠运行中起了重要的作用。对复杂线缆、线束、网络的导通、绝缘等指标的自动测试和检验,是线缆装配、生产过程中不可缺少的一个环节。传统的低压、低电流的手工、半自动测试,已经远远不能满足现代高可靠电子设备生产的需要。

目前装甲通信指挥装备的线缆检测,均采用传统的、落后的手工检测方式,用三用表、蜂鸣器及自制简单的测试台检测通断。手工检测方法存在不能克服的许多缺陷,已不能满足大批量、高精度、高可靠性线缆检测的要求:

(1)1人或2人配合逐点检测,效率低、速度慢、工作量大、精细、繁琐、枯燥、易疲劳,需对照图纸、接线表、芯线号,极易造成漏检、错检。

(2)只能检测通路,不能在数十芯线缆中检测出短路(即错接、多接)。

(3)一般只检测通断,不检测导通电阻,不能查出接触不良、不可靠的接点。

基于上述原因,目前急需研制一种能进行自动测最装甲通信指挥装备电缆的专用检测设备。

2 系统设计原理

系统结构如图1所示。

基于ARM7核的线缆自动测试仪的设计实现
 

各部分功能块功能如下:

2.1 PC机

PC机的主要功能是内置"电缆管理系统",包括:电缆型号、规格,插座型号规格、电缆型谱等,以及测试检测结果的存贮与分析等功能。

2.2 主机

主机中存有从"电缆管理系统"通过串口下载的所测电缆的型谱,最多可存150种电缆的型谱,测试时不需与PC机相联,显示方式采用320×240宽温LCD显示屏。测试时主机通过无线按被选中的被测电缆的型谱向从机发送测试命令,主机与从机实时配合完成测量。

2.3 从机

从机由程控开关矩阵及负载组成,接收主机的测试命令。

2.4 电缆专用转换接头

电缆专用转换接头是将被测电缆通过该转换接头分别与主机和从机连接,完成测量,每一种被测电缆需要定制一对转换接头。

3 系统平台上的硬件系统

主机由主控单元、收发单元、开关矩阵、显示与键盘、电源等组成,其结构如图2所示。

基于ARM7核的线缆自动测试仪的设计实现

3.1 简介

是基于32位核的一体化系统集成芯片(SoC),他包括一个由ARM公司设计的32位TDMI RISC处理器核,Cache RAM,一个写缓冲以及存储管理单元。具有低功耗、高性能的特点。

3.2 显示控制板框图

显示控制板框图如图3所示。 

基于ARM7核的线缆自动测试仪的设计实现

显示与键盘控制系统由CPU、显示、键盘、RS 232接口及数据交换组成。其中CPU为,为了满足储存部分数据的需要而使用了32 kB的E2PROM作为数据存储器来存储部分测试结果。显示部分采用了OKI公司的MSM6255作为显示控制器,外接32 kB的RAM作为显示数据的存储器,MSM6255产生的行同步信号、场同步信号、显示数据被送往EL显示屏。键盘部分用8279作键盘控制器。为实现外接计算机对仪器的控制,系统中使用厂MAX202作为接口电平转换控制,以RS 232接口与外部连缓。

3.3 从机框图

从机框图如图4所示。收发模块采用以nrf401单片收发模块为核心加上外围电路所构成,工作频率为133.92 MHz,调制方式为FSK,最大传输速率20 kb/s。内置天线,最大直线传输距离为100 m。

基于ARM7核的线缆自动测试仪的设计实现

4 系统平台上的软件系统

4.1 通断测试算法设计

4.1.1 建立端口关系矩阵

端口关系矩阵设计如表1所示。 

基于ARM7核的线缆自动测试仪的设计实现

注:
(1)该矩阵用于芯和端口的对应关系描述;
(2)N=61:
(3)该矩阵对应电缆型谱;
(4)上三角阵有效,包括对角线;
(5)0:表示不连接;1:表示连接;X:表示无效。

4.1.2 建立线缆关系矩阵

注:
(1)该矩阵用于短路判断(结果写入表2)和部分通路判断(结果写入表3);
(2)M为电缆最大芯数(2≤M≤61);
(3)上三角阵有效,不包括对角线;
(4)0:表示无效;
(5)X初始为0;X=3短;X=4测量失败(无线通信出错)。

4.1.3 短路测量

从线缆关系矩阵的第一行开始,逐行扫描上三角阵。

测量过程中,若结果为短路,置X=3,若结果为测量失败,置X=4,继续。

扫描测量过程中,若结果为通,将通的两芯LX和HY中的芯号对应基准测量列表的列号做变换。

基准测量列表(表3)列号:

[LX]=LX;[LY]=HY

置基准测量列表列号[LX]和[LY]的状态X=1,继续X=1逐行扫描上三角阵。

基准芯定义:任意两芯测量为通的其中一芯为基准芯。

该列表用于通和断结果的存储。

X初始为0;X=1为通;X=2为断;X=4测量失败(无线通信出错)。

扫描表3找基准芯,若全部X为0则线缆全部为断;若X为1则将对应的LX列号作为基准芯。

用基准芯去判断表3中X为0的芯,若为通,置X=1;若为断,置X=2;若为测量失败,置X=4。

4.1.4 电缆通断测量的处理流程

基于ARM7核的线缆自动测试仪的设计实现

5 结 语

通断仪可对2~60芯以内的专用电缆进行自动测量,
主要特点有:
(1)自动、快速榆测电缆通断,750点/s测试速度使数十芯的复杂线缆能在数秒中完成通断检测。
(2)自动分组排列组合短路测试,检测出所有可能存在的短路错误(即错接、多接)。
(3)程序控制自动测试过程,可随时多次检测线缆,便于质量管理,大大提高工作效率。
(4)检测出接点电阻微小变化,查出接触不良、导线芯线断股、并联线漏接等质量隐患。
(5)使用方便.只需单人操作,人机界面友好,手持式检测设备,超低功耗。
(6)可存贮512种电缆的型谱,型潜输入可通过通信接口从PC机中下载,测量结果可以存贮,并传送至管理系统。

围观 462

要使用低成本的32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。

1.ARM实现方法

ARM Cortex-M3是一种基于ARM7v架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼结构下,数据和指令共用一条总线)。从本质上来说,哈佛结构在物理上更为复杂,但是处理速度明显加快。根据摩尔定理,复杂性并不是一件非常重要的事,而吞吐量的增加却极具价值。

ARM公司对Cortex-M3的定位是:向专业嵌入式市场提供低成本、低功耗的芯片。在成本和功耗方面,Cortex-M3具有相当好的性能,ARM公司认为它特别适用于汽车和无线通信领域。和所有的ARM内核一样,ARM公司将内该设计授权给各个制造商来开发具体的芯片。迄今为止,已经有多家芯片制造商开始生产基于Cortex-M3内核的微控制器。

ARM7TDMI(包括ARM7TDMIS)系列的ARM内核也是面向同一类市场的。这类内核已经存在了十多年之久,并推动了ARM成为处理器内核领域的主导者。众多的制造商出售基于ARM7系列的处理器以及其他配套的系统软件、开发和调试工具。在许多方面,ARM7TDMI都可以称得上是嵌入式领域的实干家。

2.两者差异

除了使用哈佛结构,Cortex-M3还具有其它显著的优点:具有更小的基础内核,价格更低,速度更快。与内核集成在一起的是一些系统外设,如中断控制器、总线矩阵、调试功能模块,而这些外设通常都是由芯片制造商增加的。Cortex-M3还集成了睡眠模式和可选的完整的八区域存储器保护单元。它采用THUMB-2指令集,最大限度降低了汇编器使用率。

3.指令集

ARM7可以使用ARM和Thumb两种指令集,而Cortex-M3只支持最新的Thumb-2指令集。这样设计的优势在于:

●免去Thumb和ARM代码的互相切换,对于早期的处理器来说,这种状态切换会降低性能。

●Thumb-2指令集的设计是专门面向C语言的,且包括If/Then结构(预测接下来的四条语句的条件执行)、硬件除法以及本地位域操作。

●Thumb-2指令集允许用户在C代码层面维护和修改应用程序,C代码部分非常易于重用。

●Thumb-2指令集也包含了调用汇编代码的功能:Luminary公司认为没有必要使用任何汇编语言。

●综合以上这些优势,新产品的开发将更易于实现,上市时间也大为缩短。

4.中断

Cortex-M3的另一个创新在于嵌套向量中断控制器NVIC(Nested Vector Interrupt Controller)。相对于ARM7使用的外部中断控制器,Cortex-M3内核中集成了中断控制器,芯片制造厂商可以对其进行配置,提供基本的32个物理中断,具有8层优先级,最高可达到240个物理中断和256个中断优先级。此类设计是确定的且具有低延迟性,特别适用于汽车应用。

NVIC使用的是基于堆栈的异常模型。在处理中断时,将程序计数器,程序状态寄存器,链接寄存器和通用寄存器压入堆栈,中断处理完成后,在恢复这些寄存器。堆栈处理是由硬件完成的,无需用汇编语言创建中断服务程序的堆栈操作。

中断嵌套是可以是实现的。中断可以改为使用比之前服务程序更高的优先级,而且可以在运行时改变优先级状态。使用末尾连锁(tail-chaining)连续中断技术只需消耗三个时钟周期,相比于32个时钟周期的连续压、出堆栈,大大降低了延迟,提高了性能。

如果在更高优先级的中断到来之前,NVIC已经压堆栈了,那就只需要获取一个新的向量地址,就可以为更高优先级的中断服务了。同样的,NVIC不会用出堆栈的操作来服务新的中断。这种做法是完全确定的且具有低延迟性。

5.睡眠

Cortex-M3的电源管理方案通过NVIC支持Sleep Now,Sleep on Exit,(退出最低优先级的ISR)和SLEEPDEEP modes这三种睡眠模式。

为了产生定期的中断时间间隔,NVIC还集成了系统节拍计时器,这个计时器也可以作为RTOS和调度任务的心跳。这种做法与先前的ARM架构的不同之处就在于不需要外部时钟。

6.存储器保护单元

存储器保护单元是一个可选组建。选用了这个选项,内存区域就可以与应用程序特定进程按照其他进程所定义的规则联系在一起。例如,一些内存可以完全被其他进程阻止,而另外一部分内存能对某些进程表现为只读。还可以禁止进程进入存储器区域。可靠性,特别是实时性因此得到重大改进。

围观 483
订阅 RSS - ARM7