《基于ARM9的嵌入式Linux系統(tǒng)開(kāi)發(fā)原理與實(shí)踐》課件第4章_第1頁(yè)
《基于ARM9的嵌入式Linux系統(tǒng)開(kāi)發(fā)原理與實(shí)踐》課件第4章_第2頁(yè)
《基于ARM9的嵌入式Linux系統(tǒng)開(kāi)發(fā)原理與實(shí)踐》課件第4章_第3頁(yè)
《基于ARM9的嵌入式Linux系統(tǒng)開(kāi)發(fā)原理與實(shí)踐》課件第4章_第4頁(yè)
《基于ARM9的嵌入式Linux系統(tǒng)開(kāi)發(fā)原理與實(shí)踐》課件第4章_第5頁(yè)
已閱讀5頁(yè),還剩41頁(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)介

第4章交叉開(kāi)發(fā)環(huán)境4.1交叉編譯4.2交叉開(kāi)發(fā)環(huán)境4.3交叉開(kāi)發(fā)工具組成4.4宿主機(jī)與目標(biāo)機(jī)之間的通信方式4.5交叉開(kāi)發(fā)環(huán)境建立4.6基于UP-NETARM2410-S開(kāi)發(fā)平臺(tái)交叉開(kāi)發(fā)環(huán)境建立4.7交叉編譯和交叉調(diào)試實(shí)例本章小結(jié)

4.1交叉編譯

交叉編譯這個(gè)概念的出現(xiàn)和流行是和嵌入式系統(tǒng)的廣泛發(fā)展同步的。常用的計(jì)算機(jī)軟件都需要通過(guò)編譯的方式,把使用高級(jí)計(jì)算機(jī)語(yǔ)言編寫(xiě)的代碼(比如C代碼)編譯成計(jì)算機(jī)可以識(shí)別和執(zhí)行的二進(jìn)制代碼。

4.2交叉開(kāi)發(fā)環(huán)境

在開(kāi)發(fā)單片機(jī)系統(tǒng)時(shí),需要使用一臺(tái)主機(jī)外加操作系統(tǒng),如Windows2000,再裝上單片機(jī)廠商提供的開(kāi)發(fā)軟件,即開(kāi)發(fā)環(huán)境,在開(kāi)發(fā)環(huán)境里面編譯程序,用鼠標(biāo)單擊“build”快捷鍵,即生成的可執(zhí)行程序配合仿真器還可以進(jìn)行單步調(diào)試、觀察寄存器等。圖4-1交叉開(kāi)發(fā)環(huán)境模式

4.3交叉開(kāi)發(fā)工具組成

交叉開(kāi)發(fā)工具一般包括交叉編譯器、交叉鏈接器、交叉調(diào)試器和系統(tǒng)仿真器。其中,交叉編譯器用于在宿主機(jī)上生成能在目標(biāo)機(jī)上運(yùn)行的代碼,而交叉調(diào)試器和系統(tǒng)仿真器則用于在宿主機(jī)與目標(biāo)機(jī)間完成嵌入式軟件的調(diào)試。

1.交叉編譯器和交叉鏈接器

在完成嵌入式軟件的編碼之后,需要進(jìn)行編譯和鏈接,以生成可執(zhí)行代碼。由于開(kāi)發(fā)過(guò)程大多是在使用Intel公司x86系列CPU的通用計(jì)算機(jī)上進(jìn)行的,而目標(biāo)環(huán)境的處理器芯片卻大多為ARM、MIPS、PowerPC、DragonBall等系列的微處理器,這就要求在建立好的交叉開(kāi)發(fā)環(huán)境中進(jìn)行交叉編譯和鏈接。

2.交叉調(diào)試器和系統(tǒng)仿真器

嵌入式軟件經(jīng)過(guò)編譯和鏈接后即進(jìn)入調(diào)試階段,嵌入式軟件開(kāi)發(fā)過(guò)程中的交叉調(diào)試與通用軟件開(kāi)發(fā)過(guò)程中的調(diào)試方式有所差別。圖4-2遠(yuǎn)程調(diào)試結(jié)構(gòu)圖

4.4宿主機(jī)與目標(biāo)機(jī)之間的通信方式

4.4.1互聯(lián)通信方式

1.串口

通過(guò)串口可以作為控制臺(tái),向目標(biāo)機(jī)發(fā)送命令,顯示信息;也可以通過(guò)串口傳送文件;還可以通過(guò)串口調(diào)試內(nèi)核及程序。串口的設(shè)備驅(qū)動(dòng)實(shí)現(xiàn)也比較簡(jiǎn)單。

