《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實踐》課件第4章_第1頁
《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實踐》課件第4章_第2頁
《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實踐》課件第4章_第3頁
《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實踐》課件第4章_第4頁
《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實踐》課件第4章_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

4.1交叉編譯

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

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

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

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

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

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

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

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

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

4.4宿主機與目標機之間的通信方式

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

1.串口

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

2.以太網(wǎng)口

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

3.?JTAG口

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

在這種模式下,在宿主機和目標機之間沒有實際的物理連接,而是主機寫存儲設(shè)備,如軟盤、CDROM、USB盤等移動存儲介質(zhì),然后再傳給目標機,最后目標機啟動它。

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

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

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

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

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

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

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

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

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

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

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

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

查看本機IP地址:

#ifconfig-a

修改本機IP地址:

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

4.串口配置

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

5.?NFS服務(wù)

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

6.?DHCP服務(wù)

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

7.?TFTP服務(wù)

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

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

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

4.6.1安裝PC機RedHatLinux虛擬機

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

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

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

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

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

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

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

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

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

的總結(jié)

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

(1)?RedHatLinux虛擬機的安裝:利用它的強大的功能,開發(fā)一個能夠運行在目標機的Linux操作系統(tǒng)。

(2)交叉開發(fā)工具鏈的制作和安裝:編譯能夠運行在目標機上的二進制代碼。

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

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

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

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

(1)建立工作目錄。

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

#mkdirpthread

#cdpthread

(2)編寫源代碼。

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

用vi編寫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)編寫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目錄下運行make,如果進行了修改,重新編譯則運行:

#makeclean

#make

(5)遠程調(diào)試。

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

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

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

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

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

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

在minicom下操作:

#cd

mnt/gdb

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

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

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論