嵌入式應(yīng)用系統(tǒng)開發(fā)-嵌入式Linux交叉編譯環(huán)境的進(jìn)一步搭建_第1頁
嵌入式應(yīng)用系統(tǒng)開發(fā)-嵌入式Linux交叉編譯環(huán)境的進(jìn)一步搭建_第2頁
嵌入式應(yīng)用系統(tǒng)開發(fā)-嵌入式Linux交叉編譯環(huán)境的進(jìn)一步搭建_第3頁
嵌入式應(yīng)用系統(tǒng)開發(fā)-嵌入式Linux交叉編譯環(huán)境的進(jìn)一步搭建_第4頁
嵌入式應(yīng)用系統(tǒng)開發(fā)-嵌入式Linux交叉編譯環(huán)境的進(jìn)一步搭建_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

嵌入式應(yīng)用系統(tǒng)開發(fā)----嵌入式Linux交叉開發(fā)環(huán)境的進(jìn)一步搭建主講:1.關(guān)于交叉編譯嵌入式軟件的開發(fā)離不開交叉編譯,交叉編譯是指:在一種平臺(tái)上編譯出能在另一種平臺(tái)(體系結(jié)構(gòu)不同)上運(yùn)行的程序。在PC平臺(tái)(X86CPU)上編譯出能運(yùn)行在arm平臺(tái)上的程序,編譯得到的程序在X86CPU平臺(tái)上是不能運(yùn)行的,必須放到arm平臺(tái)上才能運(yùn)行。需要交叉開發(fā)環(huán)境(CrossDevelopmentEnvironment)的支持是嵌入式應(yīng)用軟件開發(fā)時(shí)的一個(gè)顯著特點(diǎn)。關(guān)于交叉編譯為了不跟本地編譯器混淆,交叉編譯器的名字一般都有前綴。例如:arm-linux-gcc

;交叉編譯器只是交叉開發(fā)環(huán)境的一部分。交叉開發(fā)環(huán)境是指編譯、鏈接和調(diào)試嵌入式應(yīng)用軟件的環(huán)境,它與運(yùn)行嵌入式應(yīng)用軟件的環(huán)境有所不同,通常采用宿主機(jī)-目標(biāo)機(jī)模式。宿主機(jī)--目標(biāo)機(jī)模式宿主機(jī)-目標(biāo)機(jī)模式宿主機(jī)(Host)是一臺(tái)通用計(jì)算機(jī),它通過串口或者以太網(wǎng)接口與目標(biāo)機(jī)通信。宿主機(jī)的軟硬件資源比較豐富,能夠大大提高嵌入式應(yīng)用軟件的開發(fā)速度和效率。目標(biāo)機(jī)(Target),應(yīng)用程序?qū)嶋H運(yùn)行的平臺(tái),或者是能夠替代實(shí)際運(yùn)行環(huán)境的仿真系統(tǒng)。軟硬件資源通常都比較有限。宿主機(jī)-目標(biāo)機(jī)模式A.首先利用宿主機(jī)上豐富的資源和良好的開發(fā)環(huán)境開發(fā)和仿真調(diào)試目標(biāo)機(jī)上的軟件;B.然后通過串口或者網(wǎng)絡(luò)將交叉編譯生成的目標(biāo)代碼傳輸并裝載到目標(biāo)機(jī)上,并在監(jiān)控程序或者操作系統(tǒng)的支持下利用交叉調(diào)試器進(jìn)行分析和調(diào)試;C.最后目標(biāo)機(jī)在特定環(huán)境下脫離宿主機(jī)單獨(dú)運(yùn)行。D.開放的交叉開發(fā)環(huán)境的典型代表是GNU工具鏈,目前已經(jīng)能夠支持x86、ARM、MIPS、PowerPC等多種處理器。2.GNU交叉工具鏈

交叉編譯器和交叉鏈接器是能夠在宿主機(jī)上運(yùn)行,并且能夠生成在目標(biāo)機(jī)上直接運(yùn)行的二進(jìn)制代碼的編譯器和鏈接器;linux

軟件的開發(fā)離不開GUN工具鏈,這是因?yàn)閘inux

