




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶藝術(shù)工程職業(yè)學(xué)院《科技信息檢索》2023-2024學(xué)年第一學(xué)期期末試卷
- 自然辯證法概論(視頻課)知到課后答案智慧樹(shù)章節(jié)測(cè)試答案2025年春安徽農(nóng)業(yè)大學(xué)
- 山西林業(yè)職業(yè)技術(shù)學(xué)院《材料分析測(cè)試技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 達(dá)州中醫(yī)藥職業(yè)學(xué)院《體育場(chǎng)地與設(shè)施》2023-2024學(xué)年第一學(xué)期期末試卷
- 河北石油職業(yè)技術(shù)學(xué)院《生物信息學(xué)實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 長(zhǎng)春汽車工業(yè)高等??茖W(xué)?!兜谌轿锪鞴芾怼?023-2024學(xué)年第一學(xué)期期末試卷
- 晉中職業(yè)技術(shù)學(xué)院《學(xué)科前沿講座》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025屆海南省魯迅中學(xué)高三下學(xué)期一??荚囉⒄Z(yǔ)試題含解析
- 江蘇室內(nèi)綠化施工方案
- 古人重視品德的名言
- 《產(chǎn)業(yè)轉(zhuǎn)型與創(chuàng)新》課件
- “艾梅乙”感染者消除醫(yī)療歧視制度-
- 2025-2030年中國(guó)測(cè)序儀市場(chǎng)運(yùn)行態(tài)勢(shì)及發(fā)展規(guī)劃分析報(bào)告
- 《物理前沿科學(xué)》課件
- 餐廳市場(chǎng)調(diào)研與定位
- 2025電動(dòng)自行車安全技術(shù)規(guī)范培訓(xùn)課件
- 網(wǎng)絡(luò)直播承諾書(shū)范本范本
- DB21-T 3943-2024 消防控制室管理
- 規(guī)劃課題申報(bào)范例:高校畢業(yè)生高質(zhì)量就業(yè)服務(wù)體系建設(shè)研究(附可修改技術(shù)路線圖)
- 2025北京語(yǔ)言大學(xué)新編長(zhǎng)聘人員招聘21人筆試備考試題及答案解析
- 銀屑病小講課
評(píng)論
0/150
提交評(píng)論