嵌入式Linux開發(fā)環(huán)境搭建_第1頁
嵌入式Linux開發(fā)環(huán)境搭建_第2頁
嵌入式Linux開發(fā)環(huán)境搭建_第3頁
嵌入式Linux開發(fā)環(huán)境搭建_第4頁
嵌入式Linux開發(fā)環(huán)境搭建_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、嵌入式Linux開發(fā)環(huán)境搭建,廣州嵌入式軟件公共技術(shù)支持中心 梁老師 2007年04月,嵌入式系統(tǒng)定義,嵌入到對象體中的專用計(jì)算機(jī)系統(tǒng) 三要素:嵌入、專用、計(jì)算機(jī) 嵌入式系統(tǒng)的特點(diǎn):由三要素引出 嵌入性:嵌入到對象體系中,有對象環(huán)境要求 專用性:軟、硬件按對象要求裁減 計(jì)算機(jī):實(shí)現(xiàn)對象的智能化功能,嵌入式系統(tǒng)的應(yīng)用,嵌入式Linux開發(fā)環(huán)境,嵌入式系統(tǒng)通常是一個(gè)資源受限的系統(tǒng),因此直接在嵌入式系統(tǒng)的硬件平臺(tái)上編寫軟件比較困難,有時(shí)候甚至是不可能的。 解決辦法: 首先在通用計(jì)算機(jī)上編寫程序; 然后通過交叉編譯生成目標(biāo)平臺(tái)上可以運(yùn)行的二進(jìn)制代碼格式; 最后再下載到目標(biāo)平臺(tái)上的特定位置上運(yùn)行。,嵌入

2、式Linux開發(fā)環(huán)境,關(guān)于交叉編譯 在一種平臺(tái)上編譯出能在另一種平臺(tái)(體系結(jié)構(gòu)不同)上運(yùn)行的程序。 在PC平臺(tái)(X86 CPU)上編譯出能運(yùn)行在arm平臺(tái)上的程序,編譯得到的程序在X86 CPU平臺(tái)上是不能運(yùn)行的,必須放到arm平臺(tái)上才能運(yùn)行。 用來編譯這種程序的編譯器就叫交叉編譯器。 為了不跟本地編譯器混淆,交叉編譯器的名字一般都有前綴。例如:arm-linux-gcc,嵌入式Linux開發(fā)環(huán)境,嵌入式Linux開發(fā)環(huán)境,嵌入式Linux開發(fā)環(huán)境,需要交叉開發(fā)環(huán)境(Cross Development Environment)的支持是嵌入式應(yīng)用軟件開發(fā)時(shí)的一個(gè)顯著特點(diǎn)。 交叉編譯器只是交叉開發(fā)

3、環(huán)境的一部分。 交叉開發(fā)環(huán)境是指編譯、鏈接和調(diào)試嵌入式應(yīng)用軟件的環(huán)境,它與運(yùn)行嵌入式應(yīng)用軟件的環(huán)境有所不同,通常采用宿主機(jī)目標(biāo)機(jī)模式。,嵌入式Linux開發(fā)環(huán)境,宿主機(jī)目標(biāo)板模式 宿主機(jī)(Host)是一臺(tái)通用計(jì)算機(jī),它通過串口或者以太網(wǎng)接口與目標(biāo)機(jī)通信。宿主機(jī)的軟硬件資源比較豐富,能夠大大提高嵌入式應(yīng)用軟件的開發(fā)速度和效率。 目標(biāo)板(Target),應(yīng)用程序?qū)嶋H運(yùn)行的平臺(tái),或者是能夠替代實(shí)際運(yùn)行環(huán)境的仿真系統(tǒng)。軟硬件資源通常都比較有限。,嵌入式Linux開發(fā)環(huán)境,宿主機(jī)目標(biāo)機(jī)模式 首先利用宿主機(jī)上豐富的資源和良好的開發(fā)環(huán)境開發(fā)和仿真調(diào)試目標(biāo)機(jī)上的軟件; 然后通過串口或者以網(wǎng)絡(luò)將交叉編譯生成的目

