① stm32移植ecos #1,為什麼要把ecos移植到stm32平台上 reille ...
作為eCos推廣計劃一部分,會將eCos移植到當前非常流行的stm32處理器上,在此基礎上,展開一些應用開發設計,並提供工程模板。選擇stm32作為eCos推廣突破口,有以下幾個因素:在對eCos有一點了解或有所耳聞的大多數工程師眼中,eCos可能被定位於像ucosII一樣級別的嵌入式OS,換句話說,eCos的應用場合應該是類似ARM7、Cortex-M處理器之類的CPU中; 當前,STM32相比其它家的Cortex-M處理器更加流行,被廣泛應用到許多低端嵌入式產品中,而且最重要的是,學者眾多,開發板資源非常豐富; 目前市場上,stm32開發板一大堆,很容易利用當前資源展開eCos的學習; 像ARM7和Cortex-M處理器之類的CPU中,使用的OS大多數是ucosII,而這個OS是收費的,不能商用,相反,eCos是開源免費使用的,如果在這眾多嵌入式應用中,可使用eCos在多數產品應用中替換掉ucosii,那麼推廣效果將更加理想; 對於ARM9以上的高端處理器,工程師更寧願使用linux、VxWorks、Windows CE、uclinux等OS,而不願意使用免費便資源匱乏的eCos; 這里有一個關鍵因素是,eCos必須展現它的應用價值和它的魅力,不然憑什麼人家對這個OS產生興趣並在產品中使用它。0您可能也喜歡:stm32移植ecos #3,我的stm32開發板配置stm32移植ecos #2,選購stm32開發板stm32移植ecos #7,移植ecos並成功運行helloworld程序,配置編譯生成靜態鏈接庫文件stm32移植ecos #8,移植ecos並成功運行helloworld程序,編譯鏈接生成helloworld程序stm32移植ecos #11,使用自己的模板(Template)stm32移植ecos #4,移植redboot(ROM啟動方式)上篇stm32移植ecos #9,移植ecos並成功運行helloworld程序,使用redboot引導運行內存中的helloworld程序stm32移植ecos #6,redboot的疑問和問題,redboot是必需的嗎?
② 關於路由器的參數與性能
路由的參數一般要看CPU,內存,flash,和系統架構,最主要是固件水平。一般Linux內核的路由對配置要求比較高,而ecos內核的路由要求比較低,所以單純看硬體不實際。路由的好壞不怎麼看硬體的,要看路由的固件功能的...功能越多就越貴...
③ 關於bootloader的一些問題。高手確定的回答。
簡單地說,BootLoader就是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬體設備、建立內存空間映射圖,從而將系統的軟硬體環境帶到一個合適狀態,以便為最終調用操作系統內核准備好正確的環境。在嵌入式系統中,通常並沒有像BIOS那樣的固件程序(注,有的嵌入式CPU也會內嵌一段短小的啟動程序),因此整個系統的載入啟動任務就完全由BootLoader來完成。比如在一個基於ARM7TDMI core的嵌入式系統中,系統在上電或復位時通常都從地址0x00000000處開始執行,而在這個地址處安排的通常就是系統的BootLoader程序。
在專用的嵌入式板子運行GNU/Linux系統已經變得越來越流行。一個嵌入式Linux系統從軟體的角度看通常可以分為四個層次: 1、 引導載入程序。包括固化在固件(firmware)中的boot代碼(可選),和BootLoader兩大部分。 2、 Linux內核。特定於嵌入式板子的定製內核以及內核的啟動參數。 3、 文件系統。包括根文件系統和建立於Flash內存設備之上文件系統。通常用ramdisk來作為rootfs。 4、 用戶應用程序。特定於用戶的應用程序。有時在用戶應用程序和內核層之間可能還會包括一個嵌入式圖形用戶界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。 引導載入程序是系統加電後運行的第一段軟體代碼。PC機中的引導載入程序由BIOS(其本質就是一段固件程序)和位於硬碟MBR中的OS BootLoader(比如,LILO和GRUB等)一起組成。BIOS在完成硬體檢測和資源分配後,將硬碟MBR中的BootLoader讀到系統的RAM中,然後將控制權交給OS BootLoader。BootLoader的主要運行任務就是將內核映象從硬碟上讀到 RAM 中,然後跳轉到內核的入口點去運行,也即開始啟動操作系統。 通常,BootLoader是嚴重地依賴於硬體而實現的,特別是在嵌入式世界。因此,在嵌入式世界裡建立一個通用的BootLoader幾乎是不可能的。盡管如此,我們仍然可以對BootLoader歸納出一些通用的概念來,以指導用戶特定的BootLoader設計與實現。
編輯本段常見bootloader
Redboot
Redboot是Redhat公司隨eCos發布的一個BOOT方案,是一個開源項目。 當前Redboot的最新版本是Redboot-2.0.1,Redhat公司將會繼續支持該項目。 Redboot支持的處理器構架有ARM,MIPS,MN10300,PowerPC, Renesas SHx,v850,x86等,是一個完善的嵌入式系統Boot Loader。 Redboot是在ECOS的基礎上剝離出來的,繼承了ECOS的簡潔、輕巧、可靈活配置、穩定可靠等品質優點。它可以使用X-modem或Y-modem協議經由串口下載,也可以經由乙太網口通過BOOTP/DHCP服務獲得IP參數,使用TFTP方式下載程序映像文件,常用於調試支持和系統初始化(Flash下載更新和網路啟動)。Redboot可以通過串口和乙太網口與GDB進行通信,調試應用程序,甚至能中斷被GDB運行的應用程序。Redboot為管理FLASH映像,映像下載,Redboot配置以及其他如串口、乙太網口提供了一個互動式命令行介面,自動啟動後,REDBOOT用來從TFTP伺服器或者從Flash下載映像文件載入系統的引導腳本文件保存在Flash上。當前支持單板機的移植版特性有: - 支持ECOS,Linux操作系統引導 - 在線讀寫Flash - 支持串列口kermit,S-record下載代碼 - 監控(minitor)命令集:讀寫I/O,內存,寄存器、 內存、外設測試功能等 Redboot是標準的嵌入式調試和引導解決方案,支持幾乎所有的處理器構架以及大量的外圍硬體介面,並且還在不斷地完善過程中。
ARMboot
ARMboot是一個ARM平台的開源固件項目,它特別基於PPCBoot,一個為PowerPC平台上的系統提供類似功能的姊妹項目。鑒於對PPCBoot的嚴重依賴性,已經與PPCBoot項目合並,新的項目為U-Boot。 ARMboot發布的最後版本為ARMboot-1.1.0,2002年ARMboot終止了維護。 ARMboot支持的處理器構架有StrongARM ,ARM720T ,PXA250 等,是為基於ARM或者StrongARM CPU的嵌入式系統所設計的。 ARMboot的目標是成為通用的、容易使用和移植的引導程序,非常輕便地運用於新的平台上。ARMboot是GPL下的ARM固件項目中唯一支持Flash快閃記憶體,BOOTP、DHCP、TFTP網路下載,PCMCLA尋線機等多種類型來引導系統的。特性為: -支持多種類型的FLASH -允許映像文件經由BOOTP、DHCP、TFTP從網路傳輸; -支持串列口下載S-record或者binary文件 -允許內存的顯示及修改 -支持jffs2文件系統等 Armboot對S3C44B0板的移植相對簡單,在經過刪減完整代碼中的一部分後,僅僅需要完成初始化、串口收發數據、啟動計數器和FLASH操作等步驟,就可以下載引導uClinux內核完成板上系統的載入。總得來說,ARMboot介於大、小型Boot Loader之間,相對輕便,基本功能完備,缺點是缺乏後續支持。
U-Boot
U-Boot是由開源項目PPCBoot發展起來的,ARMboot並入了PPCBoot,和其他一些arch的Loader合稱U-Boot。2002年12月17日第一個版本U-Boot-0.2.0發布,同時PPCBoot和ARMboot停止維護。 U-Boot自發布以後已更新6次,最新版本為U-Boot-1.1.1,U-Boot的支持是持續性的。 U-Boot支持的處理器構架包括PowerPC (MPC5xx,MPC8xx,MPC82xx,MPC7xx,MPC74xx,4xx), ARM (ARM7,ARM9,StrongARM,Xscale),MIPS (4Kc,5Kc),x86等等, U-Boot(Universal Bootloader)從名字就可以看出,它是在GPL下資源代碼最完整的一個通用Boot Loader。 U-Boot提供兩種操作模式:啟動載入(Boot loading)模式和下載(Downloading)模式,並具有大型Boot Loader的全部功能。主要特性為: -SCC/FEC乙太網支持 -BOOTP/TFTP引導 -IP,MAC預置功能 -在線讀寫FLASH,DOC, IDE,IIC,EEROM,RTC -支持串列口kermit,S-record下載代碼 -識別二進制、ELF32、pImage格式的Image,對Linux引導有特別的支持 -監控(minitor)命令集:讀寫I/O,內存,寄存器、內存、外設測試功能等 -腳本語言支持(類似BASH腳本) -支持WatchDog,LCD logo,狀態指示功能等 U-Boot的功能是如此之強大,涵蓋了絕大部分處理器構架,提供大量外設驅動,支持多個文件系統,附帶調試、腳本、引導等工具,特別支持Linux,為板級移植做了大量的工作。U-Boot1.1.1版本特別包含了對SA1100和44B0晶元的移植,所以44B0移植主要是針對Board 的移植,包括FLASH、內存配置以及串口波特率等等。U-Boot的完整功能性和後續不斷的支持,使系統的升級維護變得十分方便。
Blob
Blob(Boot Loader Object)是由Jan-Derk Bakker and Erik Mouw發布的,是專門為StrongARM 構架下的LART設計的Boot Loader。 Blob的最後版本是blob-2.0.5。 Blob支持SA1100的LART主板,但用戶也可以自行修改移植。 Blob也提供兩種工作模式,在啟動時處於正常的啟動載入模式,但是它會延時 10 秒等待終端用戶按下任意鍵而將 Blob 切換到下載模式。如果在 10 秒內沒有用戶按鍵,則 Blob 繼續啟動 Linux 內核。其基本功能為: 初始化硬體(CPU速度,存儲器,中斷,RS232串口) -引導Linux內核並提供ramdisk - 給LART下載一個內核或者ramdisk -給FLASH片更新內核或者ramdisk -測定存儲配置並通知內核 -給內核提供一個命令行 Blob功能比較齊全,代碼較少,比較適合做修改移植,用來引導Liunx,目前大部分S3C44B0板都用Blob修改移植後來載入uClinux。
Bios-lt
Bios-lt是專門支持三星(Samsung)公司ARM構架處理器S3C4510B的Loader,可以設置CPU/ROM/SDRAM/EXTIO,管理並燒寫FLASH,裝載引導uClinux內核。這是國內工程師申請GNU通用公共許可發布的。 Bios-lt的最新版本是Bios-lt-0.74,另外還提供了S3C4510B的一些外圍驅動。
Bootldr
Bootldr是康柏(Compaq)公司發布的,類似於compaq iPAQ Pocket PC,支持SA1100晶元。它被推薦用來引導Llinux,支持串口Y-modem協議以及jffs文件系統。 Bootldr的最後版本為Bootldr-2.19。
④ 適用於RAM、NOR FLASH和NAND FLASH的文件系統有那些適用於RAM、NOR FLASH和NAND FLASH的文件系統有那些
1、適用於RAM的一般是虛擬文件系統,Linux引入了虛擬文件系統VFS(Virtual File System),為各類文件系統提供統一的操作界面和應用編程介面,/proc/下就是這樣的文件系統,掉電會丟失;
2、NOR FLASH:JFFS主要用於NOR型快閃記憶體,基於MTD驅動層,JFFS是可讀寫的、支持數據壓縮的、基於哈希表的日誌型文件系統,並提供了崩潰/掉電安全保護,提供「寫平衡」支持等功能,但是缺點:當文件系統已滿或接近滿時,因為垃圾收集的關系而使jffs2的運行速度大大放慢,不適合NAND FLASH上使用;
3、NAND FLASH: yaffs/yaffs2是專為嵌入式系統使用NAND型快閃記憶體而設計的一種日誌型文件系統。與jffs2相比,它減少了一些功能(例如不支持數據壓縮),所以速度更快,掛載時間很短,對內存的佔用較小。yaffs是跨平台的文件系統,除了Linux和eCos,還支持WinCE, pSOS和ThreadX等;yaffs與yaffs2的主要區別在於:前者僅支持小頁(512 Bytes) NAND快閃記憶體,後者則可支持大頁(2KB) NAND快閃記憶體。與JFFS相比,yaffs2在內存空間佔用、垃圾回收速度、讀/寫速度等方面均有大幅提升。
希望這個答案能夠使你滿意!
⑤ ecos系統控制器電檢版本的原因
ECOS在整車生產中具有十分重要的意義。
整車電子電器檢測系統ECOS(Electrical Check Out System)在整車生產中具有十分重要的意義。以名爵MG7為例,其在生產終端配置、轉轂與尾氣測試及電器電流檢測中尤為關鍵。
現代轎車的匯流排技術開發是整車開發系統的核心,指導著零部件的分別開發,與國內傳統的零部件分別開發後組裝完全不同;雖然汽車電子的匯流排技術目前有很多的研發機構,但大多停留在產品基本應用功能實現上,往往在控制器實現網路管理和診斷等方面存在不足,不能滿足汽車的整個產業化需要,因此國內主機廠生產的車型基本上僅具備初步整車通信的匯流排結構能力,逐漸實現匯流排技術應用於整車電子電器生產配置、轉轂檢測、售後診斷及零部件追溯的全過程。
⑥ window中怎麼打開hadoop網頁解決方法
根據樓主的描述hadoop應該已經啟來了。jps是java的工具,能夠顯示系統當前運行的java程序及其進程號。運行jps沒有顯示,應該是沒有配置好系統的path、java_home和classpath。執行hadoopfs-ls等同於hadoopfs-ls.該命令查看的是hdfs的/user/hadoop目錄。而且默認是沒有這個目錄的。需要自己創建。
⑦ cygin不會用啊!幫忙!
它是在Windows下的編譯環境,在LINUX下沒用過。
ARM編譯環境建立說明
安裝需要的文件
Ecos目錄和ecos_tools目錄.
其中ecos_tools目錄中包括cygwin安裝目錄,ecosV1.3.1目錄,arm-elf編譯環境.
安裝建議
1. 建議cygwin和ecos安裝路徑都單獨安裝在硬碟的盤符的根目錄下,例如:d:\cygwin,d:\ecos
2. 安裝cygwin和ecos需要大概800M左右空間.
安裝cygwin
1. 進入ecos_tools目錄下面的cygwin目錄,運行setup.exe.
2. 點擊下一步,在(圖一)所示的選項中選擇第三項(install from local directory)
(圖一)
3. 點擊下一步,在(圖二)所示的窗口中填入安裝路徑,Default Text File Type選擇DOS即可,然後點擊下一步,安裝的源路徑默認即可.
4. 點擊下一步,出現的窗口讓用戶選擇安裝哪些包,這些包主要是確定開發環境,編譯工具等,如果不能確定具體需要哪些包的話,而硬碟空間足夠的情況下,就選擇全部安裝。在出現的對話框的''All''的右邊點擊''Default'',直到變成''Install'',如(圖三)所示,然後進行安裝即可.
(圖三)
安裝cygwin下的ARM-elf編譯環境
1. 在安裝好的cygwin目錄里建立tools目錄,例如安裝的路徑為d:\cygwin,那麼建立tools目錄即為d:\cygwin\tools.
2. 進入ecos_tools目錄下的toolchain目錄,解壓縮arm-elf-big-endian.zip文件壓縮包,然後把解壓縮的arm-elf整個目錄拷貝到安裝的cygwin目錄下的tools目錄中,形成比如d:\cygwin\tools\arm-elf.
3. 打開安裝的cygwin目錄ect目錄下面的profile文件,找到export PATH="/usr/local/bin:/usr/bin:/bin:$PATH",然後修改為export PATH="/usr/local/bin:/usr/bin:/bin:/tools/arm-elf/bin:$PATH"即可.
安裝ECOS環境
1. 運行ecos_tools目錄下1.3.1目錄中的eCos131.exe.根據安裝提示安裝ECOSV1.3.1
2. 安裝完畢後,把ecos目錄中所有內容拷貝到安裝後的ecos目錄中進行覆蓋.
3. 拷貝ecos_tools目錄中的tcl82.dll文件到安裝的cygwin目錄的bin目錄中.
4. 拷貝ecos_tools目錄中x文件和rpx文件到安裝後的ecos目錄中.
5. 運行windows程序菜單中的Red Hat eCos裡面的Configuration Tool,出現如(圖四)所示的配置窗口.
(圖四)
6. 選擇build菜單中的Repository,在如(圖五)所示的彈出的窗口中配置目錄,點擊browse按鈕,選擇安裝的ecos目錄,然後點擊ok按鈕.
(圖五)
7. 選擇tools菜單中的paths菜單,選擇paths菜單中的build tools子菜單,在如(圖六)所示的彈出窗口中配置目錄,點擊browse按鈕,選擇安裝的cygwin目錄中的tools目錄下面的arm-elf目錄下的bin目錄,然後點擊Ok按鈕.
(圖六)
8. 選擇tools菜單中的paths菜單,選擇paths菜單中的user tools子菜單,在如(圖七)所示的彈出窗口中配置目錄,點擊browse按鈕,選擇安裝的cygwin目錄中bin目錄,然後點擊Ok按鈕.
(圖七)
9. 選擇tools菜單中的shell子菜單,如果能彈出類似dos窗口的窗口,那麼說明第6,7,8步配置正確,否則請重新設置路徑.
10. eCos使用「/c」、「/d」等表示硬碟「c:」和「d:」,因此必須在選擇shell菜單彈出窗口中執行下述命令:$ mount –f c:/ /c
$ mount –f d:/ /d
可以使用下述命令進入相應得硬碟:
$ cd /c
$ cd /d
11. 另外1.3.1版本的ecos配置工具產生的Makefile中的目錄路徑總是帶雙斜杠,如//D/eCos之類,可以用rpx這個script來校正;重新編輯rpx文件,修改安裝eCos的目錄,save退出。
12. 在shell中進入eCos目錄./x,然後回車; ./rpx回車。注意:每次修改eCos程序進行編譯之前,都要運行./rpx,否則出現//D/eCos目錄帶雙斜杠的錯誤。
13. 在eCos目錄下,新建一個文件夾,把boot.ecc和download.ecc文件拷到此文件夾目錄下。
14. 運行Red Hat eCos,調用boot.ecc,如果此時./rpx,然後編譯boot.ecc,就會出現錯誤,如找不到hal.h等文件,因此要先改動boot.ecc的一個選項,然後再改回,就是說讓它有一個存檔的操作,eCos配置工具就會自動在boot.ecc的同一個目錄下生成boot_build、boot_install、boot_mlt文件夾。然後編譯就不會出錯誤了。
15. boot_build文件夾里存放著用於對eCos進行編譯時所生成的文件,包括makefile文件、目標文件和其他一些文件;boot_install存放用於編譯eCos應用程序的所有文件,包括庫文件libtrget.a和頭文件;boot_mlt存放內存布局文件。
16. 更改應用程序的makefile文件,把PKG_INSTALL_DIR指到boot_install目錄,然後在shell中make,把生成的bin文件燒到片子里就可以了。到此ok。
注意:1、應用程序有兩種運行方式,寫片子方式和下載方式。(1)應用程序和操作系統捆綁運行,也就是把應用程序文件夾中的makefile文件修改,makefile文件中的PKG_INSTALL_DIR指到boot.ecc生成的boot_install文件夾,存檔;在shell中,進入應用程序目錄,make後回車,編譯生成的bin文件燒到片子里運行即可。(2)用/ecos/boot目錄下的makefile文件,更改此文件中的PKG_INSTALL_DIR指到boot.ecc生成的boot_install文件夾;用make編譯生成的bin文件燒到片子里運行,此時片子里沒有應用程序;然後更改應用程序所在目錄的makefile文件,修改此文件使PKG_INSTALL_DIR指到download_install文件夾,存檔,在shell下進入應用程序文件夾,make後回車,把生成的bin文件拷到ecos目錄下,通過fftp.exe工具下載應用程序到板子上。
2、用make成功編譯一次後,就會生成.o等過程文件,當下次再make時,就會出錯,因此需要make clean,清除編譯過程文件。
3、用fftp.exe工具下載時,一定去掉防火牆。
⑧ 如何移植redboot支持nand flash
Redboot被設計用於嵌入式調試和啟動環境,它是一個基於eCos的應用程序,使用eCos的硬體抽象層(HAL)作為它的基礎。它一個基本的功能是作為bootloader,但可用於任何嵌入式系統或任何嵌入式實時操作系統中。也可用於產品開發周期中的調試支持或在發布的產品中提供flash或網路啟動。特性有:
啟動腳本支持;
管理和控制的命令行支持;
通過串口或乙太網口的訪問;
GDB支持;
flash映像系統支持;
X/Y數據機的支持;
支持使用BOOTP或靜態IP地址配置的網路啟動;
移植redboot到stm32開發板
1.,搭建好ecos開發環境
2,打開ecos圖形配置工具configtool,如下圖所示。
下圖中,左邊窗口為ecos的配置項窗口,右邊窗口從上到下分別為:沖突提示窗口、配置項屬性窗口、配置項說明窗口。
⑨ ecos和shopex是什麼關系啊我只知道shopex是b2c系統,但ecos是幹嘛的呢可以用
如你說所說,shopex一般都是用來做B2C,至於ECOS這個系統,他針對的領域有所不同,這是一種嵌入式可配置實時操作系統,適合於深度嵌入式應用,主要應用對象包括消費電子、電信、車載設備、手持設備以及其他一些低成本和攜帶型應用。要了解的更加具體你可以到國內的這個eCos」技術網「這個社區去瞅瞅
⑩ 嵌入式實時操作系統的特點
嵌入式實時操作系統應用十分廣泛,包括數據通信、信息家電、航空航天、工業控制、生物醫學電子、船舶工程、計算機外設、電信設備、交通運輸、國防武器控制等領域,已經形成IT產業爭奪的重點領域,它所帶來的工業年產值已超過1萬億美元。在嵌入式系統開發中使用嵌入式實時操作系統已成為一種不可逆轉的潮流與時尚。
1 背景
隨著計算機技術的迅速發展和晶元製造工藝的不斷進步,嵌入式系統的應用日益廣泛:從民用的電視、手機等電路設備到軍用的飛機、坦克等武器系統,到處都有嵌入式系統的身影。在嵌入式系統的應用開發中,采和嵌入式實時操作系統(簡稱RTOS)能夠支持多任務,使得程序開發更加容易,便於維護,同時能夠提高系統的穩定性和可靠性。這已逐漸成為嵌入式系統開發的一個發展方向。
2 嵌入式操作系統概述
嵌入式操作系統是一種支持嵌入式系統應用的操作系統軟體。它是嵌入式系統(包括硬、軟體系統)極為重要的組成部分,通常包括與硬體相關的底層驅動軟體、系統內核、設備驅動介面、通信協議、圖形界面、標准化瀏覽器Browser等。嵌入式操作系統具有通用操作系統的基本特點,如能夠有效管理越來越復雜的系統資源;能夠把硬體虛擬化,使得開發人員從繁忙的驅動程序移植和維護中解脫出來;能夠提供庫函數、標准設備驅動程序以及工具集等。與通用操作系統相比較,嵌入式操作系統在系統實時高效性、硬體的相關依賴性、軟體固態化以及應用的專用性等方面具有較為突出的特點。
嵌入式系統的出現至今已經有30多年的歷史。縱觀嵌入式技術的發展過程,大致經歷了四個階段。
(1)無操作系統的嵌入式演算法階段
這一階段的嵌入式系統是以單晶元為核心的系統,具有與一些監測、伺服、指示設備相配合的功能。一般沒有明顯的操作系統支持,而是通過匯編語言編程對系統進行直接控制。主要特點是系統結構和功能都相對單一,針對性強,無操作系統支持,幾乎沒有用戶介面。
(2)簡單監控式的實時操作系統階段
這一階段的嵌入式系統主要以嵌入式式器為基礎、以簡單監控式操作系統為核心。系統的特點是:處理器種類繁多,通用性比較弱;開銷小,效率高;一般配備系統模擬器,具有一定的兼容性和擴展性;用戶界面不夠友好,主要用來控制系統負載以及監控應用程序運行。
(3)通用的嵌入式實時操作系統階段
以通用型嵌入式實時操作系統為標志的嵌入式系統,如VxWorks、pSos、Windows CE就是這一階段的典型代表。這一階段嵌入式系統的特點是:能運行在各種不同的微處理器上;具有強大的能用型操作系統的功能,如具備了文件和目錄管理、多任務、設備驅動支持、網路支持、圖形窗口以及用戶界面等功能;具有豐富的API和嵌入式應用軟體。
(4)以Internet為標志的嵌入式系統
伴隨著通用型嵌入式實時操作系統的發展,面向Internet網路和特定應用的嵌入式操作系統正日益引起人們的重視,成為重要的發展方向。嵌入式系統與Internet的真正結合、嵌入式操作系統與應用設備的無縫結合代表著嵌入式操作系統發展的未來。
3 兩種源碼開放的RTOS
嵌入式實時操作系統有很多,如VxWorks、PalmOS、WindowsCE等。這些操作系統均屬於商品化產品,價格昂貴且由於源泉代碼不公開導致了諸如對設備的支持、應用軟體的移植等一系列的問題;而開放源碼的RTOS在成本和技術上有其特有的優勢,在RTOS領域佔有越來越重要的地位,本文將介紹μC/OS-II和eCos兩種優秀的源碼公開的實時操作系統,通過對它們各自的特點和性能進行分析和比較,給出相關的數據,為選擇一種合適的RTOS提供參考。
3.1 μC/OS-II
μC/OS-II的前射是μC/OS,最早出自於1992年美國嵌入式系統專家Jean J.Labrosse在《嵌入式系統編程》雜志的5月和6月刊上刊登的文章連載,並把μC/OS的源碼發布在該雜志的BBS上。當時就有500多人下載了這份源碼。世界上數以千計的工程技術人員將μC/OS應用到了各個領域,如照相機業、發動機控制、網路接入設備、高速公路電話系統、ATM機和工業機器人等。許多大學用μC/OS作教材,用於實時系統教學。1998年,作者決定出版μC/OS的第二本書《μC/OS-II The Real Time Kernel》,並設立了正式的網站:www. ΜC/OS-II.com,給μC/OS-II增加了一些新的功能,並且增加了約200頁的解釋。
μC/OS和μC/OS-II是專門為計算機的嵌入式應用設計的,絕大部分代碼是用C語言編寫的。CPU硬體相關部分是用匯編語言編寫的、總量約200行的匯編語言部分被壓縮到最低限度,為的是便於移植到任何一種其它的CPU上。許多移植的範例可以從網站上得到。用戶只要有標準的ANSI的C交叉編譯器,有匯編器、連接器等軟體工具,就可以將μC/OS嵌入到開發的產品中。
μC/OS具有執行效率高、佔用空間小、實時性能優良和可擴展性能等特點,最小內核可編譯至2KB。μC/OS-II已經移植到了幾乎所有知名的CPU上。
3.2 eCos
eCos(embedded Configurable operating system),即嵌入式可配置操作系統,最初起源於美國的Cygnus Solutions公司。Cygnus公司於1998年11月發布了第一個eCos版本eCos1.1,當時只支持有限的幾種處理器結構。1999年11月,RedHat公司以6.74億美元收購了Cygnus公司。在此後的幾年裡,eCos成為其嵌入式領域的關鍵產品,得到了迅速的發展。2002年,RedHat公司由於財務方面的原因,裁剪了eCos開發隊伍,但並沒有停止eCos的發展。RedHat公司隨後宣稱將繼續支持eCos的發展,而由原eCos主要開發人員組建了eCos Centric公司,並於2003年5月正式發布了eCos2.0。
雖然eCos是RedHat的產品,但是eCos並不是Linux或Linux的派生,eCos彌補了Linux在嵌入式應用領域的不足。目前,一個最小配置的Linux內核大概有500KB,需要佔用1.5MB的內存空間,這還不包括應用程序和其它所需的服務;eCos可以提供實時嵌入式應用所需的基本運行基件,而只佔用幾十KB或幾百KB的內存空間。eCOS是一個源碼開放的可配置、可移植、無版稅、面向深嵌入式應用的實時操作系統。從eCOS的名稱可以看出,它最大的特點在於它是一個配置靈活的系統。ECOS的核心部分是由不同的組件組成的,包括內核、C語言庫和底層運行包等。每個組件以能提供大量的可配置選項,利用eCOS提供的配置工具可以很方便地進行配置。通過不同的配置使得eCOS能夠滿足不同的嵌入式應用。
4 μC/OS-II與eCOS的比較
對於以上兩種源泉碼公開的實時操作系統,我們主要從以下幾個方面進行比較。通過比較,能夠為大家選擇適合自己系統的RTOS提供參考。
4.1 內核調度機制
RTOS內核的核心是調度器。當系統包含多個任務或多個線程時,必須使用調度器來決定當前執行哪一個任務或線程。調度器對線程的運行進行控制,並為線程提供一種同步機制。表1列出了這兩種RTOS調度器(調度機制)的比較。
表1 調度器比較
調度方法 同優先順序調度 優先順序數/個 任務數量/個
uC/OS-II
固定
優先順序
搶占式
無
64
(8個保留)
56
eCos: 點陣圖
優先順序
搶占式
無
32
32
eCos:多級隊列
優先順序
搶占式
有
32
無限
eCos:獎券
測試中
測試中
測試中
測試中
μC/OS只支持固定優先順序搶占式,不支持時間片輪轉調度,調度方法簡單、實時性好,用法也簡單;eCOS調度方法豐富,適應性好。當然,目前的eCOS只允許在其目標系統中使用一個單獨的調度器,未來的版本將可以允許多個調度器協同工作。
4.2 任務間同步、通信機制
RTOS的功能一般要通過若干任務和中斷服務程序共同完成,任務與任務之間、任務與中斷服務程序之間必須協調動作,互相配合,這就牽涉到任務間的同步與通信問題。表2為這兩種操作系統同步與通信機制的比較。
表2 同步與通信機制的比較
uC/OS-II
eCos
同步與通信機制
信號量、郵箱、消息隊列
互斥、條件變數、計數型信號量、郵箱和事件標志
4.3 任務切換時間和中斷延遲時間
任務切換時間和中斷延遲時間是評估RTOS性能的兩個重要指標。任務切換時間可以反映出RTOS執行任務的速度,而中斷延遲時間可以反映出RTOS對外界變化的反應速度。表3為這兩種操作系統任務切換時間和中斷延遲時間的比較。
表3 任務切換時間和中斷延遲時間的比較
任務切換時間/us
中斷延遲時間/μs
測試環境
μC/OS-II
29.7~34.2
78.8
Intel80186(33MHz)
eCos
15.84
19.2
MPC860A3(33MHz)
4.4 對硬體的支持
μC/OS-II和eCOS支持當前流行的大部分嵌入式CPU,都具有很好的可移植特性。μC/OS-II支持從8位到32位的CPU;而eCOS可以在16位、32位和64位等不同體系結構之間移植。μC/OS-II和eCOS由於本身內核就很小,經過裁剪後的代碼最小可以分別為小於2KB和10KB,所需的最小數據RAM空間可以為4KB和10KB,因此它們對硬體的要求很低,具有極高的經濟性。
結語
通過比較可以看到:μC/OS-II相對eCOS來說,源代碼最小很多,特別適合學習和研究。它最大的特點是小巧,適合應用在一些RAM和ROM有限的小型嵌入式系統中,如單片機系統。ECOS最大的特點是配置靈活,適合於用在一些商業級或工業級的嵌入式系統,如一些消費電子、汽車領域等等。總之,選用什麼樣的操作系統,要根據目標系統的硬體條件和用戶應用程序的復雜度來確定。