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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

4.1交叉編譯

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

4.2交叉開發環境

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

4.3交叉開發工具組成

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

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

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

2.交叉調試器和系統仿真器

嵌入式軟件經過編譯和鏈接后即進入調試階段,嵌入式軟件開發過程中的交叉調試與通用軟件開發過程中的調試方式有所差別。圖4-2遠程調試結構圖

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

4.4.1互聯通信方式

1.串口

通過串口可以作為控制臺,向目標機發送命令,顯示信息;也可以通過串口傳送文件;還可以通過串口調試內核及程序。串口的設備驅動實現也比較簡單。

2.以太網口

以太網以其高度靈活,相對簡單,易于實現的特點,成為當今最重要的一種局域網建網技術,以太網IEEE802.3通常使用專門的網絡接口卡或通過系統主電路板上的電路實現。

3.?JTAG口

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

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

4.5交叉開發環境建立

4.5.1創建交叉開發工具鏈

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

1.宿主機安裝發行版Linux操作系統

宿主機安裝發行版Linux操作系統有以下三個方案:

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

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

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

2.開發工具鏈的安裝

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

3.網絡配置

宿主機Linux環境配置,首先要確認宿主機的網絡接口驅動成功,并且配置網絡接口的IP地址。可以通過ifconfig命令查看其網絡接口,還可以通過ifconfig配置網口的IP地址。

查看本機IP地址:

#ifconfig-a

修改本機IP地址:

$ifconfigeth0圖4-3網絡設備配置的圖形窗口

4.串口配置

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

5.?NFS服務

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

6.?DHCP服務

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

7.?TFTP服務

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

4.6基于UP-NETARM2410-S開發

平臺交叉開發環境建立

4.6.1安裝PC機RedHatLinux虛擬機

詳見教材2.1節。4.6.2開發工具軟件的安裝

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

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

#./install.sh圖4-8開發工具安裝界面4.6.3宿主機網絡配置

NFS的本質就是將宿主機和目標機組建成一個小的局域網,因此對宿主機的網絡配置包括:IP地址的設置、安全級別的設置和NFS服務的配置。

(1)?IP地址的設置。

(2)安全級別的設置。

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

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

的總結

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

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

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

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

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

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

4.7交叉編譯和交叉調試實例

(1)建立工作目錄。

在上面的交叉開發環境建立的共享目錄(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)編譯應用程序。

在pthread目錄下運行make,如果進行了修改,重新編譯則運行:

#makeclean

#make

(5)遠程調試。

在進行遠程調試之前,先要明白遠程調試環境的一些關鍵知識。

遠程調試環境由宿主GDB和目標機調試stub共同構成,兩者通過串口或TCP連接。使用GDB標準遠程串行協議協同工作,實現對目標機上的系統內核和上層應用程序的監控和調試功能。調試stub是嵌入式系統中的一段代碼,作為宿主機GDB和目標機調試程序間的一個媒介而存在。

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

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

(2)?KGDB調試系統內核。

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

在minicom下操作:

#cd

mnt/gdb

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

0為宿主機IP,在目標機系統的2345端口開啟了一個調試進程,pthread為要調試的程序。會出現提示:

溫馨提示

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

評論

0/150

提交評論