本节书摘来自异步社区《嵌入式Linux应用开发完全手册》一书中的第1章,第1.2节,作者 韦东山,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.ARM的概念
嵌入式处理器种类繁多,有ARM、MIPS、PPC等多种架构。ARM处理器的文档丰富,各类嵌入式软件大多(往往首选)支持ARM处理器,使用ARM开发板来学习嵌入式开发是个好选择。基于不同架构CPU的开发是相通的,掌握ARM架构之后,在使用其他CPU时也会很快上手。当然,作为产品进行选材时,需要考虑的因素就非常多了,这不在本书的介绍范围之内。
ARM(Advanced RISC Machine),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。ARM公司是32位嵌入式RISC微处理器技术的领导者,自从1990年创办公司以来,基于ARM技术IP核的微处理器的销售量已经超过了100亿。
ARM公司并不生产芯片,而是出售芯片技术授权。其合作公司针对不同需求搭配各类硬件部件,比如UART、SDI、I2C等,设计出不同的SoC芯片。
ARM公司在技术上的开放性使得它的合作伙伴既有世界顶级的半导体公司,也有各类中、小型公司。随着合作伙伴的增多,也使得ARM处理器可以得到更多的第三方工具、制造和软件支持,又使整个系统成本降低,使新品上市时间加快,从而具有更大的竞争优势。
基于ARM的处理器以其高速度、低功耗、价格低等优点得到非常广泛的应用,它可以应用于以下领域:
① 为无级通信、消费电子、成像设备等产品提供可运行复杂操作系统的开放应用平台;
② 在海量存储、汽车电子、工业控制和网络应用等领域提供实时嵌入式应用;
③ 安全系统,比如信用卡、SIM卡等。
2.ARM体系架构的版本
ARM体系架构的版本就是它所使用的指令集的版本。ARM架构支持32位的ARM指令集和16位的Thumb指令集,后者使得代码的存储空间大大减小。还提供了一些扩展功能,比如Java加速器(Jazelle)、用以提高安全性能的TrustZone技术、智能能源管理(IEM,Intelligent Energy Manager)、SIMD和NEONTM等技术。
还在使用的ARM指令集(ISA,Instruction Set Architecture)有以下版本。
(1)ARMv4。
这是当今市场上最老的版本,ARMv4只支持32位的指令集,支持32位的地址空间。一些ARM7系列的处理器和Intel公司的StrongARM处理采用ARMv4指令集。
(2)ARMv4T。
增加了16位的Thumb指令集,它可以产生更紧凑的代码,与相同功能的ARM代码相比,可以节省超过35%的存储空间,同时具备32位代码的所有优点。
(3)ARMv5TE。
在1999年,ARMv5TE版本改进了Thumb指令集,增加了一些“增强型DSP指令”,简称为E指令集。
这些指令用于增强处理器对一些典型的DSP算法的处理性能,使得音频DSP应用可以提升70%的性能。许多系统在使用微控制器来进行各类控制的同时,还需要具备数据处理能力,传统的做法要么是使用更高级的处理器(这使得成本增加),要么是使用多个处理器(这使得系统复杂度增高)。通过E指令集可以在一个普通CPU中增加DSP的功能,这在成本、性能、简化设计等方面都有优势。
(4)ARMv5TEJ。
在2000年,ARMv5TEJ版本中增加了Jazelle技术用于提供Java加速功能。相比于仅用软件实现的Java虚拟机,Jazelle技术使得Java代码的运行速度提高8位,而功耗降低80%。
Jazelle技术使得可以在一个单核的处理器上运行Java程序、已经建立好的操作系统和应用程序。
(5)ARMv6。
在2001年,ARMv6问世。它在很多方面都有改进:存储系统、异常处理,最重要的是增加了对多媒体功能的支持。ARMv6中包含了一些媒体指令以支持SIMD媒体功能扩展。SIMD媒体功能扩展为音频/视频的处理提供了优化功能,可以使音频/视频的处理性能提高4倍。
ARMv6中还引入了Thumb-2和TrustZone技术,这是两个可选的技术。之前的版本中,ARM 指令和Thumb指令分别运行于不同的处理器状态,执行不同指令集的指令前要进行切换。Thumb-2技术增加了混合模式的功能,定义了一个新的32位指令集,可以运行32位指令与传统16位指令的混合代码。这能够提供“ARM指令级别的性能”与“Thumb指令级别的代码密度”。TrustZone技术在硬件上提供了两个隔离的地址空间:安全域(secure world)和非安全域(non-secure world),给系统提供了一个安全机制。
(6)ARMv7。
ARMv7架构使用Thumb-2技术,还使用了NEON技术,将DSP和媒体处理能力提高了近4倍,并支持改良的浮点运算,满足下一代3D图形、游戏物理应用以及传统嵌入式控制应用的需求。
Stnd001 总结
版本名中的T表示Thumb指令集,E表示增强型DSP指令,J表示Java加速器。
3.ARM处理器系列
在相同指令集下,搭配不同部件就可以组装出具有不同功能的处理器,比如有无内存管理单元、有无调试功能等。它们可以分为8个系列,系列名中有7个后缀,这些后缀可以组合,含义如下。
① T:表示支持Thumb指令集。
② D:表示支持片上调试(Debug)。
③ M:表示内嵌硬件乘法器(Multiplier)。
④ I:支持片上断点和调试点。
⑤ E:表示支持增强型DSP功能。
⑥ J:表示支持Jazelle技术,即Java加速器。
⑦ S:表示全合成式(full synthesizable)。
这8个系列中,ARM7、ARM9、ARM9E和ARM10为通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。
下面简要说明它们的特点,要了解更详细的信息请参考ARM公司的网站。(http://www.arm.com)
(1)ARM7。
ARM7系列处理器是低功耗的32位RISC微处理器,它主要用于对成本、功耗特别敏感的产品。最高可以达到130MIPS,支持Thumb 16位指令集和ARM 32位指令集。
ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ-S。其中,ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属于低端ARM处理器核。
ARM7系列的处理器没有内存管理单元(MMU)。
(2)ARM9。
与ARM7相比,ARM9的最大差别在于:有MMU和Cache。它的指令执行效率较ARM7有较大提高,最高可达到300MIPS。
ARM7系列微处理器有ARM920T和ARM922T两种类型。
(3)ARM9E。
ARM9E系列微处理器在单一的处理器内核上提供了微控制器、DSP、Java应用系统的解决方案,极大地减少了芯片的面积和系统的复杂程度。ARM9E系列微处理器提供了增强的DSP处理能力,适合于那些需要同时使用DSP和微控制器的应用场合。
ARM9E系列微处理器有ARM926EJ-S、ARM946E-S、ARM966E-S、ARM968E-S和ARM996HS共5种类型。
(4)ARM10E。
ARM10E系列微处理器具有更加杰出的高性能、低功耗特点,由于使用了新的体系结构,它拥有所有ARM系列中最高的主频。ARM10E系列微处理器采用了一种新的省电模式,支持“64-bit load-store micro-architecture”,含有浮点运算协处理器(符合IEEE 754标准,支持向量运算)。
ARM10E系列微处理器有ARM1020E、ARM1022E和ARM1026EJ-S共3种类型。
(5)ARM11。
ARM11系列微处理器是ARM公司近年推出的新一代RISC处理器,它是ARM新指令架构——ARMv6的第一代设计实现。ARM11的媒体处理能力和低功耗特点特别适用于无线和消费类电子产品,其高数据吞吐量和高性能的结合非常适合网络处理应用。另外,在实时性能和浮点处理等方面ARM11可以满足汽车电子应用的需求。基于AMRv6体系结构的ARM11系列处理器将在上述领域发挥巨大的作用。
ARM11系列微处理器有这4种类型:ARM11 MPCore,ARM1136J(F)-S,ARM1156T2(F)-S 和ARM1176JZ(F)-S。
(6)Cortex。
Cortex系列处理器是基于ARMv7架构的,分为Cortex-A、Cortex-R和Cortex-M共3类。Cortex-A为传统的、基于虚拟存储的操作系统和应用程序而设计,支持ARM、Thumb和Thumb-2指令集;Cortex-R针对实时系统设计,支持ARM、Thumb和Thumb-2指令集;Cortex-M为对价格敏感的产品设计,只支持Thumb-2指令集。
(7)SecurCore。
SecurCore系列微处理器专为安全需要而设计,提供了完善的32位RISC技术的安全解决方案,因此,SecurCore系列微处理器除了具有ARM体系结构的低功耗、高性能的特点外,还具有其独特的优势,即提供了对安全解决方案的支持。
SecurCore系列微处理器有如下类型:SecurCoreSC100、SecurCore SC200。
(8)OptimoDE Data Engines。
这是一个新的IP核,针对高性能的嵌入式信号处理应用而设计。
另外,Intel公司的StrongARM、Xscale系列处理器也属于ARM架构。Intel StrongARM处理器是便携式通信产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品。Xscale处理器是基于ARMv5TE体系结构的解决方案,是一款全性能、高性价比、低功耗的处理器。它支持16位的Thumb指令和DSP指令集,已使用在数字移动电话、个人数字助理和网络产品等场合。
本书使用S3C2410、S3C2440芯片,它们的处理器都属于ARM920T系列,版本为ARMv4T。
随着技术的发展及人们需求的增加,各种消费类电子产品的功能越来越强大,随身携带的电子设备变得“等同于PC”:上面有键盘、触摸屏、LCD等输入、输出设备,可以观看视频、听音乐,可以浏览网站、接收邮件,可以查看、编辑文档等。在工业控制领域,系统级芯片(SoC)以更低廉的价格提供了更丰富的功能,使得一个嵌入式系统可以同时完成更多的控制功能。
当系统越来越大、应用越来越多,使用操作系统很有必要。操作系统的作用有:统一管理系统资源、为用户提供访问硬件的接口、调度多个应用程序、管理文件系统等。在嵌入式领域可以选择的操作系统有很多,比如:嵌入式Linux、VxWorks、Windows CE、μC/OS-II等。
Linux的缺点在于实时性,虽然2.6版本的Linux在实时性方面有较大改进,但是仍无法称为实时操作系统。有不少变种Linux在实时性方面做了很大改进,比如RTLinux达到了硬实时,TimeSys Linux提高了实时性。这些改进的Linux版本既有遵循GPL协议的免费版本,也有要付费的商业版本。
正是由于Linux开放源代码、易于移植、资源丰富、免费等优点,使得它在嵌入式领域越来越来流行。更重要的一点,由于嵌入式Linux与PC Linux源于同一套内核代码,只是裁剪的程度不一样,这使得很多为PC开发的软件再次编译之后,可以直接在嵌入式设备上运行,这使得软件资源“极大”非富,比如各类实用的函数库、小游戏等。