基于PXA255的ARMLinux操作系統(tǒng)移植_第1頁(yè)
基于PXA255的ARMLinux操作系統(tǒng)移植_第2頁(yè)
基于PXA255的ARMLinux操作系統(tǒng)移植_第3頁(yè)
基于PXA255的ARMLinux操作系統(tǒng)移植_第4頁(yè)
基于PXA255的ARMLinux操作系統(tǒng)移植_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、    基于PXA255的ARMLinux操作系統(tǒng)移植摘要:Linux在嵌入式領(lǐng)域中應(yīng)用越來(lái)越廣泛,已成為最有潛力的嵌入式操作系統(tǒng)。操作系統(tǒng)的移植是進(jìn)行嵌入式應(yīng)用開(kāi)發(fā)的前提和基礎(chǔ)。ARMLinux是一種針對(duì)ARM體系結(jié)構(gòu)的Linux操作系統(tǒng)。本文以新一代高端嵌入式處理器PXA255為例,進(jìn)行ARMLinux的移植,闡述了移植中需要解決的關(guān)鍵技術(shù),包括:內(nèi)核的定制、文件系統(tǒng)的創(chuàng)建、設(shè)備驅(qū)動(dòng)的移植等。最后,在移植成功的平臺(tái)上實(shí)現(xiàn)了無(wú)線接入點(diǎn)。關(guān)鍵字:ARMLinux;移植;PXA255;CSB226;驅(qū)動(dòng)程序1.引摘要: Linux在嵌入式領(lǐng)域中應(yīng)用越來(lái)越廣

2、泛,已成為最有潛力的嵌入式操作系統(tǒng)。操作系統(tǒng)的移植是進(jìn)行嵌入式應(yīng)用開(kāi)發(fā)的前提和基礎(chǔ)。ARM Linux是一種針對(duì)ARM體系結(jié)構(gòu)的Linux操作系統(tǒng)。本文以新一代高端嵌入式處理器PXA255為例,進(jìn)行ARM Linux的移植,闡述了移植中需要解決的關(guān)鍵技術(shù),包括:內(nèi)核的定制、文件系統(tǒng)的創(chuàng)建、設(shè)備驅(qū)動(dòng)的移植等。最后,在移植成功的平臺(tái)上實(shí)現(xiàn)了無(wú)線接入點(diǎn)。關(guān)鍵字:ARM Linux;移植;PXA255;CSB226;驅(qū)動(dòng)程序1.     引言ARM處理器是當(dāng)今應(yīng)用最為廣泛的處理器芯片,它功耗小、成本低、性能優(yōu)越,在消費(fèi)電子類產(chǎn)品中占據(jù)主導(dǎo)地位。Linux操作系統(tǒng)

3、近年來(lái)在嵌入式領(lǐng)域中發(fā)展很快,由于其強(qiáng)大的性能和開(kāi)源免費(fèi)的特點(diǎn),越來(lái)越受到嵌入式系統(tǒng)開(kāi)發(fā)商的青睞,信息家電、網(wǎng)絡(luò)設(shè)備、手持終端等都是嵌入式Linux應(yīng)用的廣大市場(chǎng)。在嵌入式開(kāi)發(fā)中,把操作系統(tǒng)移植到開(kāi)發(fā)板是進(jìn)行嵌入式應(yīng)用開(kāi)發(fā)的前提和基礎(chǔ)。ARM Linux是針對(duì)ARM體系結(jié)構(gòu)的嵌入式Linux操作系統(tǒng)。本文主要闡述了將ARM Linux系統(tǒng)移植到基于PXA255處理器的開(kāi)發(fā)板CSB226上的方法和關(guān)鍵技術(shù)。2.     軟硬件平臺(tái)環(huán)境2.1.   硬件平臺(tái)(1)PXA255處理器Intel PXA255是基于XScale微架構(gòu)的一款嵌入

