Linux 2.6 內核的嵌入式系統應用
——
關(guān)鍵詞:Linux 內核 嵌入式系統 S3C2410
隨著(zhù)多媒體技術(shù)與通訊技術(shù)相結合的信息技術(shù)的快速發(fā)展和互聯(lián)網(wǎng)的廣泛應用,PC 時(shí)代也過(guò)渡到了后PC時(shí)代。在數字信息技術(shù)和網(wǎng)絡(luò )技術(shù)高速發(fā)展的后PC時(shí)代,嵌入式技術(shù)越來(lái)越與人們的生活緊密結合。
操作系統為用戶(hù)使用計算機及其外部設備提供最基本的接口程序,管理計算機上的資源。隨著(zhù)應用領(lǐng)域的擴大,為了適應不同的應用場(chǎng)合,考慮到系統的靈活性、可伸縮性以及可裁剪性,一種以應用為中心、以計算機技術(shù)為基礎、軟硬件可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗要求嚴格的專(zhuān)用計算機系統——嵌入式操作系統隨之延生。
Linux 操作系統是一種性能優(yōu)良、源碼公開(kāi)且被廣泛應用的免費操作系統,由于其體積小、可裁減、運行速度高、良好的網(wǎng)絡(luò )性能等優(yōu)點(diǎn),可以作為嵌入式操作系統。隨著(zhù)2.6內核的發(fā)布,Linux向現有主流的RTOS提供商在嵌入式系統市場(chǎng)提出了巨大挑戰,例如VxWorks和WinCE,具有許多新特性,將成為更優(yōu)秀的嵌入式操作系統。
Linux的低成本和開(kāi)放性,為其在嵌入式系統領(lǐng)域的應用營(yíng)造了肥沃的土壤。本文著(zhù)重介紹Linux 2.6內核的新特性及其嵌入式應用中的優(yōu)勢,并將其移植到嵌入式平臺中,成功支持H.264編解碼多媒體系統。
1 Linux 2.6內核針對嵌入式開(kāi)發(fā)顯著(zhù)特點(diǎn)
實(shí)時(shí)可靠性是嵌入式應用較為普遍的要求,盡管Linux 2.6 并不是一個(gè)真正的實(shí)時(shí)操作系統,但其改進(jìn)的特性能夠滿(mǎn)足響應需求。Linux 2.6 已經(jīng)在內核主體中加入了提高中斷性能和調度響應時(shí)間的改進(jìn),其中有三個(gè)最顯著(zhù)的改進(jìn):采用可搶占內核、更加有效的調度算法以及同步性的提高[4]。在企業(yè)服務(wù)器以及嵌入式系統應用領(lǐng)域,Linux 2.6 都是一個(gè)巨大的進(jìn)步。在嵌入式領(lǐng)域,Linux 2.6 除了提高其實(shí)時(shí)性能,系統的移植更加方便,同時(shí)添加了新的體系結構和處理器類(lèi)型——包括對沒(méi)有硬件控制內存管理方案的 MMU-less系統的支持,可以支持大容量?jì)却婺P?、微控制?同時(shí)還改善了I/O子系統,增添更多的多媒體應用功能[4]。
1.1 可搶占內核
在先前的內核版本中(包括2.4內核)不允許搶占以核心態(tài)運行的任務(wù)(包括通過(guò)系統調用進(jìn)入內核模式的用戶(hù)任務(wù)),只能等待它們自己主動(dòng)釋放CPU。這樣必然導致一些重要任務(wù)延時(shí)以等待系統調用結束。
一個(gè)內核任務(wù)可以被搶占,為的是讓重要的用戶(hù)應用程序可以繼續運行。這樣做最主要的優(yōu)勢是極大地增強系統的用戶(hù)交互性。
2.6內核并不是真正的RTOS(Real Time Operation System),其在內核代碼中插入了搶占點(diǎn),允許調度程序中止當前進(jìn)程而調用更高優(yōu)先級的進(jìn)程,通過(guò)對搶占點(diǎn)的測試避免不合理的系統調用延時(shí)。2.6內核在一定程度上是可搶占的,比2.4內核具備更好的響應性。但也不是所有的內核代碼段都可以被搶占,可以鎖定內核代碼的關(guān)鍵部分,確保CPU的數據結構和狀態(tài)始終受到保護而不被搶占。
軟件需要滿(mǎn)足最終時(shí)間限制與虛擬內存請求頁(yè)面調度之間是相互矛盾的。慢速的頁(yè)錯誤處理將會(huì )破壞系統的實(shí)時(shí)響應性,而2.6內核可以編譯無(wú)虛擬內存系統避免這個(gè)問(wèn)題,這是解決問(wèn)題的關(guān)鍵,但要求軟件設計者有足夠的內存來(lái)保證任務(wù)的執行。
1.2 有效的調度程序
2.6版本的 Linux內核使用了由 Ingo Molnar開(kāi)發(fā)的新的調度器算法,稱(chēng)為O(1)算法,如圖1所示。它在高負載情況下執行得極其出色,并且當有很多處理器并行時(shí)也可以很好地擴展[2]。過(guò)去的調度程序需要查找整個(gè)ready task隊列,并且計算它們的重要性以決定下一步調用的task,需要的時(shí)間隨task數量而改變。O(1)算法則不再每次掃描所有的任務(wù),當task就緒時(shí)被放入一個(gè)活動(dòng)隊列中,調度程序每次從中調度適合的task,因而每次調度都是一個(gè)固定的時(shí)間。任務(wù)運行時(shí)分配一個(gè)時(shí)間片,當時(shí)間片結束,該任務(wù)將放棄處理器并根據其優(yōu)先級轉到過(guò)期隊列中?;顒?dòng)隊列中任務(wù)全部調度結束后,兩個(gè)隊列指針互換,過(guò)期隊列成為當前隊列,調度程序繼續以簡(jiǎn)單的算法調度當前隊列中的任務(wù)。這在多處理器的情況更能提高SMP的效率,平衡處理器的負載,避免進(jìn)程在處理器間的跳躍。

