Linux內(nèi)核的嵌入式系統(tǒng)應(yīng)用
1.4 POSIX線程及NPTL
新的線程模型基于一個(gè)1:1的線程模型(一個(gè)內(nèi)核線程對(duì)應(yīng)一個(gè)用戶線程),包括內(nèi)核對(duì)新的 NPTL(Native POSIX Threading Library)的支持,這是對(duì)以前內(nèi)核線程方法的明顯改進(jìn)。2.6內(nèi)核同時(shí)還提供POSIX signals和POSIX high-resolution timers。POSIX signals不會(huì)丟失,并且可以攜帶線程間或處理器間的通信信息。嵌入式系統(tǒng)要求系統(tǒng)按時(shí)間表執(zhí)行任務(wù),POSIX timer可以提供1kHz的觸發(fā)器使這一切變得簡(jiǎn)單,從而可以有效地控制進(jìn)度。
1.5 微控制器的支持
Linux2.6 內(nèi)核加入了多種微控制器的支持。無MMU的處理器以前只能利用一些改進(jìn)的分支版本,如uClinux,而2.6內(nèi)核已經(jīng)將其整合進(jìn)了新的內(nèi)核中,開始支持多種流行的無MMU微控制器,如Dragonball、ColdFire、Hitachi H8/300。Linux在無MMU控制器上仍舊支持多任務(wù)處理,但沒有內(nèi)存保護(hù)功能。同時(shí)也加入了許多流行的控制器的支持,如S3C2410等。
1.6 面向應(yīng)用
嵌入式應(yīng)用有用戶定制的特點(diǎn),硬件設(shè)計(jì)都針對(duì)特定應(yīng)用開發(fā),這給系統(tǒng)帶來對(duì)非標(biāo)準(zhǔn)化設(shè)計(jì)支持的問題(如IRQ的管理)。為了更好地實(shí)現(xiàn),可以采用部件化的操作系統(tǒng)。Linux2.6采用的子系統(tǒng)架構(gòu)將功能模塊化,可以定制而對(duì)其他部分影響最小。同時(shí)Linux2.6提供了多種新技術(shù)的支持以實(shí)現(xiàn)各種應(yīng)用開發(fā),如Advanced Linux Sound Architecture(ALSA)和Video4Linux等,對(duì)多媒體信息處理更加方便;對(duì)USB2.0的支持,提供更高速的傳輸,增加藍(lán)牙無線接口、音頻數(shù)據(jù)鏈接和面向鏈接的數(shù)據(jù)傳輸L2CAP,滿足短距離的無線連接的需要;而且在2.6內(nèi)核中還可以配置成無輸入和顯示的純粹無用戶接口系統(tǒng)。
在根文件系統(tǒng)中,為保護(hù)系統(tǒng)的基本設(shè)置不被更改,采用CRAMFS格式。采用DEVFS來實(shí)現(xiàn)基本設(shè)備的建立掛載,同時(shí)使用BusyBox也是一個(gè)縮小根文件系統(tǒng)的辦法,提供了系統(tǒng)的基本指令;還需要建立一些必備的目錄,添加所需配置文件,如fstab、inittab等;還有一個(gè)重要的工作就是添加系統(tǒng)應(yīng)用必備的動(dòng)態(tài)函數(shù)庫(kù)。使用生成工具mkcramfs 將整個(gè)根文件目錄里的內(nèi)容制作成映像文件。
mkcramfs rootfs rootfs.ramfs
YAFFS文件系統(tǒng)格式的支持需要將驅(qū)動(dòng)加入到內(nèi)核代碼樹下fs/yaffs/,修改內(nèi)核配置文件,就可以在內(nèi)核編譯中加載對(duì)該文件系統(tǒng)的支持。使用 mkyaffs工具將NAND FLASH分區(qū)格式化為YAFFS分區(qū),將mkyaffsimage生成的應(yīng)用程序鏡像燒寫進(jìn)YAFFS分區(qū),在啟動(dòng)時(shí)通過寫入fstab自動(dòng)加載 YAFFS分區(qū)即可。
2.5 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)
系統(tǒng)中采用CS8900A的10M網(wǎng)絡(luò)芯片, 它使用S3C2410的nGCS3和IRQ_EINT9,相應(yīng)修改 Linux/arch/arm/mach-s3c2410/irq.c,并在mach-smdk2410.c的smdk2410_iodesc[]中增加 {SMDK2410_ETH_IO,S3C2410_CS2, SZ_1M, MT_DEVICE},內(nèi)核源碼中加入芯片的驅(qū)動(dòng)程序drivers/net/arm/cs8900.h和cs8900.c,并且配置網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)的 Makefile和Kconfig文件,加入CS8900A的配置選項(xiàng),這樣可以在內(nèi)核編譯時(shí)加載網(wǎng)絡(luò)設(shè)備的驅(qū)動(dòng)。
在Linux2.6應(yīng)用的同時(shí),也要看到其與以前版本內(nèi)核比較存在的一些問題。在內(nèi)核的編譯時(shí)間、內(nèi)核鏡像大小、內(nèi)核占用RAM空間大小、系統(tǒng)啟動(dòng)時(shí)間相對(duì)Linux2.4而言都存在不同程度的不足,但在硬件條件日益進(jìn)步的現(xiàn)今可以接受,而且一部分也是由于功能加強(qiáng)必然帶來的。雖然Linux并非一個(gè)真正的實(shí)時(shí)操作系統(tǒng),但2.6內(nèi)核的改進(jìn)能夠滿足大部分的應(yīng)用需求,所以Linux2.6內(nèi)核將會(huì)在嵌入式系統(tǒng)領(lǐng)域大展身手。
參考文獻(xiàn)
1 Alessandro Rubini,Jonathan Corbet著,魏永明,駱剛,姜 君譯.Linux設(shè)備驅(qū)動(dòng)[M].北京:中國(guó)電力出版社,2004
2 Anand K Santhanam. 走向Linux2.6[EB/OL]. Dec. 2003.http://www-128.ibm.com/deve loperworks/cn/linux/ l-inside/index.html
3 S3C2410X 32-Bit RISC Microprocessor User′s Manual[Z]. SAMSUNG Electronics. Revision 1.2
4 Brandon White. Linux 2.6: A Breakthrough for Embedded Systems[EB/OL].http://linuxdevices.com/articles/AT7751365763.html Sep.9,2003
5 Karim Yaghmour. Building Embedded Linux Systems[M]. O’Reilly. April, 2003
評(píng)論