2.以太網(wǎng)口

以太網(wǎng)以其高度靈活,相對(duì)簡(jiǎn)單,易于實(shí)現(xiàn)的特點(diǎn),成為當(dāng)今最重要的一種局域網(wǎng)建網(wǎng)技術(shù),以太網(wǎng)IEEE802.3通常使用專門(mén)的網(wǎng)絡(luò)接口卡或通過(guò)系統(tǒng)主電路板上的電路實(shí)現(xiàn)。

3.?JTAG口

JTAG技術(shù)是一種嵌入式調(diào)試技術(shù),它在芯片內(nèi)部封裝了專門(mén)的測(cè)試電路測(cè)試接口(TAP,TestAccessPort),通過(guò)JTAG測(cè)試工具對(duì)芯片的核進(jìn)行測(cè)試。它是聯(lián)合測(cè)試行動(dòng)小組(JTAG,JointTestActionGroup)定義的一種國(guó)際標(biāo)準(zhǔn)測(cè)試協(xié)議,主要用于芯片內(nèi)部測(cè)試及對(duì)系統(tǒng)進(jìn)行仿真、調(diào)試。4.4.2可拔插通信方式

在這種模式下,在宿主機(jī)和目標(biāo)機(jī)之間沒(méi)有實(shí)際的物理連接,而是主機(jī)寫(xiě)存儲(chǔ)設(shè)備,如軟盤(pán)、CDROM、USB盤(pán)等移動(dòng)存儲(chǔ)介質(zhì),然后再傳給目標(biāo)機(jī),最后目標(biāo)機(jī)啟動(dòng)它。

4.5交叉開(kāi)發(fā)環(huán)境建立

4.5.1創(chuàng)建交叉開(kāi)發(fā)工具鏈

交叉開(kāi)發(fā)工具鏈包括交叉編譯器、交叉連接器和交叉調(diào)試器,這些交叉開(kāi)發(fā)工具鏈?zhǔn)乔度胧较到y(tǒng)開(kāi)發(fā)的必備工具,它是要安裝在宿主機(jī)(PC)上的。對(duì)于它的創(chuàng)建有三種途徑:第一種是下載別人已做好的工具鏈,當(dāng)然這是最省事的方法;第二種是到官方網(wǎng)站上下載crosstool;第三種是自己一步一步制作自己的交叉開(kāi)發(fā)工具鏈,這是最有趣的,也是最能體現(xiàn)自己能力的方式,本書(shū)的第6章將重點(diǎn)介紹第三種方法創(chuàng)建交叉開(kāi)發(fā)工具鏈,好讓讀者體會(huì)一下自己動(dòng)手的樂(lè)趣。4.5.2宿主機(jī)開(kāi)發(fā)環(huán)境配置

1.宿主機(jī)安裝發(fā)行版Linux操作系統(tǒng)

宿主機(jī)安裝發(fā)行版Linux操作系統(tǒng)有以下三個(gè)方案:

(1)基于PC機(jī)Windows操作系統(tǒng)下的CYGWIN。

(2)在Windows下安裝虛擬機(jī)后,再在虛擬機(jī)中安裝Linux操作系統(tǒng)。

(3)直接安裝Linux操作系統(tǒng)。

2.開(kāi)發(fā)工具鏈的安裝

開(kāi)發(fā)工具鏈的第一種來(lái)源,安裝較簡(jiǎn)單,一般運(yùn)行安裝光盤(pán)的可執(zhí)行文件?./install即可,這相當(dāng)于在Windows運(yùn)行可執(zhí)行文件setup,具體安裝過(guò)程可見(jiàn)4.6節(jié)內(nèi)容。開(kāi)發(fā)工具鏈的第二種來(lái)源,下載的工具鏈有不同的包裝格式,RPM的格式就很常用,也有把工具鏈直接壓縮成tar包的。

3.網(wǎng)絡(luò)配置

宿主機(jī)Linux環(huán)境配置,首先要確認(rèn)宿主機(jī)的網(wǎng)絡(luò)接口驅(qū)動(dòng)成功,并且配置網(wǎng)絡(luò)接口的IP地址??梢酝ㄟ^(guò)ifconfig命令查看其網(wǎng)絡(luò)接口,還可以通過(guò)ifconfig配置網(wǎng)口的IP地址。

查看本機(jī)IP地址:

#ifconfig-a

修改本機(jī)IP地址:

$ifconfigeth0圖4-3網(wǎng)絡(luò)設(shè)備配置的圖形窗口