4、式應(yīng)用處理器,它在XScale結(jié)構(gòu)的基礎(chǔ)上集成了眾多的外設(shè)接口,如:PCMCIA控制器、LCD控制器、多媒體通信口等,是專為高性能、低功耗的便攜式手持設(shè)備而開(kāi)發(fā)的。CSB226是基于PXA255處理器而設(shè)計(jì)的一款開(kāi)發(fā)板,本文的移植工作就是在此開(kāi)發(fā)板上進(jìn)行的。CSB226還配置有許多外設(shè),包括:64MB SDRAM內(nèi)存、32MB Flash、CS8900A以太網(wǎng)控制器、CF接口等。CSB226開(kāi)發(fā)板系統(tǒng)結(jié)構(gòu)框圖2如圖1所示。圖1 CSB226開(kāi)發(fā)板系統(tǒng)結(jié)構(gòu)框圖(2)硬件環(huán)境搭建嵌入式開(kāi)發(fā)通常采用宿主機(jī)目標(biāo)機(jī)的主從開(kāi)發(fā)模式3。宿主機(jī)指開(kāi)發(fā)主機(jī),由一臺(tái)通用PC機(jī)或工作站構(gòu)成;目標(biāo)機(jī)即指嵌入式設(shè)備,在

5、本文中是CSB226開(kāi)發(fā)板。硬件的連線圖如圖2所示,開(kāi)發(fā)板和宿主機(jī)之間通過(guò)串口、以太網(wǎng)或JTAG口等進(jìn)行通信,采用“交叉”開(kāi)發(fā)方式。本文采用硬件仿真工具BDI2000進(jìn)行軟件的調(diào)試,仿真器一端通過(guò)JTAG口與目標(biāo)機(jī)相連,另一端用網(wǎng)線與宿主機(jī)相連。圖2 主機(jī)和目標(biāo)機(jī)的連線圖2.2.   軟件環(huán)境本文開(kāi)發(fā)主機(jī)采用RedHat9.0操作系統(tǒng)。首先需要對(duì)開(kāi)發(fā)主機(jī)和目標(biāo)機(jī)做一些設(shè)置,然后搭建交叉編譯和調(diào)試環(huán)境,具體步驟如下:在開(kāi)發(fā)主機(jī)上需要做以下設(shè)置:(1)啟動(dòng)NFS服務(wù),為目標(biāo)機(jī)使用NFS文件系統(tǒng)做準(zhǔn)備;(2)安裝TFTP服務(wù)器,為目標(biāo)機(jī)從主機(jī)上下載文件提供服務(wù);(3)啟動(dòng)Teln

6、et服務(wù);(4)安裝Minicom工具,它是Linux環(huán)境下的超級(jí)終端工具,用它與目標(biāo)機(jī)進(jìn)行串口通信。另外,目標(biāo)機(jī)上需要設(shè)置IP地址,與開(kāi)發(fā)主機(jī)設(shè)置在同一網(wǎng)段。對(duì)于交叉編譯環(huán)境,使用最廣泛的ARM Linux交叉工具鏈為arm-linux-toolchain,由bin、include、lib三部分組成。調(diào)試環(huán)境的搭建使用GNU/GDB調(diào)試工具,安裝后生成ARM平臺(tái)的交叉調(diào)試工具arm-linux-gdb。3.     基于PXA255的ARM Linux移植關(guān)鍵技術(shù)3.1.   內(nèi)核定制Linux內(nèi)核和文件系統(tǒng)是嵌入式Linux的兩個(gè)

7、核心部分。首先進(jìn)行內(nèi)核的編譯,在開(kāi)發(fā)主機(jī)上配置編譯ARM Linux內(nèi)核,生成一個(gè)針對(duì)CSB226平臺(tái)的Linux內(nèi)核映像zImage。本文使用2.4.19版本的標(biāo)準(zhǔn)內(nèi)核,編譯內(nèi)核的步驟如下:(1)準(zhǔn)備Linux內(nèi)核源代碼linux-2.4.19.tar和平臺(tái)相關(guān)的系列補(bǔ)?。簆atch-2.4.19-rmk7.gz、diff-2.4.19-rmk7-pxa2.gz、linux-2.4.19-rmk7-pxa2-ptx14.diff。(2)解壓源碼包并按順序打上幾個(gè)補(bǔ)丁,再對(duì)內(nèi)核源碼的配置文件作適當(dāng)?shù)男薷?,然后用make dep,make zImage命令進(jìn)行編譯,如果編譯成功會(huì)在Linux源碼

