嵌入式Linux在IOP331上的移植實現(xiàn)
引言
虛擬磁帶庫是指對于用戶端(備份服務器/網(wǎng)絡端)體現(xiàn)為常規(guī)磁帶庫,但是使用磁盤陣列為存儲介質的備份設備。它不僅大大提高了系統(tǒng)的可靠性和可用性,而且對于那些主要使用磁帶為數(shù)據(jù)存儲介質、現(xiàn)在想更換為磁盤陣列但又不想全部更換原有設備的用戶來說具有非常重要的意義。虛擬磁帶庫的實現(xiàn),依賴于以下三項核心技術:嵌入式微處理器、存儲協(xié)議微處理器和嵌入式操作系統(tǒng)。嵌入式微處理器作為系統(tǒng)的主控單元,實現(xiàn)人機交換及存儲協(xié)議處理器的控制,同時也是嵌入式操作系統(tǒng)的運行平臺;存儲協(xié)議微處理器實現(xiàn)與存儲介質之間的數(shù)據(jù)傳輸;嵌入式操作系統(tǒng)主要實現(xiàn)內存管理與進程調度,為設備驅動程序與用戶應用程序提供軟件平臺。本文首先介紹Linux操作系統(tǒng)和Intel 高性能I/O處理器IOP331,然后詳細分析移植的各個步驟,最后給出驗證和結論。
1.Linux操作系統(tǒng)和IOP331
Linux操作系統(tǒng)源碼開放,遵循GPL聲明,可以自由修改和傳播。由于專用實時操作系統(tǒng)價格昂貴及源碼不公開,使Linux在嵌入式應用中占有一席之地。由于Linux自身有諸多優(yōu)勢,吸引了很多開發(fā)商的目光,成為嵌入式操作系統(tǒng)的新寵。其源代碼可以從Linux的相關網(wǎng)站下載。
本設計使用的嵌入式微處理器是基于XScale的高性能I/O處理器。XScale是Intel公司定義的基于ARM V5TE(除浮點運算外),即支持Thumb模式及DSP擴充指令集的ARM V5體系結構。其硬件體系結構如圖1所示。
圖1 Intel 80331硬件體系結構圖
2.Linux操作系統(tǒng)的移植
2.1 建立交叉編譯環(huán)境
在移植前需要在主機上建立交叉編譯環(huán)境。作者在使用的主機上安裝了Fedora Core 4的系統(tǒng),從網(wǎng)上獲得了建立交叉編譯工具鏈的軟件包crosstool-0.42.tar.bz2。使用最新的binutils和kernel,gcc版本為4.0.2,glibc版本為2.3.6。
解壓并修改相關的配置文件后運行demo-arm-xscale.sh腳本建立armv5l-linux的交叉編譯工具。整個的建立過程可以分為如下幾個階段:
定義環(huán)境變量à解壓linux內核并對內核打補丁à編譯安裝GDB for XScaleà編譯安裝bintuils工具集à編譯安裝有關基本的針對XScale CPU的gcc(只支持C語言編譯)à編譯生成Linux內核à編譯用于用戶程序的glibc程序庫à建立完整功能的gcc。
2.2 配置和編譯內核
下載Linux-2.6.15.4內核源代碼和針對IOP331的補丁文件patch-2.6.15.4-iop1。解壓內核后使用patch命令對內核打補丁。由于作者使用的是Ramdisk文件系統(tǒng),故內核配置選項中應支持RamDisk support和Initial Ram disk (initrd) support選項。然后使用已經(jīng)建好的交叉編譯工具鏈進行編譯。
內核編譯完成后,從目標平臺通過TFTP協(xié)議下載內核映像。如果是內核映像的最終版本,則使用RedBoot的fis命令將其燒入Flash中,之后每次啟動時RedBoot將從Flash中裝載內核映像至內存中并解壓啟動。
上面提到的主Makefile是指根目錄下的Makefile。它的作用是:根據(jù).config配置文件形成編譯的源文件列表à使用CC對源文件進行編譯à使用LD把目標代碼鏈接到一起à形成Linux內核映像和相關文件。
評論