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