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