8、arch/arm/boot目錄下生成內(nèi)核映像文件zImage。在內(nèi)核成功編譯之前,關(guān)鍵是對(duì)內(nèi)核源碼做適當(dāng)?shù)男薷?,以適應(yīng)特定的開(kāi)發(fā)平臺(tái)。本文中對(duì)源碼的修改有如下幾點(diǎn):(1)將Makefile文件中的編譯器改為交叉編譯器arm-linux-gcc,體系結(jié)構(gòu)改為ARM。(2)本文中使用NFS方式掛載文件系統(tǒng),因此,需要在CSB226的默認(rèn)配制文件linux/arch/arm/def-configs/csb226中設(shè)置配置命令行的屬性:CONFIG_CMDLINE ="root=/dev/nfs rw nfsroot=:/home/busybox ip= me

9、m=64M console=tty0 console=ttyS0,38400",其中“root=/dev/nfs”指定設(shè)備文件,“:/home/busybox”是文件系統(tǒng)所在開(kāi)發(fā)主機(jī)的IP地址和目錄位置,是目標(biāo)機(jī)的IP地址。主機(jī)端和目標(biāo)機(jī)的串口通信波特率要一致,本項(xiàng)目中是38400。(3)在源碼linux/arch/arm/tools/目錄下的mach-types文件中添加CSB226的宏定義和機(jī)器號(hào),CSB226的機(jī)器號(hào)是216,這個(gè)整數(shù)是唯一的,在啟動(dòng)初始化的時(shí)候會(huì)把它賦給微處理器的R1寄存器。(4)用make menuconfig命令對(duì)默認(rèn)配置做

10、一些調(diào)整,比如添加外設(shè)、網(wǎng)絡(luò)協(xié)議和文件格式等選項(xiàng)。成功生成映像文件zImage后,就可以下載到目標(biāo)機(jī)運(yùn)行了,但只有這個(gè)內(nèi)核還無(wú)法與系統(tǒng)交互,還需要一個(gè)文件系統(tǒng)。3.2.   文件系統(tǒng)(1)嵌入式文件系統(tǒng)制作本文采用Busybox工具包組建嵌入式文件系統(tǒng)。直接配置編譯Busybox就可以創(chuàng)建/bin、/sbin、/usr等目錄,其中包含了大部分常用的命令,但Busybox并不提供與登錄相關(guān)的命令如:login、getty、passwd等,這需要用Tinylogin軟件包生成。/lib目錄的動(dòng)態(tài)庫(kù)文件可以用Glibc生成。/dev目錄下是系統(tǒng)所用的設(shè)備節(jié)點(diǎn),只需要根據(jù)當(dāng)前平臺(tái)對(duì)

11、外設(shè)的支持情況逐個(gè)地添加即可。/etc目錄是系統(tǒng)配置文件和子目錄,比如啟動(dòng)配置、網(wǎng)絡(luò)配置等,需要針對(duì)特定應(yīng)用啟動(dòng)相應(yīng)的服務(wù)和進(jìn)程。(2)文件系統(tǒng)的掛載創(chuàng)建好文件系統(tǒng)的目錄結(jié)構(gòu)后,還需要將目錄制作成某種格式的文件系統(tǒng),掛載到Linux內(nèi)核下使用。常用的掛載方式有Ramdisk、JFFS2、NFS,其中NFS(Network File System)是網(wǎng)絡(luò)文件系統(tǒng),它的優(yōu)點(diǎn)是可以從主機(jī)上直接修改文件系統(tǒng),方便開(kāi)發(fā)。本文使用NFS的掛載方式,將根文件系統(tǒng)是放在開(kāi)發(fā)主機(jī)上,開(kāi)發(fā)主機(jī)提供網(wǎng)絡(luò)共享服務(wù),目標(biāo)機(jī)在啟動(dòng)時(shí)通過(guò)NFS方式掛載根文件系統(tǒng)。3.3.   設(shè)備驅(qū)動(dòng)移植將Linux內(nèi)