一開始就使用GNU工具鏈,包括:交叉編譯器,例如arm-linux-gcc交叉匯編器,例如arm-linux-as交叉鏈接器,例如arm-linux-ld2.1交叉工具鏈cross-4.1.2.tar.bz2包的安裝

將交叉工具鏈源碼包

cross-4.1.2.tar.bz2復(fù)制到共享目錄下,(這個(gè)共享目錄,在windows下是d:\mark。在Linux下是/mnt/hgfs/mark。),創(chuàng)建虛擬機(jī)Linux中的/usr/local/目錄下的arm目錄。首先查看確認(rèn)共享目錄下存在此源碼包。

#ls

/mnt/hgfs/mark#mkdir/usr/local/arm#cp/mnt/hgfs/mark/cross-4.1.2.tar.bz2/usr/local/arm2.1交叉工具鏈cross-4.1.2.tar.bz2包的安裝#cd

/usr/local/arm(進(jìn)入arm工作目錄)#tarjxvfcross-4.1.2.tar.bz2(解壓)#mvarm920t4.1.2(重命名目錄)2.1交叉工具鏈cross-4.1.2.tar.bz2包的安裝添加環(huán)境變量。#gedit/etc/bashrc

(打開設(shè)置環(huán)境變量文件)在/etc/bashrc

文件最后添加:exportPATH=/usr/local/arm/4.1.2/bin:$PATH存盤退出。交叉工具鏈安裝完成。思考:為什么要設(shè)置環(huán)境變量?3.遠(yuǎn)程訪問目標(biāo)板

當(dāng)開發(fā)平臺(tái)的

linux

系統(tǒng)運(yùn)行起來之后,如何觀察應(yīng)用程序在目標(biāo)板的運(yùn)行情況,即查看程序的輸出信息呢?可以在開發(fā)平臺(tái)上掛載PC機(jī)上的NFS共享來實(shí)現(xiàn)開發(fā)平臺(tái)與PC機(jī)的文件共享。3.遠(yuǎn)程訪問目標(biāo)板但是在我們目前實(shí)際教學(xué)條件下難以滿足,替代的手段如下:采用U盤掛載的方法,在host主機(jī)和ARM開發(fā)板之間共享和交換文件。采用超級(jí)終端、minicom

等串口工具進(jìn)行文件下載和運(yùn)行結(jié)果監(jiān)視。4

交叉調(diào)試器嵌入式軟件開發(fā)過程中的交叉調(diào)試與本地軟件開發(fā)過程中的調(diào)試方式有所差別。本地軟件開發(fā):調(diào)試器與被調(diào)試的程序往往運(yùn)行在同一臺(tái)計(jì)算機(jī)上。調(diào)試器是一個(gè)單獨(dú)運(yùn)行著的進(jìn)程,它通過操作系統(tǒng)提供的調(diào)試接口來控制被調(diào)試的進(jìn)程。4

交叉調(diào)試器嵌入式軟件開發(fā):調(diào)試時(shí)采用的是在宿主機(jī)和目標(biāo)機(jī)之間進(jìn)行的交叉調(diào)試。調(diào)試器運(yùn)行在宿主機(jī),但被調(diào)試的進(jìn)程卻是運(yùn)行在目標(biāo)板。調(diào)試器和被調(diào)試進(jìn)程通過串口或者網(wǎng)絡(luò)進(jìn)行通信,調(diào)試器可以控制、訪問被調(diào)試進(jìn)程,讀取被調(diào)試進(jìn)程的當(dāng)前狀態(tài),并能夠改變被調(diào)試進(jìn)程的運(yùn)行狀態(tài)。交叉調(diào)試器的結(jié)構(gòu)如下:4.1GUN交叉調(diào)試器的安裝交叉調(diào)試器的源碼包可以從GNU的官方網(wǎng)站上下載:/gnu/gdb/gdb-6.5.tar.gz我們這里已經(jīng)備好了,壓縮包放在教師機(jī)d:\mark1下。(\\00)編譯安裝步驟如下:1.首先將交叉調(diào)試壓縮包放在winxp和Linux的共享目錄下,在winxp為d:\mark。在Linux為/mnt/hgfs/mark。在自己的個(gè)人目錄/home/student下,新建一個(gè)目錄:“build-arm-linux”#mkdir/home/studen/build-arm-linux編譯安裝步驟如下:將壓縮包拷貝到該目錄下:#cp/mnt/hgfs/mark/gdb-6.5.tar.bz2/home/student/build-arm-linux進(jìn)入該目錄:#cd/home/studen/build-arm-linux編譯安裝步驟如下:2.解壓該壓縮包:(可以首先查看一下,當(dāng)前路徑下是否有該壓縮包。)#tarjxfgdb-6.5.tar.bz2此時(shí)會(huì)出現(xiàn)一個(gè)文件夾:gdb-6.5,查看并進(jìn)入:#cdgdb-6.5編譯安裝步驟如下:3.設(shè)置配置文件configure。#./configure--target=arm-linux--prefix=/usr/local/arm/4.1.2/假如配置正常完成,最后一行信息是“creatingmakefile”編譯安裝步驟如下:4.編譯鏈接。#make(編譯)之后會(huì)有一個(gè)較長的過程。出現(xiàn)警告可以忽略,出現(xiàn)錯(cuò)誤信息,則是編譯沒有通過。#makeinstall(安裝)編譯安裝步驟如下:隨后在/usr/local/arm/4.1.2/bin/目錄下生成arm-linux-gdb

