嵌入式交叉開發(fā)環(huán)境的搭建_第1頁
嵌入式交叉開發(fā)環(huán)境的搭建_第2頁
嵌入式交叉開發(fā)環(huán)境的搭建_第3頁
嵌入式交叉開發(fā)環(huán)境的搭建_第4頁
嵌入式交叉開發(fā)環(huán)境的搭建_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

主要內(nèi)容:(1)嵌入式ARM-Linux平臺的體系結(jié)構(gòu);(2)交叉開發(fā)的相關(guān)概念與工具軟件;(3)嵌入式Linux開發(fā)的NFS配置;北華航天工業(yè)學(xué)院房好帥fanghaoshuai@第1部分嵌入式交叉開發(fā)環(huán)境的搭建(1)能夠正確編譯嵌入式ARM-Linux版本的“helloworld”程序并運行能力目標(biāo):1.1嵌入式ARM-Linux平臺的體系結(jié)構(gòu)嵌入式ARM-Linux系統(tǒng)的硬件構(gòu)成以處理器為核心,擴展內(nèi)存、外存、接口電路、電源電路、外部設(shè)備構(gòu)成:北華航天工業(yè)學(xué)院房好帥fanghaoshuai@S3C2440處理器SoC芯片,包括ARM9CPU、一些外設(shè)接口,通過芯片內(nèi)部總線AHB、APB總線連接:北華航天工業(yè)學(xué)院房好帥fanghaoshuai@比如實驗室采用的開發(fā)板,主要硬件構(gòu)成為:(1)S3C2440片上SDRAM控制器接口連接2片內(nèi)存芯片,H57V2562GTR-60C,共計128MB(4)由于處理器芯片沒有集成網(wǎng)卡接口,故需要擴展連接DM9000芯片,該芯片片選直接接在nGCS4,故可通過0x20000000和0x20000004地址訪問其中的數(shù)據(jù)、命令寄存器;(處理器沒有集成的接口需要擴展)(2)S3C2440片上NandFlash控制器接口連接1片K9F2G08U0B作為外存,256MB容量;(3)片上LCD、TS控制器接口連接4.3寸TFTLCD,分辨率480×272(外部設(shè)備);北華航天工業(yè)學(xué)院房好帥fanghaoshuai@S3C2440芯片集成了ARM920T核的CPU,需要關(guān)注其主要特性為:(1)5級指令流水線,指令、數(shù)據(jù)高速緩存都為16KB;(4)具備響應(yīng)中斷能力及其Tick時鐘;鑒于以上特點,該芯片支持現(xiàn)代操作系統(tǒng)的特性,故可以移植Linux操作系統(tǒng)在其硬件運行。(2)具備MMU,支持頁表及內(nèi)存訪問權(quán)限;(3)不同的工作狀態(tài):用戶模式、特權(quán)模式;北華航天工業(yè)學(xué)院房好帥fanghaoshuai@(5)具備相關(guān)指令實現(xiàn)多任務(wù)互斥;對于ARM9系列的處理器:(1)ARM公司負(fù)責(zé)設(shè)計CPU核心,不生產(chǎn)芯片,官方網(wǎng)站可以下載ARM920TTechnicalReferenceManual文檔,詳細(xì)描述了ARM9CPU的特征;(2)S3C2440是SAMSUNG生產(chǎn)的ARM9處理器,購買了ARM9的設(shè)計,在CPU基礎(chǔ)上增加了一些常見外設(shè)接口,集成在一個芯片上形成SoC,芯片的DataSheet可以從SAMSUNG官網(wǎng)得到;要想深入獲取某個ARM芯片的詳細(xì)信息,這兩個文檔是權(quán)威資料!北華航天工業(yè)學(xué)院房好帥fanghaoshuai@硬件平臺上運行的軟件系統(tǒng)存儲在外存,包括3部分:(1)bootloader(引導(dǎo)加載程序)系統(tǒng)加電啟動運行的一段程序,初始化設(shè)置處理器工作狀態(tài)、系統(tǒng)時鐘、內(nèi)存、外存、串口、網(wǎng)口等必要的部件,將Linux內(nèi)核從外存拷貝到內(nèi)存,傳遞參數(shù)并啟動內(nèi)核;u-boot是現(xiàn)階段最著名的開源bootloader,必須根據(jù)嵌入式硬件平臺修改代碼并編譯才能運行,這個過程稱為軟件移植;北華航天工業(yè)學(xué)院房好帥fanghaoshuai@(2)linuxkernel(內(nèi)核)內(nèi)核實現(xiàn)了操作系統(tǒng)的核心功能,包括進(jìn)程管理,存儲管理,虛擬文件系統(tǒng),網(wǎng)絡(luò)協(xié)議等;北華航天工業(yè)學(xué)院房好帥fanghaoshuai@Linux內(nèi)核源代碼可以從下載,不能直接應(yīng)用于ARM平臺,必須經(jīng)過移植:(1)與體系結(jié)構(gòu)相關(guān)的代碼,大多數(shù)是采用匯編語言編寫,需要按照目標(biāo)平臺進(jìn)行修改;(2)內(nèi)核中大量的代碼為設(shè)備驅(qū)動程序,需要根據(jù)開發(fā)的系統(tǒng)進(jìn)行修改與剪裁;所幸的是,u-boot、kernel中已經(jīng)有了目標(biāo)平臺的參照,比如samsung官方的開發(fā)板相關(guān)的代碼,對比其中的不同,可以進(jìn)行修改。北華航天工業(yè)學(xué)院房好帥fanghaoshuai@(3)filesystem(文件系統(tǒng))Linux文件系統(tǒng)即用戶可以操作的目錄結(jié)構(gòu)與文件,嵌入式系統(tǒng)需要根據(jù)具體情況進(jìn)行文件系統(tǒng)的剪裁;(2)內(nèi)核模塊:Linux內(nèi)核為單體結(jié)構(gòu),但提供了加載內(nèi)核模塊的機制,一些設(shè)備驅(qū)動以模塊的形式視具體情況添加到文件系統(tǒng)中;文件系統(tǒng)中需要剪裁的項目:(1)共享庫:glibc庫一般是必須的,比如系統(tǒng)需要用戶界面,需要將Qt界面庫加入進(jìn)來;北華航天工業(yè)學(xué)院房好帥fanghaoshuai@開源項目busybox可以進(jìn)行編譯生成供嵌入式Linux使用的文件系統(tǒng)。1.2交叉工具鏈與交叉開發(fā)環(huán)境北華航天工業(yè)學(xué)院房好帥fanghaoshuai@PC機軟件開發(fā)從“源碼程序”到“機器碼文件”的過程,一般在本機編寫代碼,本機調(diào)試,本機運行;北華航天工業(yè)學(xué)院房好帥fanghaoshuai@嵌入式開發(fā)軟件從“源碼程序”到“機器碼文件”的過程則明顯不同,嵌入式平臺由于資源所限一般不會安裝開發(fā)調(diào)試環(huán)境,則需要在PC中進(jìn)行編寫代碼與編譯,在嵌入式平臺上運行:北華航天工業(yè)學(xué)院房好帥fanghaoshuai@交叉開發(fā)環(huán)境建立交叉開發(fā)環(huán)境(CrossDevelopmentEnvironment)是嵌入式軟件開發(fā)時的顯著特點,交叉開發(fā)環(huán)境是指編譯、鏈接和調(diào)試嵌入式軟件的環(huán)境,通常采用宿主機/目標(biāo)機模式。1.2.1交叉開發(fā)環(huán)境北華航天工業(yè)學(xué)院房好帥fanghaoshuai@交叉開發(fā)環(huán)境的組成要素:(1)宿主機(host):普通的PC機,要求具備串口、并口、USB接口、網(wǎng)絡(luò)接口;(2)目標(biāo)機(target):ARM開發(fā)板,要求具備串口、USB接口、網(wǎng)絡(luò)接口;(3)交叉工具鏈(crosstoolschain):包括交叉編譯器、交叉匯編器、交叉鏈接器,能夠在宿主機上運行,并且能夠生成在目標(biāo)機上直接運行的二進(jìn)制代碼的編譯器和鏈接器;比如:ARM體系結(jié)構(gòu)的gcc交叉開發(fā)工具鏈,至少要包括:arm-linux-gcc是交叉編譯器,arm-linux-as是交叉匯編器,arm-linux-ld是交叉鏈接器;北華航天工業(yè)學(xué)院房好帥fanghaoshuai@1.2.2交叉調(diào)試交叉調(diào)試(CrossDebug)又稱為遠(yuǎn)程調(diào)試(RemoteDebug),采用調(diào)試器控制目標(biāo)機上被調(diào)試程序的運行,并具有查看和修改目標(biāo)機上內(nèi)存單元、寄存器以及被調(diào)試進(jìn)程中變量值等各種調(diào)試功能的調(diào)試方法。北華航天工業(yè)學(xué)院房好帥fanghaoshuai@交叉調(diào)試一般具有如下特點:(1)調(diào)試器連接在宿主機與目標(biāo)機之間,宿主機中的調(diào)試軟件可操作調(diào)試器,而被調(diào)試的程序則運行在開發(fā)板上(目標(biāo)機);(2)調(diào)試器通過某種通信方式與被調(diào)試程序運行的開發(fā)板建立聯(lián)系,如串口、并口、網(wǎng)絡(luò)、JTAG接口等;(3)在目標(biāo)機上一般會具備某種形式的調(diào)試代理,它負(fù)責(zé)與調(diào)試器通信完成對目標(biāo)機上運行著的程序的調(diào)試。調(diào)試代理可能是硬件設(shè)備或軟件;在進(jìn)行ARM-Linux開發(fā)中,gdbserver運行在目標(biāo)機,arm-linux-gdb運行在宿主機,雙方通過網(wǎng)絡(luò)進(jìn)行交叉調(diào)試通訊。北華航天工業(yè)學(xué)院房好帥fanghaoshuai@1.2.3ARM-Linux交叉開發(fā)軟件環(huán)境構(gòu)建1、PC機安裝LinuxPC安裝的Linux有多個發(fā)行版本,如RedHat,Suse,Ubuntu,F(xiàn)reeBSD,選擇任意都可以;Linux可以直接安裝在計算機上,推薦在Windows操作系統(tǒng)下通過Vmware虛擬機進(jìn)行安裝;實驗室的安裝環(huán)境:Vmware+Ubuntu10.04;虛擬機中的Linux系統(tǒng)可以和Windows系統(tǒng)進(jìn)行配置共享目錄來交換數(shù)據(jù),安裝了vmwaretools也可以進(jìn)行直接拷貝;這樣在windows系統(tǒng)下就可以使用Linux,在虛擬機的Linux系統(tǒng)中可以安裝交叉開發(fā)工具北華航天工業(yè)學(xué)院房好帥fanghaoshuai@北華航天工業(yè)學(xué)院房好帥fanghaoshuai@2、Linux系統(tǒng)中安裝交叉工具鏈開發(fā)板的廠商提供了EABI-4.3.3_EmbedSky_20100610.tar.bz2文件為已經(jīng)制作好的4.3.3版本的工具鏈,拷貝到虛擬機Linux系統(tǒng)執(zhí)行tar命令解壓縮即可;安裝執(zhí)行解壓把編譯器放在:/opt/EmbedSky/4.3.3目錄;可以使用開源項目Binutils制作交叉編譯器,初學(xué)者不建議,直接使用廠商提供的交叉編譯器即可;北華航天工業(yè)學(xué)院房好帥fanghaoshuai@可以在/etc/bash.bashrc文件中加入:exportPATH=$PATH:/opt/EmbedSky/4.3.3/bin