12、核移植到CSB226開(kāi)發(fā)板上后,還需要移植常用外設(shè)的驅(qū)動(dòng)程序,如:LCD液晶屏、鼠標(biāo)、鍵盤、CF卡等。下面重點(diǎn)闡述LCD液晶屏和CF卡的移植過(guò)程。(1)LCD液晶屏的驅(qū)動(dòng)移植Linux中的Framebuffer幀緩沖驅(qū)動(dòng)分為三層4,中間層及上層是設(shè)備無(wú)關(guān)的軟件層,底層是與硬件相關(guān)的幀緩沖驅(qū)動(dòng),因此,LCD驅(qū)動(dòng)移植主要是驅(qū)動(dòng)幀緩沖硬件設(shè)備,在本文中對(duì)應(yīng)于CSB226平臺(tái)上的LCD控制器和其外接的TFT LCD顯示器?;赑XA255微處理器的不同平臺(tái)的差異主要在于外接的LCD顯示屏硬件的差異,因此對(duì)于不同平臺(tái)的幀緩沖驅(qū)動(dòng)程序的差別主要是在LCD控制寄存器中顯示屏規(guī)格參數(shù)的設(shè)置上有不同。LCD寄存

13、器中的初始規(guī)格參數(shù)是在頭文件drivers/video/pxafb.h的宏定義中設(shè)置的,因此對(duì)于不同的硬件平臺(tái)只要更改硬件的規(guī)格參數(shù)即可。這些參數(shù)是在初始化函數(shù)pxafb_init()中進(jìn)行配置的。(2)CF卡的驅(qū)動(dòng)移植CF(Compact Flash)接口是一種標(biāo)準(zhǔn)的擴(kuò)展接口,主要用于擴(kuò)展存儲(chǔ)空間,如本文使用的128M CF存儲(chǔ)卡,也可以外接其他設(shè)備,如CF接口的modem、無(wú)線網(wǎng)卡等。在Linux系統(tǒng)下,由于CF卡與PCMCIA設(shè)備控制器兼容,通常把CF卡當(dāng)作PC Card設(shè)備進(jìn)行驅(qū)動(dòng)和管理。PCMCIA的插槽驅(qū)動(dòng)和PC卡驅(qū)動(dòng)與硬件直接相關(guān),是驅(qū)動(dòng)移植中需要重新實(shí)現(xiàn)的部分。CF存儲(chǔ)卡的驅(qū)動(dòng)

14、可以直接使用標(biāo)準(zhǔn)的ATA/IDE設(shè)備驅(qū)動(dòng)ide-cs模塊,因此在CSB226平臺(tái)上驅(qū)動(dòng)CF存儲(chǔ)卡,只需要編寫PCMCIA控制器的驅(qū)動(dòng)。PXA225片上的PCMCIA控制器驅(qū)動(dòng)的初始化函數(shù)為pxa_pcmcia_driver_init(),它調(diào)用底層PCMCIA接口函數(shù)初始化具體平臺(tái)上的插槽接口設(shè)備。這些底層函數(shù)是板級(jí)驅(qū)動(dòng)與插槽驅(qū)動(dòng)之間的標(biāo)準(zhǔn)接口,定義在結(jié)構(gòu)體struct pcmcia_low_level中。CF卡驅(qū)動(dòng)移植的主要工作就是實(shí)現(xiàn)pcmcia_low_level結(jié)構(gòu)體中底層平臺(tái)相關(guān)的5個(gè)接口函數(shù)。pcmcia_low_level數(shù)據(jù)結(jié)構(gòu)如下:struct pcmcia_low_leve