4、標(biāo)代碼傳輸并裝載到目標(biāo)機(jī)上,并在監(jiān)控程序或者操作系統(tǒng)的支持下利用交叉調(diào)試器進(jìn)行分析和調(diào)試; 最后目標(biāo)機(jī)在特定環(huán)境下脫離宿主機(jī)單獨(dú)運(yùn)行。,嵌入式Linux開發(fā)環(huán)境,開放的交叉開發(fā)環(huán)境的典型代表是GNU工具鏈目前已經(jīng)能夠支持x86、ARM、MIPS、PowerPC等多種處理器。 商業(yè)的交叉開發(fā)環(huán)境則主要有Metrowerks CodeWarrior、ARM Software Development Toolkit等等。,嵌入式Linux開發(fā)環(huán)境,GNU交叉工具鏈 交叉編譯器,例如arm-linux-gcc 交叉匯編器,例如arm-linux-as 交叉鏈接器,例如arm-linux-ld 用于處理

5、可執(zhí)行程序和庫的一些基本工具。例如arm-linux-strip,嵌入式Linux開發(fā)環(huán)境,GNU交叉工具鏈的下載 ARM官方網(wǎng)站下載 .uk 可以從該站點(diǎn)下載2.95.3以及3.2工具鏈 .uk/pub/armlinux/toolchain/cross-2.95.3.tar.bz2 .uk/pub/armlinux/toolchain/cross-3.2.tar.bz2,嵌入式Linux開發(fā)環(huán)境,cross-2.95.3.tar.bz2包的安裝: mkdir /usr/l

6、ocal/arm cp cross-2.95.3.tar.bz2 /usr/local/arm tar zxvf cross-2.95.3.tar.bz2 添加環(huán)境變量 在文件/etc/bashrc 文件最后添加: export PATH=/usr/local/arm/2.95.3/bin:$PATH 工具鏈安裝完成。,嵌入式Linux開發(fā)環(huán)境,GNU交叉工具鏈的常用工具介紹,嵌入式Linux開發(fā)環(huán)境,主要工具的使用 arm-linux-gcc 的使用 arm-linux-gcc o hello hello.c arm-linux-ar 和 arm-linux-ranlib 的使用 建立一個(gè)靜

7、態(tài)庫 arm-linux-ar r libhello.a h1.o h2.o 為靜態(tài)庫建立索引 arm-linux-ar s libhello.a arm-linux-ranlib libhello.a 由靜態(tài)庫產(chǎn)生可執(zhí)行文件 arm-linux-gcc -o hello hello.c lhello L ./ arm-linux-gcc -o hello hello.c libhello.a,嵌入式Linux開發(fā)環(huán)境,主要工具的使用 arm-linux-strip 的使用 移除所有的符號(hào)信息-strip-all Cp hello hello1 arm-linux-strip -strip-a

8、ll hello -rwxr-xr-x 1 arm root 2856 7 月 3 15:14 hello -rwxr-xr-x 1 arm root 13682 7 月 3 15:13 hello1 被strip后的hello程序比原來的hello1程序要小很多。 移除調(diào)試符號(hào)信息 -g arm-linux-strip -g hello -rwxr-xr-x 1 arm root 4501 7 月 3 15:17 hello -rwxr-xr-x 1 arm root 13682 7 月 3 15:13 hello1,遠(yuǎn)程訪問目標(biāo)板,如何觀察應(yīng)用程序在目標(biāo)板的運(yùn)行情況,即查看程序的輸出信息?

9、 通過串口線連接宿主機(jī)和目標(biāo)板。 配置串口做為目標(biāo)板的輸出設(shè)備。 例如在交叉編譯目標(biāo)板的linux內(nèi)核時(shí),配置指定終端為串口: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttyS0,115200 在宿主機(jī)上通過串口通信軟件查看目標(biāo)板系統(tǒng)的運(yùn)行情況。,遠(yuǎn)程訪問目標(biāo)板,超級終端的使用 打開超級終端 超級終端程序通常位于附件中的通訊中,“Hypertrm” 圖標(biāo)所指即是超級終端程序。 為新的連接取一個(gè)名字,遠(yuǎn)程訪問目標(biāo)板,超級終端的使用 選擇連接目標(biāo)板的串口,遠(yuǎn)程訪問目標(biāo)板,超級終端的使用 設(shè)置串口 注意必須選擇無流控制,否則只能看到輸出而