即將交叉工具鏈加入到PATH,就可以直接使用arm-linux-gcc、arm-linux-g++等一些命令;輸入arm-linux-gcc–v可查看編譯器版本:北華航天工業(yè)學(xué)院房好帥fanghaoshuai@arm-linux交叉工具鏈包含了多種交叉編譯工具:名稱作用arm-linux-as編譯ARM匯編程序arm-linux-ar把多個.o合并成一個.o或靜態(tài)庫(.a)arm-linuxran-lib為庫文件建立索引,相當(dāng)于arm-linux-ar-sarm-linux-ld連接器(Linker),把多個.o或庫文件連接成可執(zhí)行文件arm-linux-objdump查看目標(biāo)文件(.o)和庫(.a)的信息arm-linux-objcopy轉(zhuǎn)換可執(zhí)行文件的格式arm-linux-strip去掉elf可執(zhí)行文件的信息.使可執(zhí)行文件變小arm-linux-readelf讀elf可執(zhí)行文件的信息arm-linux-gcc編譯.c或.S開頭的C程序或匯編程序arm-linux-g++編譯c++程序交叉工具鏈多種工具組合可以生成目標(biāo)平臺的可執(zhí)行文件北華航天工業(yè)學(xué)院房好帥fanghaoshuai@北華航天工業(yè)學(xué)院房好帥fanghaoshuai@采用arm-linux-gcc編譯示例:helloworld.c#include<stdio.h>intmain(){

