基于Xscale的PC/104 Linux系統構建
3.3 Boot Loader移植
引導加載程序Boot loader是在操作系統內核運行前運行的一小段程序。用來完成硬件和軟件運行環境的初始化,建立內存空間映射圖,以便最終調用操作系統內核。作用與PC機上的BIOS基本相同,是最底層的引導程序。
本文采用了功能最多、最具彈性的被最為積極開發和維護的開放源碼的bootloader,即U-BOOT。它除了提供引導功能外,還提供監控程序的功能,該功能在系統開發期間非常有用。
Boot Loader移植操作如下:
首先確定在cpu./xscale/和board./pxa270下存在xscale.c和pxa270.c兩個文件,然后在根目錄下輸入:make pxa270_config得到U-Boot.bin映像文件,最后用JTAG燒錄到FLASH,完成Boot Loader的移植。
3.4 Linux內核的配置與裁減
Linux內核已經發展到2.6.20版本,功能非常強大,但是,體積也變的異常龐大。因此,必須針對PC/104目標板的硬件配置進行裁減。
根據目標板PXA270的資源配置,采用make menuconfig配置內核,將有關CPU、內存管理、JFFS2文件系統支持、串口支持、網口支持編譯進內核,將音頻、觸摸屏接口、LVDS接口作為模塊編譯,需要時動態載入,這樣編譯下來的內核只有300KB左右,大大減小了內核的體積,減輕了目標板有限的存儲空間和內存的壓力。
編譯并生成鏡像命令如下:
1)#tar jxvf my-linux-2.6.10..tar.bz2
2)#ln –s linux-2.6.10 linux
3)#cd linux
4)#make clean
5)#make dep
6)#make bzImage
3.5 文件系統的選擇和建立
根據文件系統的特性[5]和PC/104目標板的硬件環境,選擇JFFS2作為PC/104目標板的文件系統。JFFS2文件系統具有垃圾回收功能維護空間,并且它的元數據的結構允許文件系統的寫入操作,故可提供對使用Flash系統而言非常重要的斷電可靠性和損耗平衡特性,能應對PC104工作時的突發事件,避免系統由于突發事件造成崩潰,從而提高系統的安全性。
商用發行版Red Hat的文件系統內容來自GNU,體積龐大,不適合做嵌入式系統的文件系統,而Busybox是小型嵌入式系統常用的一個套件,它可以根據配置執行ash shell的基本功能,以及幾十個小應用程序的功能,而大小只有300K左右,是目前嵌入式領域最活躍的系統應用套件。故本文使用Busybox系統套件。
將全部的文件系統移植到目標板之前,需要用mkfs.jffs2工具打包。具體移植操作如下:
1) 解壓根文件系統,生成root目錄。
#tar jxf up-netpxa270_fs.tar.bz2
2) 解壓busybox
#cd up-techpxa270/kernel/02_root
#tar zxf busybox-1.00-pre9.tar.gz
#cd busybox-1.00-pre9
3) 配置安裝busybox
#make menucongfig
4) 生成JFFS2文件系統
#/mkfs.jffs2 -r root -o rootfs.img -e 0x20000 --pad=0xd00000
移植好文件系統后,便可以通過U-boot引導,并掛載該文件系統根分區啟動Linux。
4 系統測試
開發的基于Xscale的PC/104 Linux系統硬件如圖1所示。室溫25℃,通風良好條件下,經測試,系統能夠啟動并穩定運行(如圖2),通過PING命令測試表明,系統能夠與外網連通(如圖3),且工作穩定,系統構建成功。
圖1 PC/104開發板
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論