工具??梢圆榭矗?ls/usr/local/arm/4.1.2/bin/編譯安裝步驟如下:5.編譯生成針對arm處理器的gdbserver

進(jìn)入gdb

源代碼包中的gdbserver目錄#cdgdb-6.5#cd

gdb/gdbserver編譯安裝步驟如下:配置生成gdbserver:#chmod

u+xconfigure#CC=arm-linux-gcc#./configure--host=arm-linux#make編譯安裝步驟如下:在一段信息之后,生成了gdbserver、gdbreplay。在設(shè)置了NFS的環(huán)境下,可以通過NFS將上述兩個(gè)文件,下載到目標(biāo)板上。但在沒有NFS的環(huán)境時(shí),我們使用U盤將上述兩個(gè)文件拷貝后掛載到目標(biāo)板(實(shí)驗(yàn)箱)上?;蛘呤褂贸?jí)終端下載這兩個(gè)文件。設(shè)置和進(jìn)入超級(jí)終端超級(jí)終端是windows自帶的一個(gè)串口調(diào)試工具,其使用較為簡單,被廣泛使用在串口設(shè)備的初級(jí)調(diào)試上。下面介紹一下一般使用的步驟:設(shè)置和進(jìn)入超級(jí)終端將PC機(jī)與ARM試驗(yàn)箱的串口、USB口連接好,接通試驗(yàn)箱電源。windows操作系統(tǒng)下,“開始菜單”—“程序”—“附件”—“通訊”—“超級(jí)終端”見下圖。在“名稱”中輸入“2440”,(這個(gè)是根據(jù)個(gè)人隨意輸入)。選擇串口為com1,根據(jù)需要,也可以選擇其他串口。在com1的屬性窗口中,選擇波特率:115200bps。數(shù)據(jù)流控制選擇:“無”。復(fù)位ARM實(shí)驗(yàn)箱,出現(xiàn)如下大家熟悉的畫面:不必介入,稍等片刻,出現(xiàn)長長的文字之后,停頓,回車,會(huì)出現(xiàn)如下畫面:設(shè)置和進(jìn)入超級(jí)終端上圖中最底部出現(xiàn)的提示符:“bash-4.0#”,這就是ARM實(shí)驗(yàn)板上的Linux系統(tǒng)正在運(yùn)行。它和我們PC機(jī)上的Linux是相同的,只不過是一個(gè)精簡版本。處理能力不夠強(qiáng)大,資源有限。我們同樣可以在上面進(jìn)行l(wèi)inux各種操作,使用ls查看文件,使用pwd查看當(dāng)前路徑,使用chmod修改屬性和權(quán)限………使用超級(jí)終端傳輸文件舉例說明由PC機(jī)下的windows系統(tǒng)傳送文件gdbserver到實(shí)驗(yàn)板的Linux下。1.在超級(jí)終端下首先進(jìn)入/tmp

路徑。Bash-4.0#cd/tmp

然后鍵入命令:Bash-4.0#rxgdbserver

