开源 Windows nginx google Firefox 程序员 mysql php linux shell centos apache Python Android 编程 Ubuntu wordpress java 微软 云计算

1.2 基於ARM處理器的嵌入式Linux系統

1.2 基於ARM處理器的嵌入式Linux系統

1.2.1 ARM處理器介紹

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。

1.2.2 在嵌入式系統中選擇嵌入式Linux的理由

隨著技術的發展及人們需求的增加,各種消費類電子產品的功能越來越強大,隨身攜帶的電子設備變得“等同於PC”:上面有鍵盤、觸摸屏、LCD等輸入、輸出設備,可以觀看視頻、聽音樂,可以瀏覽網站、接收郵件,可以查看、編輯文檔等。在工業控制領域,系統級芯片(SoC)以更低廉的價格提供了更豐富的功能,使得一個嵌入式系統可以同時完成更多的控制功能。

當系統越來越大、應用越來越多,使用操作系統很有必要。操作系統的作用有:統一管理系統資源、為用戶提供訪問硬件的接口、調度多個應用程序、管理文件系統等。在嵌入式領域可以選擇的操作系統有很多,比如:嵌入式Linux、VxWorks、Windows CE、μC/OS-II等。

VxWorks是美國WindRiver公司開發的嵌入式實時操作系統。單就性能而言,它是非常優秀的操作系統,具有可裁剪的微內核結構、高效的任務管理、靈活的任務間通信、微秒級的中斷處理,支持POSIX 1003.1b實時擴展標準,支持多種物理介質及標準、完整的TCP/IP網絡協議等。缺點是它支持的硬件相對較少,並且源代碼不開放,需要專門的技術人員進行開發和維護,並且授權費比較高。
Windows CE是微軟公司針對嵌入式設備開發的32位、多任務、多線程的操作系統。它支持x86、ARM、MIPS、SH等架構的CPU,硬件驅動程序豐富,比如支持WiFi、USB 2.0等新型設備,並具有強大的多媒體功能;可以靈活裁剪以減小系統體積;與PC上的Windows操作系統相通,開發、調試工具使用方便,應用程序的開發流程與PC上的Windows程序的開發流程相似,就開發的便利性而言(特別是對於習慣在Windows下開發的程序員),Windows CE是最好的,但是,其源代碼沒有開放(目前開放了一小部分),開發人員難以進行更細致的定制;占用比較多的內存,整個系統相對龐大;版權許可費用也比較高。
μC/OS-II是Micrium公司開發的操作系統,可用於8位、16位和32位處理器。可裁剪,對硬件要求較低;可以運行最多64個任務;調度方式為搶占式,即總是運行最高優先級的就緒任務。用戶可以獲得μC/OS-II的全部代碼,但它不是開放源碼的免費軟件,作為研究和學習,可以通過購買相關書藉獲得源碼,用於商業目的時,必須購買其商業授權。相對於其他按照每個產品收費的操作系統,μC/OS-II采用一次性的收費方式,價格低廉。需要說明的是,μC/OS-II僅是一個實時內核,用戶需要完成其他更多的工作,比如編寫硬件驅動程序、實現文件系統操作(使用文件的話)等。
Linux是遵循GPL協議的開放源碼的操作系統,使用時無需交納許可費用。內核可任意裁剪,幾乎支持所有的32位、64位CPU;內核中支持的硬件種類繁多,幾乎可以從網絡上找到所有硬件驅動程序;支持幾乎所有網絡協議;有大量的應用程序可用,從編譯工具、調試工具到GUI程序,幾乎都有遵循GPL協議的相關版本;有龐大的開發人員群體,有數量眾多的技術論壇,大多問題都可以得到快速而免費的解答。
Linux的缺點在於實時性,雖然2.6版本的Linux在實時性方面有較大改進,但是仍無法稱為實時操作系統。有不少變種Linux在實時性方面做了很大改進,比如RTLinux達到了硬實時,TimeSys Linux提高了實時性。這些改進的Linux版本既有遵循GPL協議的免費版本,也有要付費的商業版本。

正是由於Linux開放源代碼、易於移植、資源豐富、免費等優點,使得它在嵌入式領域越來越來流行。更重要的一點,由於嵌入式Linux與PC Linux源於同一套內核代碼,只是裁剪的程度不一樣,這使得很多為PC開發的軟件再次編譯之後,可以直接在嵌入式設備上運行,這使得軟件資源“極大”非富,比如各類實用的函數庫、小遊戲等。

延伸阅读

    评论