15、l   int (*init)(struct pcmcia_init *);  int (*shutdown)(void);  int (*socket_state)(struct pcmcia_state_array *);  int (*get_irq_info)(struct pcmcia_irq_info *);  int (*configure_socket)(unsigned int, socket_state_t *);l       init函數(shù),主要完成三個(gè)工作:執(zhí)行

16、平臺(tái)相關(guān)的初始化任務(wù);設(shè)置所需要中斷信號(hào)的方向和邊緣觸發(fā)方式;注冊(cè)設(shè)備發(fā)現(xiàn)中斷與對(duì)應(yīng)的中斷處理函數(shù)。l       shutdown函數(shù),在卸載驅(qū)動(dòng)時(shí)使用,用來(lái)釋放所申請(qǐng)的資源。l       socket_state函數(shù),設(shè)置插槽的初始化狀態(tài)信息,完成對(duì)輸入?yún)?shù)所包含的數(shù)據(jù)結(jié)構(gòu)struct pcmcia_state賦值,需要根據(jù)實(shí)際插槽的狀態(tài)信息正確設(shè)置此數(shù)據(jù)結(jié)構(gòu)。l       get_irq_info函數(shù),用來(lái)

17、獲得每個(gè)插槽接口設(shè)備上的Ready中斷信號(hào)。l       configure_socket函數(shù),由上層驅(qū)動(dòng)調(diào)用,用來(lái)動(dòng)態(tài)改變插槽的狀態(tài),比如工作電壓VCC、可編程電壓VPP等。將PCMCIA驅(qū)動(dòng)程序成功編譯進(jìn)內(nèi)核后,還需要使用卡管理工具cardmgr監(jiān)測(cè)CF卡設(shè)備,當(dāng)CF存儲(chǔ)卡插入到CSB226開(kāi)發(fā)板的插槽時(shí),cardmgr會(huì)發(fā)現(xiàn)該設(shè)備并完成設(shè)備的加載。4.     應(yīng)用實(shí)例在CSB226開(kāi)發(fā)板上成功移植了ARM Linux后,可以進(jìn)行多種應(yīng)用開(kāi)發(fā),如:電子地圖查詢系統(tǒng),娛樂(lè)游戲機(jī)等。本文在C

18、SB226開(kāi)發(fā)板上插入一塊基于Prism2芯片組的CF接口的無(wú)線網(wǎng)卡,由于已經(jīng)成功驅(qū)動(dòng)了CF接口,所以只需要將無(wú)線接入點(diǎn)程序Host AP編譯到ARM Linux內(nèi)核中,再使用網(wǎng)橋工具將CSB226開(kāi)發(fā)板自身的10MBit以太網(wǎng)和無(wú)線網(wǎng)絡(luò)橋接起來(lái),這個(gè)開(kāi)發(fā)板就可以作為一臺(tái)無(wú)線接入點(diǎn)工作了。5.     結(jié)論Linux操作系統(tǒng)在嵌入式設(shè)備中應(yīng)用越來(lái)越廣泛。本文針對(duì)基于PXA255處理器的開(kāi)發(fā)板進(jìn)行了系統(tǒng)移植,闡述了移植中的關(guān)鍵技術(shù),如:內(nèi)核的修改、文件系統(tǒng)建立、設(shè)備驅(qū)動(dòng)的移植,最后在開(kāi)發(fā)板上實(shí)現(xiàn)了無(wú)線接入點(diǎn)。本文的移植過(guò)程對(duì)于其他類型微處理器上Linux的移植也具有參考價(jià)值。 本文作者創(chuàng)新點(diǎn):基于CSB226開(kāi)發(fā)板進(jìn)行了ARM Linux操作系統(tǒng)的移植,對(duì)LCD和CF卡設(shè)備驅(qū)動(dòng)的平臺(tái)相關(guān)部分進(jìn)行了重寫。最后在開(kāi)發(fā)板上實(shí)現(xiàn)了無(wú)線接入點(diǎn)的應(yīng)用。參考文獻(xiàn):1 毛德操, 胡希明. 嵌入式系統(tǒng)采用公開(kāi)源代碼和StrongARM/XScale處理器M. 杭州

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論