劉 迪,周 強
(安徽理工大學,安徽 淮南 232001)
嵌入式系統(tǒng)是傳感器、微電子、計算機和半導體等先進技術(shù)相結(jié)合的產(chǎn)物。嵌入式系統(tǒng)適合對功耗、成本、功能、可靠性等嚴格要求的專用計算機系統(tǒng)[1-2]。隨著嵌入式系統(tǒng)的迅速發(fā)展,其應用領(lǐng)域越來越廣范。
嵌入式系統(tǒng)中的操作系統(tǒng)選擇Linux。Linux是一種具有開發(fā)成本低,可應用于多種硬件平臺,可定制的內(nèi)核,性能優(yōu)異,良好的網(wǎng)絡(luò)支持等優(yōu)勢的系統(tǒng)[3]。Linux具有的諸多優(yōu)勢,注定它將在嵌入式操作系統(tǒng)的應用中,給人們帶來意想不到的驚喜,使生活越來越便捷。
系統(tǒng)加電后運行的第一段程序是Boot Loader。通常由BIOS和位于MBR的操作系統(tǒng)Boot Loader組成,系統(tǒng)的加載啟動任務(wù)交由Boot Loader完成,這段小程序,可以初始化必要的硬件設(shè)備,把內(nèi)核需要的信息創(chuàng)建出來,并且這些有用的信息經(jīng)相關(guān)機制可傳遞給內(nèi)核,將軟件和硬件系統(tǒng)的環(huán)境帶到合適的狀態(tài)。最后對操作系統(tǒng)的內(nèi)核進行調(diào)用,可產(chǎn)生引導和加載內(nèi)核的效果[4]。VIVI是一種Boot Loader,本文在移植VIVI時,以smdk2410為基礎(chǔ),經(jīng)修改后實現(xiàn)。外部定義的初始值、相應NAND FLASH中各鏡像的初始地址都是需要修改的參數(shù)。
內(nèi)核裁剪是對內(nèi)核進行相關(guān)修改,將其中多余的程序刪除掉。Linux內(nèi)核對系統(tǒng)修改后,能夠建立一個配置對話框,方便對內(nèi)核進行相應的修改。系統(tǒng)執(zhí)行修改時,大部分內(nèi)容是頭文件、Kconf i g和修改時會用到的東西,能夠建立修改的對話框。Linux內(nèi)核的配置命令包括make conf i g,make menuconf i g 及 make xconf i g[5]。
實現(xiàn)在對內(nèi)核的配置后,其編譯相對容易。
(1)進入目錄
[root@zxt/]cd/arm2410cl/kernel/linux-2.4.18-2410cl/
(2)make clean
[root@ linux-2.4.18-2410cl/] make clean
該指令是把界面用不到的東西清除掉,而且是在正式make內(nèi)核前。
(3)make dep
這條命令是創(chuàng)建內(nèi)核的依賴關(guān)系。
(4)make zImage
這條命令是最終的編譯命令,這里建立的為壓縮的內(nèi)核映像。
(5)到/arm2410cl/kernel/linux-2.4.18-2410cl/arch/arm/boot下查看新生成的內(nèi)核文件。
[root@BC linux-2.4.18-2410cl]# cd arch/arm/boot/
[root@BC boot]# ls
bootp conpressed install.sh Makefile zImage
YAFFS(Yet Another Flash File System,YAFFS)文件系統(tǒng)是專門針對NAND閃存設(shè)計的嵌入式文件系統(tǒng)。該系統(tǒng)相對于JFFS2減少了部分功能,提升了運行速度,并且占用的內(nèi)存也相對減少[6],因此本文選用YAFFS作為根文件系統(tǒng)。
制作根文件系統(tǒng)步驟如下:
(1)創(chuàng)建一個名字為rootfs的文件夾,在其中創(chuàng)建
etc bin var dev home lib mnt proc root sbin sys tmp usr opt共14個文件夾;
(2)解壓Busybox;
(3)編譯Busybox工具集;
(4)配置完成后,執(zhí)行make和make install;
(5)在dev目錄下,創(chuàng)建兩個設(shè)備節(jié)點:mknod console c 5 1與mknod null c 1 3;
(6)進入自己建立的etc目錄??截怋usybox-1.16/examples/bootf l oopy/etc/* 到當前目錄下。包括文件fstab init.d inittab profile[7];
(7)修改inittab文件;
(8)修改init.d/rcS文件;
(9)修改profile文件;
(10)用mkyaffs2image工具將指定的根文件系統(tǒng)目次生成YAFFS根文件系統(tǒng)映像:
[root@vm-dev rootfs]# mkyaffs2image rootfs root.yaffs
[root@vm-dev rootfs]# ls busybox-1.12.2 busybox-1.12.2.tar.bz2
mkyaffs2image root.yaffs rootfs rootfs.tar.bz2
[root@vm-dev rootfs]#
生成root.yaffs根文件系統(tǒng)文件。
VIVI燒寫時,將PC機和2410-CL實驗箱的線連接好,打開實驗箱的電源;在D盤創(chuàng)建一個目錄引導加載程序,把四個文件拷貝到此目錄下;進入D:/Boot Loader目錄,運行sjf2410-s命令:sjf2410-s /f:vivi,完成VIVI的燒寫,啟動引導程序。燒寫內(nèi)核時,將并口線拔掉,連接2410-CL實驗箱的網(wǎng)線。在VIVI狀態(tài)下,輸入燒寫內(nèi)核的命令為:tftp fl ash kernel zImage。在實現(xiàn)內(nèi)核的燒寫后,輸入燒寫root命令:tftp fl ash root root.yaffs。
在完成以上的燒寫內(nèi)容后就可對移植到ARM9平臺上的應用程序進行測試,對某音樂播放器mplayer進行測試。在2410-CL的實驗箱上音樂播放器可以正常播放,證明應用程序在ARM9平臺上可以運行,移植成功。
本文主要介紹了Boot Loader的移植方法、內(nèi)核和根文件系統(tǒng)的定制過程,最后通過燒寫VIVI、內(nèi)核和根文件系統(tǒng)完成嵌入式Linux操作系統(tǒng)在ARM9平臺上的移植。此舉對嵌入式Linux系統(tǒng)的應用發(fā)展具有深遠意義。