圖1 O(1)調度算法
1.3 同步原型與共享內存
多進(jìn)程應用程序需要共享內存和外設資源,為避免競爭采用了互斥的方法保證資源在同一時(shí)刻只被一個(gè)任務(wù)訪(fǎng)問(wèn)。Linux內核用一個(gè)系統調用來(lái)決定一個(gè)線(xiàn)程阻塞或是繼續執行來(lái)實(shí)現互斥,在線(xiàn)程繼續執行時(shí),這個(gè)費時(shí)的系統調用就沒(méi)有必要了。Linux2.6所支持的Fast User-Space Mutexes 可以從用戶(hù)空間檢測是不是需要阻塞線(xiàn)程,只在需要時(shí)執行系統調用終止線(xiàn)程。它同樣采用調度優(yōu)先級來(lái)確定將要執行的進(jìn)程[4]。 多處理器嵌入式系統各處理器之間需要共享內存,對稱(chēng)多處理技術(shù)對內存訪(fǎng)問(wèn)采用同等優(yōu)先級,在很大程度上限制了系統的可量測性和處理效率。Linux2.6則提供了新的管理方法——NUMA(Non Uniform Memory Access)。NUMA根據處理器和內存的拓撲布局,在發(fā)生內存競爭時(shí),給予不同處理器不同級別權限以解決內存搶占瓶頸,提高吞吐量。
1.4 POSIX線(xiàn)程及NPTL
新的線(xiàn)程模型基于一個(gè)1:1的線(xiàn)程模型(一個(gè)內核線(xiàn)程對應一個(gè)用戶(hù)線(xiàn)程),包括內核對新的 NPTL(Native POSIX Threading Library)的支持,這是對以前內核線(xiàn)程方法的明顯改進(jìn)。2.6內核同時(shí)還提供POSIX signals和POSIX high-resolution timers。POSIX signals不會(huì )丟失,并且可以攜帶線(xiàn)程間或處理器間的通信信息。嵌入式系統要求系統按時(shí)間表執行任務(wù),POSIX timer可以提供1kHz的觸發(fā)器使這一切變得簡(jiǎn)單,從而可以有效地控制進(jìn)度。
1.5 微控制器的支持
Linux2.6內核加入了多種微控制器的支持。無(wú)MMU的處理器以前只能利用一些改進(jìn)的分支版本,如uClinux,而2.6內核已經(jīng)將其整合進(jìn)了新的內核中,開(kāi)始支持多種流行的無(wú)MMU微控制器,如Dragonball、ColdFire、Hitachi H8/300。Linux在無(wú)MMU控制器上仍舊支持多任務(wù)處理,但沒(méi)有內存保護功能。同時(shí)也加入了許多流行的控制器的支持,如S3C2410等。
1.6 面向應用
嵌入式應用有用戶(hù)定制的特點(diǎn),硬件設計都針對特定應用開(kāi)發(fā),這給系統帶來(lái)對非標準化設計支持的問(wèn)題(如IRQ的管理)。為了更好地實(shí)現,可以采用部件化的操作系統。Linux2.6采用的子系統架構將功能模塊化,可以定制而對其他部分影響最小。同時(shí)Linux2.6提供了多種新技術(shù)的支持以實(shí)現各種應用開(kāi)發(fā),如Advanced Linux Sound Architecture(ALSA)和Video4Linux等,對多媒體信息處理更加方便;對USB2.0的支持,提供更高速的傳輸,增加藍牙無(wú)線(xiàn)接口、音頻數據鏈接和面向鏈接的數據傳輸L2CAP,滿(mǎn)足短距離的無(wú)線(xiàn)連接的需要;而且在2.6內核中還可以配置成無(wú)輸入和顯示的純粹無(wú)用戶(hù)接口系統。
2 應用研究
在S3C2410開(kāi)發(fā)板上移植嵌入式Linux 2.6.11.7內核系統,應用于構建H.264多媒體系統。
2.1 建立交叉編譯環(huán)境
在RedHat9的主機上進(jìn)行內核移植開(kāi)發(fā),首先需要建立交叉編譯環(huán)境。由于2.6內核中采用了一些新的特性和指令,需要采用較新的工具集,采用binutils-2.15、gcc-3.4.2、glibc-2.2.5、linux-2.6.8、glibc-linuxthreads-2.2.5來(lái)建立交叉編譯工具鏈,建立之后將工具鏈路徑加入系統路徑$PATH中。
2.2 內核修改
Linux 2.6.11.7內核加入了對S3C2410芯片的支持,不再需要任何補丁文件。修改內核源碼中Makefile的交叉編譯選項ARCH=arm,CROSS_COMPILE=arm-linux-。針對硬件配置,需要在arch/arm/mach-s3c2410/devs.c或者smdk2410.c中添加FLASH的分區信息s3c_nand_info,如表1。
多進(jìn)程應用程序需要共享內存和外設資源,為避免競爭采用了互斥的方法保證資源在同一時(shí)刻只被一個(gè)任務(wù)訪(fǎng)問(wèn)。Linux內核用一個(gè)系統調用來(lái)決定一個(gè)線(xiàn)程阻塞或是繼續執行來(lái)實(shí)現互斥,在線(xiàn)程繼續執行時(shí),這個(gè)費時(shí)的系統調用就沒(méi)有必要了。Linux2.6所支持的Fast User-Space Mutexes 可以從用戶(hù)空間檢測是不是需要阻塞線(xiàn)程,只在需要時(shí)執行系統調用終止線(xiàn)程。它同樣采用調度優(yōu)先級來(lái)確定將要執行的進(jìn)程[4]。 多處理器嵌入式系統各處理器之間需要共享內存,對稱(chēng)多處理技術(shù)對內存訪(fǎng)問(wèn)采用同等優(yōu)先級,在很大程度上限制了系統的可量測性和處理效率。Linux2.6則提供了新的管理方法——NUMA(Non Uniform Memory Access)。NUMA根據處理器和內存的拓撲布局,在發(fā)生內存競爭時(shí),給予不同處理器不同級別權限以解決內存搶占瓶頸,提高吞吐量。
1.4 POSIX線(xiàn)程及NPTL
新的線(xiàn)程模型基于一個(gè)1:1的線(xiàn)程模型(一個(gè)內核線(xiàn)程對應一個(gè)用戶(hù)線(xiàn)程),包括內核對新的 NPTL(Native POSIX Threading Library)的支持,這是對以前內核線(xiàn)程方法的明顯改進(jìn)。2.6內核同時(shí)還提供POSIX signals和POSIX high-resolution timers。POSIX signals不會(huì )丟失,并且可以攜帶線(xiàn)程間或處理器間的通信信息。嵌入式系統要求系統按時(shí)間表執行任務(wù),POSIX timer可以提供1kHz的觸發(fā)器使這一切變得簡(jiǎn)單,從而可以有效地控制進(jìn)度。
1.5 微控制器的支持
Linux2.6內核加入了多種微控制器的支持。無(wú)MMU的處理器以前只能利用一些改進(jìn)的分支版本,如uClinux,而2.6內核已經(jīng)將其整合進(jìn)了新的內核中,開(kāi)始支持多種流行的無(wú)MMU微控制器,如Dragonball、ColdFire、Hitachi H8/300。Linux在無(wú)MMU控制器上仍舊支持多任務(wù)處理,但沒(méi)有內存保護功能。同時(shí)也加入了許多流行的控制器的支持,如S3C2410等。
1.6 面向應用
嵌入式應用有用戶(hù)定制的特點(diǎn),硬件設計都針對特定應用開(kāi)發(fā),這給系統帶來(lái)對非標準化設計支持的問(wèn)題(如IRQ的管理)。為了更好地實(shí)現,可以采用部件化的操作系統。Linux2.6采用的子系統架構將功能模塊化,可以定制而對其他部分影響最小。同時(shí)Linux2.6提供了多種新技術(shù)的支持以實(shí)現各種應用開(kāi)發(fā),如Advanced Linux Sound Architecture(ALSA)和Video4Linux等,對多媒體信息處理更加方便;對USB2.0的支持,提供更高速的傳輸,增加藍牙無(wú)線(xiàn)接口、音頻數據鏈接和面向鏈接的數據傳輸L2CAP,滿(mǎn)足短距離的無(wú)線(xiàn)連接的需要;而且在2.6內核中還可以配置成無(wú)輸入和顯示的純粹無(wú)用戶(hù)接口系統。
2 應用研究
在S3C2410開(kāi)發(fā)板上移植嵌入式Linux 2.6.11.7內核系統,應用于構建H.264多媒體系統。
2.1 建立交叉編譯環(huán)境
在RedHat9的主機上進(jìn)行內核移植開(kāi)發(fā),首先需要建立交叉編譯環(huán)境。由于2.6內核中采用了一些新的特性和指令,需要采用較新的工具集,采用binutils-2.15、gcc-3.4.2、glibc-2.2.5、linux-2.6.8、glibc-linuxthreads-2.2.5來(lái)建立交叉編譯工具鏈,建立之后將工具鏈路徑加入系統路徑$PATH中。
2.2 內核修改
Linux 2.6.11.7內核加入了對S3C2410芯片的支持,不再需要任何補丁文件。修改內核源碼中Makefile的交叉編譯選項ARCH=arm,CROSS_COMPILE=arm-linux-。針對硬件配置,需要在arch/arm/mach-s3c2410/devs.c或者smdk2410.c中添加FLASH的分區信息s3c_nand_info,如表1。
分區名 | 起始地址 | 大 小 |
Vivi | 0x00000000 | 0x00020000 |
Param | 0x00020000 | 0x00010000 |
Kernel | 0x00030000 | 0x001c0000 |
Root | 0x00200000 | 0x00200000 |
Usr | 0x00400000 | 0x03c00000 |
然后在s3c_device_nand中增加.dev={.platform_data= &s3c_nand_info},在arch/arm/mach-s3c2410/mach-smdk2410.c中的__initdata部分增加&s3c_device_nand,使內核在啟動(dòng)時(shí)初始化NAND FLASH信息。
2.3 內核編譯加載
對內核進(jìn)行適當的配置是一個(gè)量體裁衣的過(guò)程。由于2.6內核會(huì )根據本地系統配置進(jìn)行初始設置,可以導入內核源碼默認s3c2410的配置文件,方便加載內核基本配置,然后再選擇所需選項。對MTD配置選擇支持MTD設備驅動(dòng)以及NAND FLASH驅動(dòng);選擇支持要用到的各類(lèi)文件系統(DEVFS、TMPFS、CRAMFS、YAFFS、EXT2、NFS)以及網(wǎng)絡(luò )設備和協(xié)議,本系統加載了網(wǎng)絡(luò )芯片CS8900以及USB支持;在H.264多媒體系統中還需要加載Frame buffer以支持LCD顯示功能。使用交叉編譯工具編譯內核源碼后, 會(huì )在arch/arm/boot/下生成名為zImage的內核映像,在Boot loader的命令提示模式下使用下載命令完成內核加載到開(kāi)發(fā)板的存儲設備FLASH中。編譯過(guò)程(相對以前版本的編譯過(guò)程,2.6內核編譯有所簡(jiǎn)化):
make mrproper
make menuconfig(字符界面,或者用make xconfig圖形界面,但需要Qt庫的支持,而make gconfig則需要GTK庫的支持)
make
make bzImage
2.4 文件系統
Linux采用文件系統組織系統中的文件和設備,為設備和用戶(hù)程序提供統一接口。Linux 支持多種文件系統,本系統使用CRAMFS格式的只讀根文件系統,而將FLASH中的USER區使用支持可讀寫(xiě)的YA FFS文件系統格式,方便添加自己的應用程序。
在根文件系統中,為保護系統的基本設置不被更改,采用CRAMFS格式。采用DEVFS來(lái)實(shí)現基本設備的建立掛載,同時(shí)使用BusyBox也是一個(gè)縮小根文件系統的辦法,提供了系統的基本指令;還需要建立一些必備的目錄,添加所需配置文件,如fstab、inittab等;還有一個(gè)重要的工作就是添加系統應用必備的動(dòng)態(tài)函數庫。使用生成工具mkcramfs 將整個(gè)根文件目錄里的內容制作成映像文件。
mkcramfs rootfs rootfs.ramfs
YAFFS文件系統格式的支持需要將驅動(dòng)加入到內核代碼樹(shù)下fs/yaffs/,修改內核配置文件,就可以在內核編譯中加載對該文件系統的支持。使用mkyaffs工具將NAND FLASH分區格式化為YAFFS分區,將mkyaffsimage生成的應用程序鏡像燒寫(xiě)進(jìn)YAFFS分區,在啟動(dòng)時(shí)通過(guò)寫(xiě)入fstab自動(dòng)加載YAFFS分區即可。
2.5 網(wǎng)絡(luò )設備驅動(dòng)
系統中采用CS8900A的10M網(wǎng)絡(luò )芯片,它使用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},內核源碼中加入芯片的驅動(dòng)程序drivers/net/arm/cs8900.h和cs8900.c,并且配置網(wǎng)絡(luò )設備驅動(dòng)的Makefile和Kconfig文件,加入CS8900A的配置選項,這樣可以在內核編譯時(shí)加載網(wǎng)絡(luò )設備的驅動(dòng)。
在Linux2.6應用的同時(shí),也要看到其與以前版本內核比較存在的一些問(wèn)題。在內核的編譯時(shí)間、內核鏡像大小、內核占用RAM空間大小、系統啟動(dòng)時(shí)間相對Linux2.4而言都存在不同程度的不足,但在硬件條件日益進(jìn)步的現今可以接受,而且一部分也是由于功能加強必然帶來(lái)的。雖然Linux并非一個(gè)真正的實(shí)時(shí)操作系統,但2.6內核的改進(jìn)能夠滿(mǎn)足大部分的應用需求,所以L(fǎng)inux2.6內核將會(huì )在嵌入式系統領(lǐng)域大展身手。
參考文獻
1 Alessandro Rubini,Jonathan Corbet著(zhù),魏永明,駱剛,姜 君譯.Linux設備驅動(dòng)[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
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
2.3 內核編譯加載
對內核進(jìn)行適當的配置是一個(gè)量體裁衣的過(guò)程。由于2.6內核會(huì )根據本地系統配置進(jìn)行初始設置,可以導入內核源碼默認s3c2410的配置文件,方便加載內核基本配置,然后再選擇所需選項。對MTD配置選擇支持MTD設備驅動(dòng)以及NAND FLASH驅動(dòng);選擇支持要用到的各類(lèi)文件系統(DEVFS、TMPFS、CRAMFS、YAFFS、EXT2、NFS)以及網(wǎng)絡(luò )設備和協(xié)議,本系統加載了網(wǎng)絡(luò )芯片CS8900以及USB支持;在H.264多媒體系統中還需要加載Frame buffer以支持LCD顯示功能。使用交叉編譯工具編譯內核源碼后, 會(huì )在arch/arm/boot/下生成名為zImage的內核映像,在Boot loader的命令提示模式下使用下載命令完成內核加載到開(kāi)發(fā)板的存儲設備FLASH中。編譯過(guò)程(相對以前版本的編譯過(guò)程,2.6內核編譯有所簡(jiǎn)化):
make mrproper
make menuconfig(字符界面,或者用make xconfig圖形界面,但需要Qt庫的支持,而make gconfig則需要GTK庫的支持)
make
make bzImage
2.4 文件系統
Linux采用文件系統組織系統中的文件和設備,為設備和用戶(hù)程序提供統一接口。Linux 支持多種文件系統,本系統使用CRAMFS格式的只讀根文件系統,而將FLASH中的USER區使用支持可讀寫(xiě)的YA FFS文件系統格式,方便添加自己的應用程序。
在根文件系統中,為保護系統的基本設置不被更改,采用CRAMFS格式。采用DEVFS來(lái)實(shí)現基本設備的建立掛載,同時(shí)使用BusyBox也是一個(gè)縮小根文件系統的辦法,提供了系統的基本指令;還需要建立一些必備的目錄,添加所需配置文件,如fstab、inittab等;還有一個(gè)重要的工作就是添加系統應用必備的動(dòng)態(tài)函數庫。使用生成工具mkcramfs 將整個(gè)根文件目錄里的內容制作成映像文件。
mkcramfs rootfs rootfs.ramfs
YAFFS文件系統格式的支持需要將驅動(dòng)加入到內核代碼樹(shù)下fs/yaffs/,修改內核配置文件,就可以在內核編譯中加載對該文件系統的支持。使用mkyaffs工具將NAND FLASH分區格式化為YAFFS分區,將mkyaffsimage生成的應用程序鏡像燒寫(xiě)進(jìn)YAFFS分區,在啟動(dòng)時(shí)通過(guò)寫(xiě)入fstab自動(dòng)加載YAFFS分區即可。
2.5 網(wǎng)絡(luò )設備驅動(dòng)
系統中采用CS8900A的10M網(wǎng)絡(luò )芯片,它使用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},內核源碼中加入芯片的驅動(dòng)程序drivers/net/arm/cs8900.h和cs8900.c,并且配置網(wǎng)絡(luò )設備驅動(dòng)的Makefile和Kconfig文件,加入CS8900A的配置選項,這樣可以在內核編譯時(shí)加載網(wǎng)絡(luò )設備的驅動(dòng)。
在Linux2.6應用的同時(shí),也要看到其與以前版本內核比較存在的一些問(wèn)題。在內核的編譯時(shí)間、內核鏡像大小、內核占用RAM空間大小、系統啟動(dòng)時(shí)間相對Linux2.4而言都存在不同程度的不足,但在硬件條件日益進(jìn)步的現今可以接受,而且一部分也是由于功能加強必然帶來(lái)的。雖然Linux并非一個(gè)真正的實(shí)時(shí)操作系統,但2.6內核的改進(jìn)能夠滿(mǎn)足大部分的應用需求,所以L(fǎng)inux2.6內核將會(huì )在嵌入式系統領(lǐng)域大展身手。
參考文獻
1 Alessandro Rubini,Jonathan Corbet著(zhù),魏永明,駱剛,姜 君譯.Linux設備驅動(dòng)[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
評論