printf("helloworld,i'mrunningonarm_linux!"); return0;}命令:arm-linux-gcc-ohelloworld

helloworld.c生成名為helloworld的可執(zhí)行文件采用file命令可以查看文件類型,采用交叉編譯器編譯的helloworld:北華航天工業(yè)學(xué)院房好帥fanghaoshuai@采用gcc-ohelloworld

helloworld.c編譯的helloworld:1.3串口工具在ARM-Linux平臺開發(fā)中的使用嵌入式Linux開發(fā)中,串口作為開發(fā)板的控制臺,開發(fā)板將信息輸出到串口,同時也從串口讀取命令,故通過宿主機PC與開發(fā)板串口連接,利用windows下的超級終端、或Linux的minicom軟件即可操作開發(fā)板;便攜式筆記本計算機一般沒有串口,USB轉(zhuǎn)串口線,正確安裝驅(qū)動后計算機中會發(fā)現(xiàn)此串口設(shè)備,和真實的串口使用起來一樣;北華航天工業(yè)學(xué)院房好帥fanghaoshuai@1、超級終端的使用WindowXP菜單的附件通訊工具中,或是更改版本可拷貝超級終端軟件,啟動后出現(xiàn)新建連接:北華航天工業(yè)學(xué)院房好帥fanghaoshuai@選擇使用的串口參數(shù):北華航天工業(yè)學(xué)院房好帥fanghaoshuai@連接ARM開發(fā)板,啟動開發(fā)板即可看到信息,開發(fā)板完全啟動后即可看到開發(fā)linux命令行:這樣在超級終端中即可通過輸入命令操作嵌入式開發(fā)板北華航天工業(yè)學(xué)院房好帥fanghaoshuai@也可以使用虛擬機中的Linux的minicom操作串口,首先需要將串口加入到虛擬機設(shè)備中:北華航天工業(yè)學(xué)院房好帥fanghaoshuai@在虛擬機的命令行中輸入minicom–s,即可啟動相關(guān)參數(shù)設(shè)置,設(shè)置參數(shù)完成后,啟動開發(fā)板,即可看到同樣效果:北華航天工業(yè)學(xué)院房好帥fanghaoshuai@1.4搭建NFS調(diào)試環(huán)境北華航天工業(yè)學(xué)院房好帥fanghaoshuai@1、NFS的作用NFSServerNFSClientNFSClientNFSServer中配置NFS主機分享的目錄A;NFSClient將NFS主機分享的目錄掛載到本機某目錄B;則可以在NFSClient中訪問目錄B即可達(dá)到訪問NFS主機的目錄A的目的,可對其進(jìn)行任何操作;北華航天工業(yè)學(xué)院房好帥fanghaoshuai@2、NFS的配置在嵌入式Linux開發(fā)中,宿主機PC安裝的Linux可作為NFSServer,開發(fā)板可作為NFSClient;(1)PC機配置作為NFSServer如把“/work/mynfs”作為分享目錄,在/etc/exports文件中增加:/work/mynfs*(rw,sync,no_root_squash)之后使用以下兩條命令重啟NFS服務(wù)sudo/etc/init.d/portmaprestartsudo/etc/init.d/nfs-kernel-serverrestart*:允許所有的網(wǎng)段訪問rw

:讀寫權(quán)限sync:同步寫入no_root_squash:nfs客戶端共享目錄使用者權(quán)限北華航天工業(yè)學(xué)院房好帥fanghaoshuai@(2

溫馨提示

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

最新文檔

評論

0/150

提交評論