現(xiàn)場總線的開關(guān)量I/O模塊設(shè)計(jì):操作系統(tǒng)移植與驅(qū)動(dòng)開發(fā)
5.1常用的嵌入式操作系統(tǒng)
本文引用地址:http://www.ex-cimer.com/article/159342.htm當(dāng)前常見的嵌入式操作系統(tǒng)主要有嵌入式Linux、Windows CE及VxWorks,在各個(gè)領(lǐng)域得到廣泛應(yīng)用,具有各自的特性與優(yōu)勢:
①從系統(tǒng)性能比較
Linux是一個(gè)成熟而穩(wěn)定的網(wǎng)絡(luò)操作系統(tǒng),為嵌入式操作系統(tǒng)提供了一個(gè)極有吸引力的選擇,它是個(gè)和Unix相似、以核心為基礎(chǔ)的、完全內(nèi)存保護(hù)、多任務(wù)、多進(jìn)程的操作系統(tǒng),支持廣泛的計(jì)算機(jī)硬件,包括X86 ,Alpha、MIPS、PPC、ARM、NEC、MOTOROLA等現(xiàn)有的大部分芯片,可以定制,其系統(tǒng)內(nèi)核最小只有約134K B,在信息家電、工控等領(lǐng)域有廣泛應(yīng)用。
WinCE是一個(gè)軟實(shí)時(shí)系統(tǒng),具有模塊化、結(jié)構(gòu)化和基于Win32應(yīng)用程序接口和與處理器無關(guān)等特點(diǎn),主要用于對實(shí)時(shí)性要求不高,但對界面要求較高的領(lǐng)域,在PDA、手機(jī)、顯示儀表等領(lǐng)域得到非常廣泛應(yīng)用。
VxWorks操作系統(tǒng)是美國WindRiver公司于1983年設(shè)計(jì)開發(fā)的一種嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),具有多達(dá)1800個(gè)功能強(qiáng)大的應(yīng)用程序接口(API ) ,它以其良好的可靠性和卓越的實(shí)時(shí)性被廣泛地應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中。
②從開發(fā)角度比較
Linux程序源碼全部公開,任何人可以修改并在GNU通用公共許可證下發(fā)行,這樣,開發(fā)人員可以對操作系統(tǒng)進(jìn)行定制。同時(shí)由于有GPL (General Public License )的控制,大家開發(fā)的東西大都相互兼容。Linux用戶遇到問題時(shí)可以通過Internet向網(wǎng)上成千上萬的Linux開發(fā)者請教,這使最困難的問題也有辦法解決。Linux帶有Unix用戶熟悉的完善的開發(fā)工具,幾乎所有的Unix系統(tǒng)的應(yīng)用軟件都已移植到了Linux上。Linux還提供了強(qiáng)大的網(wǎng)絡(luò)功能,有多種可選擇窗口管理(Xwindows )。其強(qiáng)大的語言編譯器gcc、g++等也可以很容易得到。目前正在開發(fā)的嵌人式系統(tǒng)中,49%的項(xiàng)目選擇Linux作為嵌入式操作系統(tǒng)。
就VxWorks與Win CE而言,廠商不但提供了穩(wěn)定可靠方便的集成開發(fā)環(huán)境,而且提供了大量針對具體應(yīng)用的完整解決方案,為具體開發(fā)帶來極大便捷,但系統(tǒng)開發(fā)成本較昂貴。
本論文最終采用嵌入式Linux作為系統(tǒng)開發(fā)軟件平臺(tái)。
5.2 BOOTLOADER移植
引導(dǎo)加載程序Bootloader是系統(tǒng)加電后運(yùn)行的第一段代碼。Bootloader就是在操作系統(tǒng)內(nèi)核或應(yīng)用程序運(yùn)行之前的一段程序。通過這段小程序,可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序準(zhǔn)備好正確的環(huán)境。Bootloader是依賴于硬件而實(shí)現(xiàn)的,特別是在嵌入式系統(tǒng)中。不同的體系結(jié)構(gòu)需求的Bootloader是不同的;除了體系結(jié)構(gòu),Bootloader還依賴于具體的嵌入式板級(jí)設(shè)備的配置。
5.2.1 U-Boot簡介
U-Boot全稱為Universal Bootloader,是遵循GPL條款的開放源碼項(xiàng)目。從FADSROM、8xxROM、PPCBOOT逐步發(fā)展演化而來。其源碼目錄、編譯形式與Linux內(nèi)核很相似,事實(shí)上,不少U-Boot源碼就是相應(yīng)的Linux內(nèi)核源程序的簡化,尤其是一些設(shè)備的驅(qū)動(dòng)程序。
選擇U-Boot的理由:
開放源碼;
支持多種嵌入式操作系統(tǒng)內(nèi)核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS;
支持多個(gè)處理器系列,如PowerPC、ARM、x86、MIPS、XScale;
較高的可靠性和穩(wěn)定性;高度靈活的功能設(shè)置,適合U-Boot調(diào)試、操作系統(tǒng)不同引導(dǎo)要求、產(chǎn)品發(fā)布等;
豐富的設(shè)備驅(qū)動(dòng)源碼,如串口、以太網(wǎng)、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤等;
較為豐富的開發(fā)調(diào)試文檔與強(qiáng)大的網(wǎng)路技術(shù)支持;
5.2.2 U-Boot運(yùn)行過程分析
U-Boot編譯后的代碼定義一般不超過100 KB,并且這100KB又分為兩個(gè)階段來執(zhí)行。第一階段的代碼在start.s中定義,大小不超過10KB,它包括從系統(tǒng)上電后在0x00000000地址開始執(zhí)行的部分。這部分代碼運(yùn)行在Flash中,它包括對S3C2440的一些寄存器的初始化和將U-Boot的第二段代碼從Flash復(fù)制到SDRAM中。第二段的起始地址是在第一段代碼中指定的,被復(fù)制到SDRAM后,就第一段跳到這個(gè)入口地址開始執(zhí)行剩余部分代碼。第二段主要是進(jìn)行一些BSS段的設(shè)置、堆棧的初始化等工作,最后會(huì)跳轉(zhuǎn)到main -loop函數(shù)中,接收命令并進(jìn)行命令處理。
5.2.3 U-Boot移植
本系統(tǒng)用到的U-Boot版本為1.3.2.它不僅提供了對ARM-920T內(nèi)核的支持,而且直接提供了對于S3C2440的板級(jí)支持,這使移植工作量相對減少。
(1) U-Boot版本1.3.2,gccversion4.1.2
(2)在Makefile中加入
zq2440_config:u nconfig @$(MKCONFIG ) $(@ :_config=) arm arm920t zq2440 NULL S3C24x0把板子起名為zq2440
(3)建立board/zq2440目錄,復(fù)制board/smdk2410下的文件到board/zq2440目錄,將smdk2410.c更名為zq2440.c.
(4)cp include/configs/smdk2410.h include/configs/zq2440.h
(5 )添加arm-softfloat-linux-gnu-到Makefile的CROSS_COMPILE=
(6)編譯 make zq2440_config
make
(7)通過JTAG口將U-Boot燒寫到Flash中,就可以從Nand Flash啟動(dòng)了。
Uboot在超級(jí)終端下運(yùn)行結(jié)果如圖5.1所示:
5.3嵌入式Linux內(nèi)核的移植
5.3.1嵌入式Linux簡介
嵌入式Linux是將日益流行的Linux操作系統(tǒng)進(jìn)行裁剪、修改,使之能在嵌入式計(jì)算機(jī)系統(tǒng)上運(yùn)行的一種操作系統(tǒng)。
嵌入式系統(tǒng)的軟件和硬件往往只需針對某種特別的應(yīng)用定制,因此嵌入式操作系統(tǒng)需要量體裁衣,除去冗余,同時(shí)盡可能發(fā)揮系統(tǒng)的潛力。Linux最初目標(biāo)是一個(gè)通用的操作系統(tǒng),因此必須對其進(jìn)行面向嵌入式系統(tǒng)和應(yīng)用環(huán)境的改造,以適應(yīng)嵌入式系統(tǒng)的特殊要求。
嵌入式Linux系統(tǒng)包括內(nèi)核和應(yīng)用程序兩部分。內(nèi)核為應(yīng)用程序提供一個(gè)虛擬的硬件平臺(tái),以統(tǒng)一的方式對資源進(jìn)行訪問,并且透明地支持多任務(wù)。嵌入式Linux內(nèi)核可以分為六部分:進(jìn)程調(diào)度,內(nèi)存管理,文件系統(tǒng),進(jìn)程間通信,網(wǎng)絡(luò),設(shè)備驅(qū)動(dòng)。應(yīng)用程序負(fù)責(zé)系統(tǒng)的部分初始化,基本的人機(jī)界面,必要的命令等內(nèi)容。
從Linux2.6內(nèi)核版本開始了實(shí)時(shí)性革命。Linux內(nèi)核本身也已經(jīng)特別注重了向嵌入式系統(tǒng)的應(yīng)用,Linux2.6內(nèi)核已經(jīng)把uCLinux的大部分并入主流內(nèi)核功能中,同時(shí)加入提高中斷性能和調(diào)度響應(yīng)時(shí)間的改進(jìn),有三個(gè)最顯著的改進(jìn):采用可搶占內(nèi)核、更加有效的調(diào)度算法以及同步性的提高。Linux2.6內(nèi)核在一定程度上是可搶占的,即當(dāng)有比正在運(yùn)行的進(jìn)程優(yōu)先級(jí)更高的進(jìn)程就緒時(shí),系統(tǒng)可強(qiáng)行剝奪正在運(yùn)行進(jìn)程的CPU,提供給具有更高優(yōu)先級(jí)的進(jìn)程使用,比Linux2.4內(nèi)核具備更好的實(shí)時(shí)響應(yīng)性(不是所有的內(nèi)核代碼段都可以被搶占)。Linux2.6內(nèi)核加入了多種微控制器的支持,無MM U的處理器已經(jīng)整合進(jìn)了新的內(nèi)核中,而且在無MM U控制器上仍舊支持多任務(wù)處理,但沒有內(nèi)存保護(hù)功能。對于WLAN、Bluetooth、GPRS、CDMA和WiFi等最新出現(xiàn)的無線網(wǎng)絡(luò)協(xié)議和設(shè)備,Linux2.6內(nèi)核重建了驅(qū)動(dòng)的體系層次和編程模型,可以方便的適應(yīng)這些網(wǎng)絡(luò)設(shè)備的變化,而且特別提出了NAPI(NewAPI)等模型提高網(wǎng)絡(luò)處理效率。
5.3.2嵌入式Linux的優(yōu)勢
嵌入式Linux的開發(fā)和研究是操作系統(tǒng)領(lǐng)域中的一個(gè)熱點(diǎn),目前已經(jīng)開發(fā)成功的嵌入式系統(tǒng)中,大約有一半使用的是Linux.Linux之所以能在嵌入式系統(tǒng)市場上取得如此輝煌的成果,與其自身的優(yōu)良特性是分不開的。
(1)開放的源碼,豐富的軟件資源
Linux是自由的操作系統(tǒng),它的開放源碼使用戶獲得了最大的自由度。Linux上的軟件資源十分豐富,每一種通用程序在Linux上都可以找到。
(2)功能強(qiáng)大的內(nèi)核,性能高效、穩(wěn)定,多任務(wù)
Linux的內(nèi)核非常穩(wěn)定,它的高效和穩(wěn)定性已經(jīng)在各個(gè)領(lǐng)域,尤其在網(wǎng)絡(luò)服務(wù)器領(lǐng)域,得到了事實(shí)的驗(yàn)證。Linux內(nèi)核小巧靈活,易于裁減,這使得它很適合嵌入式系統(tǒng)的應(yīng)用。
(3)支持多種體系結(jié)構(gòu),如X86、ARM、MIPS、PowerPC、SPARC等
目前,Linux已經(jīng)被移植到數(shù)十種硬件平臺(tái)上,幾乎支持所有流行的CPU.
(4)完善的網(wǎng)絡(luò)通訊、圖形、文件管理機(jī)制
Linux自產(chǎn)生之日起就與網(wǎng)絡(luò)密不可分,網(wǎng)絡(luò)是Linux的強(qiáng)項(xiàng)。另外,Linux還支持多種文件和圖形系統(tǒng)。
(5)支持大量的周邊硬件設(shè)備
Linux上的驅(qū)動(dòng)已經(jīng)非常豐富了,它們支持各種主流硬件設(shè)備和最新硬件技術(shù)。
(6)大小、功能都可定制
Linux秉承Unix的優(yōu)秀設(shè)計(jì)思想,非常靈活,各部分的可定制性都很強(qiáng)。
(7)良好的開發(fā)環(huán)境,不斷發(fā)展的開發(fā)工具集
Linux有著非常優(yōu)秀的完整開發(fā)工具鏈,有十幾種集成開發(fā)環(huán)境,其中很多是免費(fèi)的,大大降低了開發(fā)費(fèi)用。
(8)軟件開發(fā)者的廣泛支持
Linux的自由精神吸引了成千上萬的程序員投入到Linux的開發(fā)和測試中來,這使得Linux在短時(shí)間內(nèi)就成為一個(gè)功能強(qiáng)大的操作系統(tǒng)。
(9)價(jià)格低廉
有效降低產(chǎn)品成本,對成本敏感的嵌入式系統(tǒng)來說至關(guān)重要,Linux恰好具有這一特性。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關(guān)文章:linux教程
評論