如何選擇一個ARM CPU嵌入式操作系統(tǒng)
目前,除了像TI OMAP, Intel的Xscale和Motorola的IMX系列這樣的移動終端處理器采用ARM核外,也還有象Samsung, Atmel, Sharp, OKI和Philip等半導體公司設(shè)計一些通用ARM核的處理器,可以廣泛應用在各種嵌入式系統(tǒng),現(xiàn)在在市場上看到比較多的有S3C44B0, 4510,2410,AT91系列和Intel PXA255等。
ARM處理器是32位設(shè)計,同時也配置了16位指令集,軟件可以以16位編碼與等價32位代碼相比,占用的存儲器空間可以節(jié)省約35%。ARM處理器目前有ARM7, ARM9, ARM9E, ARM10, ARM11系列產(chǎn)品和來自合作伙伴Intel Xscale和Strong ARM系列ARM7,適合于中低端的網(wǎng)絡(luò)設(shè)備、終端、各種通用型的嵌入式應用和工業(yè)控制等領(lǐng)域。ARM9適合于智能手機、PDA和先進的控制管理和儀器儀表應用。Intel Xscale系列產(chǎn)品提供了高性能價格比、低功耗、適用于智能無線終端、PDA、家庭網(wǎng)絡(luò)和網(wǎng)絡(luò)存儲器設(shè)備等應用。
嵌入式操作系統(tǒng)是ARM CPU重要的軟件基礎(chǔ)
從8位/16位單片機發(fā)展到以ARM CPU核為代表的32位嵌入式處理器,嵌入式操作系統(tǒng)將替代傳統(tǒng)的由手工編制的監(jiān)控程序或調(diào)度程序,成為重要的基礎(chǔ)組件。嵌入式操作系統(tǒng)可以提供ARM CPU核和外設(shè)的設(shè)備管理,如核的初始化、MMU(內(nèi)存管理單元)、定時器、中斷、串口、SPI、GPIO、以太網(wǎng)、圖形接口等,嵌入式操作系統(tǒng)提供任務(wù)調(diào)度、內(nèi)存管理、中斷處理、同步互斥機制、文件系統(tǒng)和網(wǎng)絡(luò)功能,更重要的一點是嵌入式操作系統(tǒng)對應用程序可以起到屏蔽的作用,讓應用程序員面向操作系統(tǒng)級開發(fā)應用軟件,并易于在不同的基于ARM核的嵌入式處理器上移植。
嵌入式操作系統(tǒng)都一般具有一定的實時性,易于裁剪和伸縮,可以適合于從ARM7 到Xscale各種ARM CPU和各種檔次的應用,嵌入式操作系統(tǒng)可以使用廣泛流行的ARM開發(fā)工具,如ARM公司的SDT/ADS和Real View、IAR EW等也可以使用開源的軟件,如GCC/GDB、KDE或Eclipe開發(fā)環(huán)境,市場上還有商業(yè)廠商的專用的開發(fā)工具,如Tornado、μC /View、μC/KA、CODE/Lab、Metroworks等.
本文就目前國內(nèi)在ARM CPU上廣泛采用的三種嵌入式操作系統(tǒng)做個分析,μC/OS-II、μCLinux和嵌入式Linux。后兩種同屬于Linux,前者是針對沒有MMU的微處理器,如ARM7 TDMI核,后者可適用于絕大多數(shù)有MMU的微處理器中,如ARM920T,當然,文章也會涉及到其它支持ARM CPU的嵌入式操作系統(tǒng)。
μC/OS-II嵌入式實時內(nèi)核
由Jean Labrosse先生著,邵貝貝老師翻譯的《嵌入式實時操作系統(tǒng)μC/OS-II》先后由電力出版社(第一版)和航空航天大學出版社出版(第二版)發(fā)行了近萬冊,相信有數(shù)以千計的學生、老師和工程師正在使用μC/OS-II,在過去的一年中(2003),在《電子產(chǎn)品世界》、《電子設(shè)計應用》和《單片機和嵌入式系統(tǒng)應用》等雜志和各種學術(shù)會議上的有μC/OS-II相關(guān)論文就有幾十余篇。全世界數(shù)百種設(shè)備已經(jīng)在使用μC/OS-II,包括如手機、路由器、不間斷電源、飛行器、醫(yī)療設(shè)備和工業(yè)控制設(shè)備,在中國也已經(jīng)有包括香港權(quán)智,首科希電,安控科技在內(nèi)的10余家公司購買了產(chǎn)品授權(quán)。
μC/OS-II已經(jīng)有ARM7TDMI、ARM9和Strong ARM等各種ARM CPU的移植,支持包含Atmel、Hynix、Intel、Motorola、Philips、Samsung、Sharp等公司的ARM核的CPU。 μC/OS-II的移植也相當容易,與CPU相關(guān)的代碼包裝在三個文件中,os_cpu.h,os_cpu_a.asm,os_cpu_c.c,而且 Jean Labrosse先生的應用筆記AN-1011和AN-1012對ARM7、AN-1337對ARM9的移植過程都做了詳細的說明。
μC/OS-II有60余個系統(tǒng)調(diào)用,覆蓋任務(wù)、定時器、信號量、事件標志、郵箱、隊列和內(nèi)存管理,已經(jīng)包含了傳統(tǒng)嵌入式操作系統(tǒng)內(nèi)核(如PSOS,VRTX)的功能,還支持互斥型信號量(Mutual Exclusion Semaphone),這是90年代的嵌入式操作系統(tǒng)內(nèi)核,如Vxworks和VRTXsa才有的技術(shù)。
μC/OS-II因為是可搶占的實時內(nèi)核,所以μC/OS-II與商業(yè)嵌入式實時內(nèi)核在性能上沒有什么差異,μC/OS-II沒有用戶態(tài)和內(nèi)核態(tài),任務(wù)(線程)或中斷和任務(wù)切換的響應可以很快,主要是和不同的ARM CPU相關(guān)的。最新的2.7x版本還增加了算法以避免在移植中修改OSINTCEXSW()中的堆棧指針。這樣可以保證μC/OS-II在不同的CPU上運行更穩(wěn)定,移植更方便。
總之,μC/OS-II是一個非常容易學習(有一本很好的講解很清楚的書),結(jié)構(gòu)簡單,功能完備和實時性很強的嵌入式操作系統(tǒng)內(nèi)核,適合于各種嵌入式應用以及大專院校教學和科研。
μC/OS -II目前除了內(nèi)核外還有商業(yè)化文件系統(tǒng)μC/FS,圖形系統(tǒng)μC/GUI以及任務(wù)調(diào)試工具μC KA和μC View,μC/OS-II自己目前也有TCP/IP。如果需要,可以購買商用的TCP/IP,如InterNiche (www.iniche.com),也可以采用免費的TCP/IP項目如LWIP (http://www.sics.se/~adam/lwip/),但無論在功能還是穩(wěn)定性與商業(yè)代碼無法比擬。
最后需要說明,μC/OS-II不是免費軟件,任何人學習使用μC/OS-II需要購買《嵌入式實時操作系統(tǒng)μC/OS-II》一書,使用了μC/OS-II的產(chǎn)品需要購買產(chǎn)品生產(chǎn)授權(quán),購買了此授權(quán)的還可以得到開發(fā)期間的技術(shù)支持和升級服務(wù)。
IAR PowerPAC操作系統(tǒng)
IAR PowerPac for ARM是老牌歐洲瑞典工具公司IAR開發(fā)的一個經(jīng)過整合的32bit RTOS和中間件家族,包括一個占用存儲器極少的實時操作系統(tǒng)和一個通用的文件系統(tǒng)。還有USB協(xié)議棧和TCP/IP v4網(wǎng)絡(luò)協(xié)議棧。IAR PowerPAC適合于不同產(chǎn)業(yè)中各種各樣的嵌入式應用,例如測試與測量、工控、電信、醫(yī)療以及消費類電子產(chǎn)品等。
IAR PowerPac for ARM能夠與IAR Embedded Workbench無縫集成,即使面對最復雜的應用也能提供完整的開發(fā)環(huán)境。IAR PowerPac 是一個有豐富功能的實時操作系統(tǒng)( RTOS ),包含一個高性能的文件系統(tǒng)。以及附加的USB和TCP/IP,Web Server軟件包。IAR PowerPac 與 IAR 嵌入式工作臺無縫集成,為不同制造商的 ARM 設(shè)備提供了豐富的范例項目和板級支持包。
IAR PowerPac 及協(xié)議棧
IAR提供PowerPac實時操作系統(tǒng)和文件管理系統(tǒng)、USB協(xié)議棧以及TCP/IP協(xié)議棧,其授權(quán)方式是工程師坐席收取License費用,沒有進一步的版稅,降低了最終用戶的風險。
μCLinux操作系統(tǒng)
μCLinux是Linux小型化后,適合于沒有MMU的微處理器芯片而裁剪成的小型化Linux操作系統(tǒng),在ARM CPU系列中,ARM7 TDMI,ARM940T等ARM核的CPU產(chǎn)品,如果希望使用Linux操作系統(tǒng),只能用μCLinux,當然,μCLinux也支持Motorola Dragonball, Coldfire等其它中低端嵌入式處理器。
μCLinux保持了傳統(tǒng)Linux操作系統(tǒng)的主要特性,包括穩(wěn)定、強大的網(wǎng)絡(luò)和文件系統(tǒng)的支持,μCLinux裁剪了大量的Linux內(nèi)核以縮小尺寸,適合象512k RAM,1M Flash這樣小容量,低成本的嵌入式系統(tǒng)。
μCLinux 的項目是由Linux 2.0.38內(nèi)核開始的,第一個項目是Motorola 68EZ328,目前已經(jīng)有2.4 Linux支持的一些移植的版本,如S3C2500, 44B0等ARM芯片,這些,你可以在μCLinux的官方網(wǎng)站www.uclinux.org上找到,μCLinux近期主要是在發(fā)展各種2.4.x版本的移植,以期跟上Linux社會主流的發(fā)展趨勢(因為今年Linux 2.6將開始成為主流的內(nèi)核)。
μCLinux系統(tǒng)小型化的另一個重要原因是采用了μCLib庫替代 Linux的Glib庫,使用μCLib可以大大減少應用程序的代碼尺寸,對于中小型嵌入式應用,μCLib功能可以滿足需要,所以目前即使是某些采用 Linux 2.4內(nèi)核的嵌入式LINUX系統(tǒng)也采用μCLib庫的做法。μCLinux中,由于沒有內(nèi)存保護機制,應用代碼一般采用靜態(tài)連接的方式,而且在 μCLinux中采用Flat文件執(zhí)行格式(Linux是Coff或Elf格式), μCLinux和應用代碼都可以支持固化,存儲在Flash存儲介質(zhì)中,不需象Linux需要經(jīng)過一次Flash到RAM的拷貝。所有這些,使得 μCLinux更象傳統(tǒng)意義上的嵌入式操作系統(tǒng)。
μCLinux 主要是針對沒有MMU的嵌入式處理器開發(fā)設(shè)計,那么它也失去了有MMU所帶來的Linux操作系統(tǒng)的特色,比如,上面已經(jīng)提到的靜態(tài)加載(Linux支持動態(tài)應用的加載),μCLinux對內(nèi)存操作是直接的物理內(nèi)存,這樣,任何程序的異常都可能導致內(nèi)核崩潰,μCLinux采用Vfovk(),支持多進程,但需要父子進程協(xié)調(diào)同步,μCLinux的文件系統(tǒng)相對比較陳舊,支持的CPU和參考設(shè)計還比較少,社區(qū)的發(fā)展和維護也相對緩慢。更重要的是,在國內(nèi)外沒有一家軟件公司有商業(yè)化的μCLinux軟件產(chǎn)品和服務(wù)支持,目前μCLinux官方網(wǎng)站還很少看見象IBM、Intel這樣的巨型公司身影,只有 2~3家小型的硬件或方案提供商,這對于商業(yè)化的產(chǎn)品開發(fā)中采用是有一定的風險。
嵌入式Linux操作系統(tǒng)
我們這里要討論的是可以嵌入在ARM CPU上的,有MMU功能的Linux操作系統(tǒng),也可以稱是嵌入式Linux操作系統(tǒng)。芬蘭學生Linux Torvalds在91年寫完第一個Linux版本時,怎樣也無法想象到今天Linux在全世界范圍被廣泛注目和應用。嵌入式系統(tǒng)作為Linux應用的一個重要領(lǐng)域,由于它的廣泛性和多樣化正在迅速發(fā)展。
和 微軟的軟件不一樣,Linux不是由一家公司所擁有、維護開發(fā)的,Linux在市場有多種發(fā)行版本,所有發(fā)行版本都包含一樣的Linux內(nèi)核、基本工具和應用,不同的發(fā)行版本主要是在附加的工具鏈、應用、配置以及各種內(nèi)核補丁上有所不同。嵌入式Linux主要是在實時性增強、內(nèi)核精簡和裁減、支持多種 CPU結(jié)構(gòu)(如ARM CPU)等方面做了改進和提高。
關(guān)鍵詞:
ARMCPU嵌入式操作系
評論