4.串口配置

串行通信接口很適合作為控制臺(tái),在各種操作系統(tǒng)上一般都有現(xiàn)成的控制臺(tái)程序可以使用。Windows操作系統(tǒng)有超級(jí)終端(Hyperterminal)工具;Linux/UNIX操作系統(tǒng)有minicom等工具。無(wú)論什么操作系統(tǒng)還是通信工具,都可以作為串口控制臺(tái)。如果在Windows平臺(tái)上運(yùn)行Linux虛擬機(jī),這個(gè)串口通信軟件可以任選一種。圖4-4Windows系統(tǒng)下的超級(jí)終端圖4-5minicom配置主界面

5.?NFS服務(wù)

網(wǎng)絡(luò)文件系統(tǒng)(NetworkFileSystem,NFS)是一種允許透明文件共享的技術(shù),具體可參看第9章文件系統(tǒng)相關(guān)內(nèi)容,這種共享出現(xiàn)在通過(guò)局域網(wǎng)(也就是LAN)連接的Unix和Linux系統(tǒng)之間。NFS已出現(xiàn)了很長(zhǎng)時(shí)間,它在Linux和Unix世界里廣為人知而且被廣泛使用。圖4-6NFS服務(wù)圖形設(shè)置界面

6.?DHCP服務(wù)

目標(biāo)板的引導(dǎo)程序(Bootloader)或者內(nèi)核都需要分配IP地址。這可以通過(guò)動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP,DynamicHostConfigurationProtocol)或者BOOTP協(xié)議實(shí)現(xiàn)。圖4-7DHCP服務(wù)配置窗口

7.?TFTP服務(wù)

TFTP協(xié)議是簡(jiǎn)單的文件傳輸協(xié)議,適合目標(biāo)機(jī)引導(dǎo)程序使用。但是文件傳輸是基于UDP的,文件傳輸(特別是大文件)是不可靠的。

4.6基于UP-NETARM2410-S開(kāi)發(fā)

平臺(tái)交叉開(kāi)發(fā)環(huán)境建立

4.6.1安裝PC機(jī)RedHatLinux虛擬機(jī)

詳見(jiàn)教材2.1節(jié)。4.6.2開(kāi)發(fā)工具軟件的安裝

本節(jié)中所講的開(kāi)發(fā)工具的安裝與4.5.1節(jié)中所講的創(chuàng)建交叉開(kāi)發(fā)工具鏈的第一種方法相似,即博創(chuàng)公司目標(biāo)機(jī)的開(kāi)發(fā)工具光盤(pán),插入CDROM,然后執(zhí)行以下命令:

#cd/mnt/cdrom/2410-s06.03.03/linux-V5.1

#./install.sh圖4-8開(kāi)發(fā)工具安裝界面4.6.3宿主機(jī)網(wǎng)絡(luò)配置

NFS的本質(zhì)就是將宿主機(jī)和目標(biāo)機(jī)組建成一個(gè)小的局域網(wǎng),因此對(duì)宿主機(jī)的網(wǎng)絡(luò)配置包括:IP地址的設(shè)置、安全級(jí)別的設(shè)置和NFS服務(wù)的配置。

(1)?IP地址的設(shè)置。

(2)安全級(jí)別的設(shè)置。

(3)?NFS服務(wù)的配置。圖4-9宿主機(jī)安全級(jí)別設(shè)置4.6.4宿主機(jī)串口配置

目標(biāo)機(jī)是資源受限的系統(tǒng),沒(méi)有像宿主機(jī)那樣的顯示器,如果想看程序在目標(biāo)板的運(yùn)行結(jié)果等,可利用串口通信將目標(biāo)機(jī)的一些信息傳送到宿主機(jī)的minicom控制臺(tái)中,minicom控制臺(tái)即相當(dāng)于目標(biāo)機(jī)的顯示器。其宿主機(jī)的串口配置方法可參看4.5.2節(jié)中串口配置內(nèi)容。4.6.5基于UP-NETARM2410-S開(kāi)發(fā)平臺(tái)交叉開(kāi)發(fā)環(huán)境建立

的總結(jié)

交叉開(kāi)發(fā)環(huán)境的建立,就是充分利用宿主機(jī)(PC)強(qiáng)大的功能,建立能夠編寫(xiě)、編譯、下載和調(diào)試運(yùn)行在目標(biāo)機(jī)(UP-NETARM2410-S)上的二進(jìn)制程序,包括:RedHatLinux虛擬機(jī)的安裝、交叉開(kāi)發(fā)工具鏈的制作和安裝、串口的配置、網(wǎng)絡(luò)的配置及JTAG口的連接等,它們各自的作用總結(jié)如下:

(1)?RedHatLinux虛擬機(jī)的安裝:利用它的強(qiáng)大的功能,開(kāi)發(fā)一個(gè)能夠運(yùn)行在目標(biāo)機(jī)的Linux操作系統(tǒng)。

(2)交叉開(kāi)發(fā)工具鏈的制作和安裝:編譯能夠運(yùn)行在目標(biāo)機(jī)上的二進(jìn)制代碼。

(3)串口的配置:相互通信,可將minicom或超級(jí)終端作為目標(biāo)機(jī)顯示器。

(4)網(wǎng)絡(luò)的配置:宿主機(jī)和目標(biāo)機(jī)之間局域網(wǎng)的建立,利用NFS進(jìn)行文件系統(tǒng)的掛載,方便程序的調(diào)試。

(5)?JTAG口:可在目標(biāo)機(jī)沒(méi)有任何通信之前將引導(dǎo)程序燒寫(xiě)到目標(biāo)機(jī),在引導(dǎo)程序中可建立如串口等接口的初始化等。圖4-10宿主機(jī)和目標(biāo)機(jī)之間的配置及通信線路圖

4.7交叉編譯和交叉調(diào)試實(shí)例

(1)建立工作目錄。

在上面的交叉開(kāi)發(fā)環(huán)境建立的共享目錄(arm2410s)中建立工作目錄:

#mkdirpthread

#cdpthread

(2)編寫(xiě)源代碼。

在此工作目錄下用vi編寫(xiě)程序源代碼:

用vi編寫(xiě)pthread.c

#vipthread.c源代碼如下:

#include“stdio.h”

#include“math.h”

intmain(void)

{

floatpi=3.1415926;

floatR;

floatS=0;

printf(“PleaseinputyourRidus:\n”);

scanf(“%f”,&R);

if(R>=0)

{

S=pi*R*R;

printf(“ThevalueofSis:%f\n”,S);

}

else

printf(“Sorry,Wronginput!!\n”);

return0;

}

(3)編寫(xiě)makefile。

CC=armv4l-unknown-linux-gcc

EXEC=pthread

OBJS=pthread.o

CFLAGS+=-g-o

EXTRA_LIBS+=-lpthread

all:$(EXEC)

$(EXEC):$(OBJS)

$(CC)$(CFLAGS)$(EXTRA_LIBS)$@$(OBJS)

clean:

rm-f$(EXEC)*.elf*.gdb*.o

(4)編譯應(yīng)用程序。

在pthread目錄下運(yùn)行make,如果進(jìn)行了修改,重新編譯則運(yùn)行:

#makeclean

#make

(5)遠(yuǎn)程調(diào)試。

在進(jìn)行遠(yuǎn)程調(diào)試之前,先要明白遠(yuǎn)程調(diào)試環(huán)境的一些關(guān)鍵知識(shí)。

遠(yuǎn)程調(diào)試環(huán)境由宿主GDB和目標(biāo)機(jī)調(diào)試stub共同構(gòu)成,兩者通過(guò)串口或TCP連接。使用GDB標(biāo)準(zhǔn)遠(yuǎn)程串行協(xié)議協(xié)同工作,實(shí)現(xiàn)對(duì)目標(biāo)機(jī)上的系統(tǒng)內(nèi)核和上層應(yīng)用程序的監(jiān)控和調(diào)試功能。調(diào)試stub是嵌入式系統(tǒng)中的一段代碼,作為宿主機(jī)GDB和目標(biāo)機(jī)調(diào)試程序間的一個(gè)媒介而存在。

就目前而言,嵌入式Linux系統(tǒng)中主要有三種遠(yuǎn)程調(diào)試方法,分別適用于不同場(chǎng)合的調(diào)試工作:

(1)?ROMMonitor調(diào)試目標(biāo)機(jī)程序。

(2)?KGDB調(diào)試系統(tǒng)內(nèi)核。

(3)?gdbserver調(diào)試用戶空間程序。具體遠(yuǎn)程調(diào)試過(guò)程如下。

在minicom下操作:

#cd

mnt/gdb

#./gdbserver0:2345/mnt/pthread/pthread

0為宿主機(jī)IP,在目標(biāo)機(jī)系統(tǒng)的2345端口開(kāi)啟了一個(gè)調(diào)試進(jìn)程,pthread為要調(diào)試的程序。會(huì)出現(xiàn)提示:

溫馨提示

  • 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)論