PowerPC平臺Linux的移植(一)
PowerPC是早期Motorola和IBM聯(lián)合為Apple的MAC機開發(fā)的CPU芯片,商標權(quán)同時屬于IBM和Motorola,并成為他們的主導(dǎo)成品.IBM主要的PowerPC產(chǎn)品有PowerPC604s(深藍內(nèi)部的CPU), PowerPC750,PowerPCG3(1.1GHz).Motorola主要有MC和MPC系列.盡管他們產(chǎn)品不一樣,但都采用PowerPC的內(nèi)核.這些產(chǎn)品大都用在嵌入式系統(tǒng)中.我們這里要介紹的,主要是針對IBM在xilinx平臺上推出的PowerPC嵌入式內(nèi)核。本文所寫的內(nèi)容,基本上都是用于XUP大學(xué)計劃開發(fā)板的,但是其中很多步驟都是通用的,你完全可以在Xilinx ML-403開發(fā)板或者其他相應(yīng)板子上參考這些步驟,它們之間最大的區(qū)別就是創(chuàng)建SystemACE時的命令行不同,在相應(yīng)的部分會具體講解。應(yīng)該說不管什么平臺,整個流程都遵從于:Kernel preparaTIon —》 isntall BSP —》 Build hardware platform —》 Memory test —》 Build kernel image —》 Download本文假設(shè)讀者對linux環(huán)境下ISE,EDK等工具的操作已經(jīng)熟悉,并對在XUP開發(fā)板上定制基本硬件系統(tǒng)已經(jīng)熟悉,因此不再詳細涉及這方面的問題。本文作者直接使用linux作為開發(fā)環(huán)境,因此文章中也不會涉及交叉編譯環(huán)境的創(chuàng)建,如果你是windows用戶,請自行參考網(wǎng)上有關(guān)cygwin的文章;如果你所使用的操作系統(tǒng)是linux,但對開發(fā)環(huán)境的建立不熟悉,可以參考我之前寫的linux下eda工具安裝這篇文章;如果你對硬件系統(tǒng)的定制還不算熟悉,請將問題針對到某一個模塊,然后留言詢問。整個文章比較長,從目前已經(jīng)寫了的內(nèi)容來看,可能要分三個部分發(fā)布。這里是第一部分。基本系統(tǒng)信息軟件:ISE和EDK都是9.1,沒有sp,操作系統(tǒng)是ubuntu 7.04;硬件:XUP開發(fā)板,usb下載線;基本系統(tǒng)組成:300MHz PPCopb_sysaceopb_ethernet (無DMA)DDR memory controlleropb_uart_16550plb_bram_if_cntrl(bram選擇最大容量)所有部件都要有中斷支持。按照上面的基本要求把系統(tǒng)構(gòu)建起來,OS先選擇standalone,跑一個基本程序看一看。只有確認基本系統(tǒng)正常之后,才可以知道以后移植系統(tǒng)時遇到的毛病是否是硬件原因。在EDK中創(chuàng)建BSP首先,打開軟件平臺設(shè)置的選項,按照下列步驟執(zhí)行:1. 將PPC_405_0的OS設(shè)置為linux_mvl31,我這里的版本是1.01.c2. 進入Library/OS選項,其中,MEM_SIZE設(shè)置成你所用平臺上內(nèi)存的容量,比如是256MB就設(shè)置成0&TImes;10000000,依此類推。 PLB_CLOCK_FREQ_HZ是你PLB總線的頻率,XUP是100MHz,也就是100000000,其他類型開發(fā)板自行修改。 TARGET_DIR是你用于存放BSP的路徑,注意,路徑千萬不能有空格。3. 添加硬件,在connected_periphs里面,不過一般點進去之后就都已經(jīng)幫你自動添加好了。4. 執(zhí)行l(wèi)ibgen。如果一切順利,就可以生成相應(yīng)的bsp了。如果在這個過程中出現(xiàn)了什么問題,都可以去EDK安裝目錄下的sw/ThirdParty/bsp/linux_mvl31_v1_00_a/data/目錄去看看相應(yīng)的tcl文件,它們是用來實際執(zhí)行BSP操作的命令。到這里,你就已經(jīng)有了可工作的bit流文件以及為Linux準備的BSP文件了。但有趣的是,我發(fā)現(xiàn)BSP的作用很小,所有edk9.1生成的文件,你所需要的可能就只有xparameters.h 和 xparameters_ml403.h真正有用,其它文件作用很少,如果你下載的Linux源代碼是montavista的東西,甚至連這兩個文件都不用了。當然,如果使用的電路板是自定制的,像xparameters_ml403.h就會有不同的macro定義,因此這兩個是一定要覆蓋默認的內(nèi)核目錄下的同名文件的。出于保險,最后還是使用上這個BSP就行了。創(chuàng)建用于ppc的交叉編譯環(huán)境通常,程序是在一臺計算機上編譯,然后再分布到將要使用的其他計算機上。當主機系統(tǒng)(運行編譯器的系統(tǒng))和目標系統(tǒng)(產(chǎn)生的程序?qū)⒃谄渖线\行的系統(tǒng))不兼容時,該過程就叫做交叉編譯。建立一個交叉編譯工具鏈是一個相當復(fù)雜的過程,如果你不想自己經(jīng)歷復(fù)雜的編譯過程,網(wǎng)上有一些編譯好的可用的交叉編譯工具鏈可以下載。在這里,我們直接通過現(xiàn)成的腳本來建立ppc的交叉編譯環(huán)境,如果你對自己編譯建立這個環(huán)境感興趣,可以自行參考文章如何為嵌入式開發(fā)建立交叉編譯環(huán)境??紤]到絕大多數(shù)人使用的都是x86電腦,因此,建立適宜于ppc的交叉編譯環(huán)境就是必要的。首先,到這里來下載crosstoll的安裝包。下載完后解壓縮,進入文件夾,你就能看見很多類似于demo-arch.sh這種形式的腳本。每一種arch,對應(yīng)的自然就是一種硬件平臺,而我們這里要使用的,就是demo-powerpc-405.sh。如果你對這套工具感興趣,可以參閱其使用說明。這里,筆者只根據(jù)自己的開發(fā)環(huán)境來進行講解。在使用之前,需要先對腳本編輯一下。打開demo-powerpc-405.sh,TARBALLS_DIR是相關(guān)下載資源的存放地,因為在安裝交叉編譯環(huán)境之前,需要從網(wǎng)上下載glibc,gcc等的源代碼包。RESULT_TOP的值是安裝后的目錄,自行根據(jù)需要修改。另外找到這句話:eval `cat powerpc-405.dat gcc-4.1.0-glibc-2.3.6.dat` sh all.sh –notestls將其中的gcc-4.1.0-glibc-2.3.6.dat修改為適合你平臺的dat文件。可以先看看文件夾里面有哪些dat文件,gcc-4.1.0表示gcc的版本,glibc-2.3.6表示glibc的版本,這些版本號都要和你實際機器上的版本號相對應(yīng)。如果不準備修改目錄,就在/opt目錄下自己建一個crosstool目錄,并將其權(quán)限改為可寫,最后執(zhí)行腳本:sudo mkdir /opt/crosstoolsudo chown $USER /opt/crosstoolsh demo-powerpc-405.sh之后,腳本就會根據(jù)你所修改的選項,去網(wǎng)上找相應(yīng)版本的gcc,gdb,glibc,內(nèi)核等,下載并編譯安裝。具體所消耗的時間是和你的網(wǎng)速息息相關(guān)的。如果你所在的網(wǎng)絡(luò)速度很慢,建議你還是不要嘗試了,換個網(wǎng)絡(luò)再測試吧。或者你可以看看腳本中TARBALLS_DIR目錄的值,然后自行下載所需要的各種工具以及內(nèi)核的源碼包,并自己放到這個目錄下,再執(zhí)行sh demo-powerpc-405.sh即可。唯一需要注意的就是,你自己下載的環(huán)境工具源碼包的版本需要和demo-powerpc-405.sh里面指定的版本一致。所有需要的資源下載完畢之后,并不是就直接執(zhí)行demo-powerpc-405.sh了,因為直接執(zhí)行的話可能出現(xiàn)一些問題,所以在之前要先做一些準備步驟:1. 先unset LD_LIBRARY_PATH,至于為什么,筆者猜測是由于 LD_LIBRARY_PATH 環(huán)境變量通常都是由安裝程序修改為包括相關(guān)庫所在的目錄,估計是編譯環(huán)境時不能受已有庫的影響,要在編譯過程中臨時給LD_LIBRARY_PATH 一個值,編譯完成之后再改回來。2. 安裝語法分析程序生成器bison/flex,執(zhí)行apt-get install bison flex即可。3. 將/bin/sh的連接對象從dash改為bash,這是由于我選擇的glibc-2.3.6和dash有bug沖突。就算你不是用的glibc-2.3.6,也建議修改。先用ls -la /bin/sh看看你的sh鏈接到底是什么。如果是dash,就要通過sudo ln -sf /bin/bash /bin/sh來更改。進行以上步驟后,再執(zhí)行demo-powerpc-405.sh ,編譯過程就應(yīng)該比較順利了。當然這個用時也是比較長的,具體時間取決于機器配置,強烈建議吃個飯,打打球,然后再回來看看~。環(huán)境構(gòu)建完成之后,該環(huán)境下的工具列表如下:別忘了在PATH變量中增添路徑,就是${prefix}/bin,這樣你就可以直接使用這些工具了。轉(zhuǎn)載自:fcni_cn的百度空間
本文引用地址:http://m.butianyuan.cn/article/201710/365686.htm
評論