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