(注:文件名可以是任意的,與原文件名無關(guān)。)回車,出現(xiàn)“C”字母。見下圖。使用超級(jí)終端傳輸文件2.在超級(jí)終端的菜單“傳送”下,選擇“發(fā)送”,之后在彈出的對話框中,點(diǎn)擊“瀏覽”選擇D:\mark\gdbserver,在“協(xié)議”下拉菜單中選中“Xmodem”。見下圖。點(diǎn)擊“發(fā)送”,windows開始發(fā)送,ARM實(shí)驗(yàn)板開始接收。使用超級(jí)終端傳輸文件接收完畢,查看一下:Bash-4.0#ls(可以看見gdbserver已經(jīng)靜靜地躺在當(dāng)前路徑下了。)但是這個(gè)文件gdbserver還不是可執(zhí)行文件。經(jīng)過超級(jí)終端傳遞的文件,即便原來是可執(zhí)行文件,也變成了不可執(zhí)行的文件,為此要修改屬性。給接收的文件添加可執(zhí)行屬性Bash-4.0#ls–l(查看gdbserver的文件屬性,可見為:-rwr--r--r--,不是可執(zhí)行文件)Bash-4.0#chmod+xgdbserver(這里是給gdbserver文件添加可執(zhí)行屬性)Bash-4.0#ls-l(查看當(dāng)前路徑下所有文件的屬性,可見gdbserver的屬性已經(jīng)變成:rwxr-xr-x)超級(jí)終端的退出可以點(diǎn)擊上部小圖標(biāo)菜單的“斷開”,也可以點(diǎn)擊“呼叫”下的“斷開”,或者直接退出。掛載U盤利用串口進(jìn)行數(shù)據(jù)傳輸,通常只用來傳輸比較小的文件,遇到大文件傳輸,可以采用掛載U盤的辦法。要求是文件系統(tǒng)為FAT32的U盤,如果是NTFS的文件系統(tǒng),也可以掛載,但是要復(fù)雜一些,為簡單起見,一律格式化成FAT32的文件系統(tǒng)。掛載U盤將U盤插入ARM實(shí)驗(yàn)板的U盤插口,注意是host插口,不是device插口。實(shí)驗(yàn)箱加電,PC機(jī)進(jìn)入超級(jí)終端的“bash-4.0#”提示符下。鍵入以下命令:Bash-4.0#fdisk–l(檢查所有分區(qū)表)U盤分區(qū)表如下:掛載U盤可見,U盤文件系統(tǒng)是FAT32,設(shè)備號(hào)是sda1.可以查看一下:Bash-4.0#ls/dev/sda1顯示:“/dev/sda1”,說明確實(shí)在”/dev”下存在設(shè)備“sda1”。注意在Linux系統(tǒng)下,所有設(shè)備都是當(dāng)作文件類對待的。掛載U盤將此設(shè)備掛載:Bash-4.0#mount–tvfat/dev/sda1/mnt/udisk解釋:mount,掛載;-t,指明掛載設(shè)備的文件類型;后面是U盤的原設(shè)備和掛載以后指定的路徑。意思:將一個(gè)FAT32的U盤從設(shè)備/dev/sda1掛載到/mnt/udisk路徑下。掛載U盤但是,若/mnt/udisk原本不存在,那就要先建立該路徑:Bash-4.0#mkdir/mnt/udisk掛載完成后,可以查看U盤內(nèi)容:Bash-4.0#ls/mnt/udisk回顯:“工具”,那是我放在U盤的文件夾。截圖如下:掛載U盤卸載U盤U盤掛載完畢后,傳遞文件時(shí)需要卸載U盤,命令如下:Bash-4.0#umount/mnt/udisk然后,U盤可以安全拔出。這樣,就可以用U盤在PC機(jī)和ARM實(shí)驗(yàn)箱之間傳遞文件。交叉編譯后執(zhí)行將host主機(jī)上的C程序,經(jīng)過交叉編譯鏈接成可以被ARM開發(fā)板執(zhí)行的程序,然后下載到開發(fā)板上運(yùn)行。舉例:對于cjz.c程序,進(jìn)行交叉編譯鏈接。#cd/home/

溫馨提示

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

評(píng)論

0/150

提交評(píng)論