10、不能輸入。串口波特率是 11520,遠(yuǎn)程訪問目標(biāo)板,超級終端的使用 當(dāng)所有的連接參數(shù)都設(shè)置好以后,打開目標(biāo)板電源開關(guān),就會(huì)看到系統(tǒng) 的啟動(dòng)信息,當(dāng) Linux 啟動(dòng)以后, 超級終端就相當(dāng)于虛擬終端,可通過它來操作目標(biāo)板。 選擇超級終端“文件”菜單下的“另存為 ”,保存該連接設(shè)置,以便于以后再連接時(shí)就不必重新執(zhí)行以上設(shè)置了,遠(yuǎn)程訪問目標(biāo)板,超級終端的使用 打開目標(biāo)板電源開關(guān),就會(huì)看到系統(tǒng) 的啟動(dòng)信息,當(dāng) Linux 啟動(dòng)以后, 超級終端就相當(dāng)于虛擬終端,可通過它來操作目標(biāo)板。,遠(yuǎn)程訪問目標(biāo)板,minicom的使用 minicom 的設(shè)置 :minicom -s,遠(yuǎn)程訪問目標(biāo)板,minicom的使

11、用 選擇串口 選擇菜單中的“ Serial port setup ”,按回車,進(jìn)入如下圖所示界面。按“ A ”以設(shè)置“ Serial Device ”(串口 1 - /dev/ttyS0 ,串口2 - /dev/ttyS1),遠(yuǎn)程訪問目標(biāo)板,minicom的使用 設(shè)置波特率 按“ E ”鍵進(jìn)入設(shè)置“ bps/par/Bits ”(波特率)界面。再按“ I ”以設(shè)置波特率為 115200。,遠(yuǎn)程訪問目標(biāo)板,minicom的使用 設(shè)置無流控制 按回車退回到上一級菜單,按“F”鍵設(shè)置“ Hardware Flow Control ”為“ NO ”,其他選項(xiàng)使用缺省值。,遠(yuǎn)程訪問目標(biāo)板,minicom

12、的使用 保存設(shè)置 再選擇“Exit”退出設(shè)置模式。剛才的設(shè)置被保存到“ /etc/minirc.dfl ”。 設(shè)置完畢 打開目標(biāo)板電源的電源開關(guān),minicom輸出目標(biāo)板的啟動(dòng)信息,當(dāng) Linux 啟動(dòng)以后, minicom 就相當(dāng)于虛擬終端,可通過它來操作目標(biāo)板。,遠(yuǎn)程訪問目標(biāo)板,minicom的使用 退出 minicom 同時(shí)按下“ Ctrl+A ”鍵,緊接著再按下“ Q ”鍵,在跳出的窗口中,選擇“ Yes ”。,下載程序映象到目標(biāo)板,通過串口下載 使用三星公司的DNW軟件。設(shè)置波特率115200、端口號(hào)、下載地址0 x30200000 上電啟動(dòng)開發(fā)板,進(jìn)入 BIOS 界面 選擇2串口下

13、載 點(diǎn)擊“serial port”菜單,選擇“Transmit”選項(xiàng),下載程序映象到目標(biāo)板,通過usb下載 同樣使用三星公司的DNW軟件。設(shè)置波特率115200、端口號(hào)、下載地址0 x30200000 上電啟動(dòng)開發(fā)板,進(jìn)入 BIOS 界面 接上 USB DEVICE 的連接線,選擇“0” ,選擇 USB 下載,注意用 USB 下載要先在PC 端裝好驅(qū)動(dòng)程序,保證 USB 連接好。 有時(shí) PC 端出現(xiàn)發(fā)現(xiàn)無法識(shí)別的 USB 設(shè)時(shí),可在 BIOS 中輸入 ESC 取消下載,等幾秒鐘再輸入“0”啟動(dòng) USB 下載。出現(xiàn)“Now USB is connected”說明 USB 正確枚舉。 點(diǎn)擊“USB

14、 Port” ”Transmit”選項(xiàng)。,下載程序映象到目標(biāo)板,通過TFTP方式下載 TFTP協(xié)議是簡單的文件傳輸協(xié)議,適合目標(biāo)板Bootloader的使用。(u-boot、vivi) TFTP文件傳輸基于UDP。 通過TFTP來傳輸目標(biāo)板啟動(dòng)需要的內(nèi)核映象文件zImage 傳輸速度快,使用方便。,下載程序映象到目標(biāo)板,通過TFTP方式下載 tftp分服務(wù)器和客戶端。 在宿主機(jī)開啟tftp服務(wù),設(shè)置好tftp的根目錄內(nèi)容 在目標(biāo)板開啟tftp客戶端程序。 在目標(biāo)板的bootloader交互節(jié)目中通過tftpboot命令下載內(nèi)核。 tftpboot 0 x30200000 zImage,下載程序

15、映象到目標(biāo)板,通過TFTP方式下載 Linux的tftp服務(wù)器的配置 編輯 /etc/xinetd.d/tftp,只有在安裝了tftp服務(wù)后,才會(huì)出現(xiàn)tftp文件。 修改其中disable和server_args項(xiàng),其余可保持不變。 Service tftpsocket type = dgramprotocol = udpwait = yesuser = rootserver =/usr/sbin/in.tftpdserver_args = -s /tftpboot - 設(shè)置tftp服務(wù)輸出目錄。disable = no - 默認(rèn)為yes,應(yīng)修改成no per_source = 11cps =

16、 100 2flags = IPv4,下載程序映象到目標(biāo)板,通過TFTP方式下載 重啟xinetd服務(wù),使得更改的配置有效 Service xinetd restart 確認(rèn)tftp服務(wù)是否已經(jīng)開啟 netstat -au 在目標(biāo)板啟動(dòng)tftp客戶端程序 tftpboot 0 x30200000 zImage 下載信息: TFTP from server ; our IP address is 10 Filename zImage. Load address: 0 x30200000 Loading: # # # done Bytes transferred =

17、 913880 (df1d8 hex),下載程序映象到目標(biāo)板,通過掛載NFS方式下載 NFS服務(wù)就是將宿主機(jī)的一個(gè)目錄通過網(wǎng)絡(luò)可以被掛載到其他計(jì)算機(jī)上,并且作為其他計(jì)算機(jī)的一個(gè)目錄。 在嵌入式開發(fā)中,通過NFS可以很方便的將修改的文件通過NFS傳輸?shù)侥繕?biāo)板上。不用反復(fù)燒寫鏡像文件。,下載程序映象到目標(biāo)板,通過掛載NFS方式下載 NFS的使用分服務(wù)器端和客戶端 服務(wù)器端提供要共享的文件,客戶端通過掛載“mount”實(shí)現(xiàn)對共享文件的訪問操作。 mount :/home/nfs /tmp/test NFS服務(wù)器端通過讀取配置文件/etc/exports決定所共享的文件目錄。 配

18、置文件的語法:每一行由輸出路徑,客戶名列表以及每個(gè)客戶名后緊跟的訪問選項(xiàng)構(gòu)成:共享的目錄 主機(jī)名或IP(參數(shù),參數(shù)) 共享的目錄 IP1(參數(shù)1,參數(shù)2) IP2(參數(shù)3,參數(shù)4),下載程序映象到目標(biāo)板,通過掛載NFS方式下載 重啟NFS服務(wù):service nfs restart 通過showmount 命令來查看開放的目錄。 showmount e localhost 進(jìn)行網(wǎng)絡(luò)設(shè)置,將eth0的網(wǎng)絡(luò)地址指定為,掩碼,網(wǎng)關(guān)不需要。設(shè)置完之后要重啟網(wǎng)絡(luò)。 Serviec network restart 關(guān)閉防火墻,選擇系統(tǒng)設(shè)置安全級別,將安全級別

19、改為“無防火墻”。 去掉iptables 服務(wù):選擇系統(tǒng)設(shè)置服務(wù)器設(shè)置服務(wù),在彈出的界面上將optables前的“”去掉。 將主機(jī)上的目錄掛載到另一個(gè)目錄下,測試NFS是否設(shè)置成功。,下載程序映象到目標(biāo)板,通過掛載NFS方式下載 在超級終端或者minicom下通過NFS掛載宿主機(jī)目錄 mount :/home/nfs /tmp/test 卸載NFS文件系統(tǒng) umount /tmp/test,交叉調(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)程。 嵌入式軟件開發(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)試器,交叉調(diào)試器的結(jié)構(gòu),交叉調(diào)試器,制作交叉調(diào)試器 解壓源碼包 tar zxf gdb-6.0.tar.gz 配置 cd gdb-6.0 mkdir build-arm-linux cd build-ar

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論