




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1、交叉開發(fā)環(huán)境模式概述2、宿主機(jī)環(huán)境3、目標(biāo)板環(huán)境4、交叉編譯工具鏈5、gdb調(diào)試器6、遠(yuǎn)程調(diào)試7、內(nèi)核調(diào)試8、網(wǎng)絡(luò)調(diào)試1、交叉開發(fā)環(huán)境模式概述什么是嵌入式系統(tǒng) “以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)?!庇布系木窒扌?存儲(chǔ)空間小 處理器頻率低 缺少存儲(chǔ)、輸入輸出設(shè)備宿主機(jī)目標(biāo)板交叉開發(fā)模式組成部分 宿主機(jī):平時(shí)使用的桌面計(jì)算機(jī) 目標(biāo)板:嵌入式開發(fā)板介紹 利用宿主機(jī)上已有的成熟的開發(fā)工具,專門針對(duì)目標(biāo)板定制一套系統(tǒng),包括引導(dǎo)程序、內(nèi)核和文件系統(tǒng),然后下載到目標(biāo)板上運(yùn)行。宿主機(jī)目標(biāo)板交叉開發(fā)模式開發(fā)過(guò)程 在宿主機(jī)
2、上編寫代碼,并通過(guò)交叉編譯工具編譯出能夠在目標(biāo)板上運(yùn)行的程序,然后下載到目標(biāo)板上測(cè)試執(zhí)行,最后利用宿主機(jī)上的調(diào)試工具對(duì)目標(biāo)板上運(yùn)行的程序進(jìn)行遠(yuǎn)程調(diào)試。特點(diǎn) 使用和桌面開發(fā)一樣的工具,降低學(xué)習(xí)成本。 充分利用宿主機(jī)的開發(fā)環(huán)境。宿主機(jī)目標(biāo)板連接方式串口 利用串口給目標(biāo)板發(fā)送命令,同時(shí)也可以接受目標(biāo)板返回的信息并顯示。 宿主機(jī)可以通過(guò)串口往目標(biāo)板傳送文件; 目標(biāo)板可以把程序運(yùn)行的結(jié)果返回并顯示。 串口驅(qū)動(dòng)程序的實(shí)現(xiàn)相對(duì)比較簡(jiǎn)單,缺點(diǎn)是傳輸速度慢,并不適用于傳輸大量數(shù)據(jù)的場(chǎng)合。以太網(wǎng) 以太網(wǎng)是當(dāng)今局域網(wǎng)采用的最通用的通信協(xié)議標(biāo)準(zhǔn)。 它使用簡(jiǎn)單,配置靈活,支持廣泛,傳輸速率快,安全可靠,缺點(diǎn)是網(wǎng)絡(luò)驅(qū)動(dòng)的
3、實(shí)現(xiàn)比較復(fù)雜。宿主機(jī)目標(biāo)板連接方式USB USB是Universal Serial Bus通用串行總線)的縮寫,現(xiàn)已成為PC的標(biāo)準(zhǔn),基于USB標(biāo)準(zhǔn)的設(shè)備被廣泛使用。 一種快速、靈活的總線接口,與其它通信接口相比,USB接口的特點(diǎn)是易于使用。 支持熱插拔,無(wú)需用戶自己配置,系統(tǒng)會(huì)自動(dòng)搜索驅(qū)動(dòng)并安裝。 USB是典型的主從結(jié)構(gòu),兩端分別需要不同的驅(qū)動(dòng)程序。JTAG JTAG是一種國(guó)際標(biāo)準(zhǔn)測(cè)試協(xié)議,主要用于芯片內(nèi)部測(cè)試及對(duì)系統(tǒng)進(jìn)行仿真、調(diào)試。 在嵌入式系統(tǒng)領(lǐng)域,幾乎所有的處理器都支持JTAG,調(diào)試器的單步調(diào)試和斷點(diǎn)都需要和JTAG交涉。 可以使用JTAG將程序燒寫到目標(biāo)板上。2、宿主機(jī)環(huán)境串口終端BO
4、OTP協(xié)議TFTP協(xié)議交叉編譯Make工具串口的用途 作為終端執(zhí)行命令,管理嵌入式系統(tǒng)。 使用zmodem協(xié)議等傳送小文件。串口終端 超級(jí)終端 (Windows XP) Minicom (Linux)BOOTP協(xié)議協(xié)議什么是BOOTP協(xié)議 引導(dǎo)協(xié)議(Bootstrap Protocol,BOOTP)是一種基于TCP/IP的協(xié)議,它最初在RFC951中定義,如今在通用計(jì)算機(jī)上廣泛使用的DHCP協(xié)議就是從BOOTP協(xié)議擴(kuò)展而來(lái)。BOOTP協(xié)議使用TCP/IP網(wǎng)絡(luò)協(xié)議中的UDP 67/68兩個(gè)通訊端口。BOOTP協(xié)議用途 用于無(wú)盤客戶機(jī)從服務(wù)器得到自己的IP地址、服務(wù)器的IP地址、啟動(dòng)映象文件名、網(wǎng)
5、關(guān)信息等等第一步,在主機(jī)平臺(tái)運(yùn)行BOOTP服務(wù)的情況下,目標(biāo)板由Boot Loader啟動(dòng)BOOTP,此時(shí)目標(biāo)板還沒(méi)有IP地址,它就用廣播形式以IP地址向網(wǎng)絡(luò)中發(fā)出IP地址查詢的請(qǐng)求,這個(gè)請(qǐng)求幀中包含了客戶機(jī)的網(wǎng)卡MAC地址。第二步,主機(jī)平臺(tái)上的BOOTP服務(wù)器接收到的這個(gè)請(qǐng)求幀,根據(jù)這幀中的MAC地址在Bootptab啟動(dòng)數(shù)據(jù)庫(kù)中查找這個(gè)MAC的記錄,如果沒(méi)有此MAC的記錄則不響應(yīng)這個(gè)請(qǐng)求;如果有就將FOUND幀發(fā)送回目標(biāo)板。FOUND幀中包含的主要信息有目標(biāo)板的IP地址、服務(wù)器的IP地址、硬件類型、網(wǎng)關(guān)IP地址、目標(biāo)板MAC地址和啟動(dòng)映象文件名。第三步,目標(biāo)板就根據(jù)FOUND
6、幀中的信息通過(guò)TFTP服務(wù)器下載啟動(dòng)映象文件。TFTP協(xié)議協(xié)議什么是BOOTP協(xié)議 TFTP的全稱是Trivial File Transfer Protocol,即“簡(jiǎn)單文件傳輸協(xié)議”,它是TCP/IP協(xié)議族中的一個(gè)在客戶端和服務(wù)端之間進(jìn)行簡(jiǎn)單文件傳輸?shù)膮f(xié)議,提供不復(fù)雜、開銷不大的文件傳輸服務(wù)。TFTP特點(diǎn) 不提供用戶名和口令 TFTP 協(xié)議傳輸由客戶端發(fā)起交叉編譯交叉編譯背景 目標(biāo)文件在不同架構(gòu)間由于采用的CPU指令集不同等原因不能通用。定義 交叉編譯就是在一個(gè)架構(gòu)的機(jī)器下編譯另一個(gè)架構(gòu)的目標(biāo)文件。 需要安裝交叉編譯工具鏈make工具工具GNU make是一種常用的編譯工具,通過(guò)它,開發(fā)人員
7、可以很方便地管理軟件編譯的內(nèi)容、方式和時(shí)機(jī),從而能夠把主要精力集中在代碼的編寫上。make會(huì)自動(dòng)根據(jù)文件修改時(shí)間來(lái)判斷源文件中哪些部分有更新,通過(guò)解釋Makefile文件內(nèi)的規(guī)則并執(zhí)行相應(yīng)的命令,重新編譯鏈接這些更新過(guò)的文件。make工作過(guò)程工作過(guò)程編寫Makefile Makefile由一系列規(guī)則組成,每條規(guī)則說(shuō)明要生成哪些目標(biāo)文件、生成目標(biāo)文件所依賴的其它文件以及生成目標(biāo)文件所需要的命令。編譯過(guò)程 通過(guò)查看時(shí)間戳來(lái)確認(rèn)依賴文件是否比目標(biāo)文件更新,如果是則重新執(zhí)行這條規(guī)則的命令,并進(jìn)一步地執(zhí)行依賴這些中間目標(biāo)文件的規(guī)則,層層推進(jìn),最后生成新的結(jié)果文件。所有的依賴文件都沒(méi)有被編譯過(guò),則對(duì)每個(gè)源
8、文件進(jìn)行編譯并進(jìn)行鏈接,生成最后的可執(zhí)行程序 。源文件在上次編譯之后被修改過(guò),則在本次執(zhí)行make的時(shí)候?qū)?huì)被重新編譯。頭文件在上次編譯之后被修改過(guò),則所有包含此頭文件的源文件在本次執(zhí)行make的時(shí)候?qū)?huì)被重新編譯。# Makefile Example for Mathmath : main.o display.o plus.o minus.o multi.o divide.o mod.o gcc -o math main.o display.o plus.o minus.o multi.o divide.o mod.omain.o : main.c defs.h display.h gcc
9、 -c main.c display.o : display.c defs.h display.h gcc -c display.c plus.o : plus.c defs.h gcc -c plus.cminus.o: minus.c defs.h gcc -c minus.cmulti.o: multi.c defs.h gcc -c multi.cdivide.o: divide.c defs.h gcc -c divide.cmod.o: mod.c defs.h gcc -c mod.c .PHONY: cleanclean : -rm main.o display.o plus.
10、o minus.o multi.o divide.o mod.oTARGET : PREREQUISITESCOMMAND # command前面使用tab縮進(jìn)說(shuō)明:TARGET:規(guī)則的目標(biāo)。通常是最后所要生成的可執(zhí)行文件名或者為了生成這個(gè)目標(biāo)而必需的中間過(guò)程的目標(biāo)文件名。PREREQUISITES:規(guī)則的依賴。生成規(guī)則目標(biāo)所需要的文件列表,通常一個(gè)目標(biāo)依賴于一個(gè)或多個(gè)文件。COMMAND:規(guī)則執(zhí)行的命令。生成規(guī)則目標(biāo)所需要執(zhí)行的命令,可以是shell下面的任何命令組合。3、目標(biāo)目標(biāo)板環(huán)境板環(huán)境JTAG接口Boot LoaderJTAG接口接口簡(jiǎn)介簡(jiǎn)介作為硬件測(cè)試手段,JTAG的功能與CPU狀
11、態(tài)無(wú)關(guān),可驅(qū)動(dòng)設(shè)備的所有外部引腳并讀入數(shù)據(jù),而且在設(shè)備內(nèi)部奪取外部的連接點(diǎn)(與通往外部的各個(gè)pin腳一一連接)。各個(gè)cell為了形成 Serial Shift Register而相連。整體的接口由5個(gè)pin腳來(lái)控制(TDI,TMS,TCK,nTRST,TDO)。其功能包括:測(cè)試線路連線和端子的連接狀態(tài);測(cè)試設(shè)備間的連接狀態(tài);進(jìn)行Flash memory 燒寫等Boot Loader簡(jiǎn)介簡(jiǎn)介Boot Loader是系統(tǒng)加電后運(yùn)行的第一段代碼。完成初始化硬件設(shè)備、創(chuàng)建內(nèi)核需要的信息等工作,最后調(diào)用操作系統(tǒng)內(nèi)核。對(duì)硬件的依賴非常強(qiáng),不同的體系結(jié)構(gòu)、不同的嵌入式板級(jí)設(shè)備配置都會(huì)對(duì)Boot Loader
12、有不同的需求。4、交叉編譯交叉編譯工具工具鏈鏈交叉編譯工具鏈?zhǔn)且粋€(gè)由編譯器、鏈接器和解釋器組成的集成開發(fā)環(huán)境。和本地編譯類似,交叉編譯的過(guò)程也是由編譯、鏈接等階段組成,源程序通過(guò)交叉編譯器編譯成目標(biāo)模塊,并由交叉鏈接器加載庫(kù)最后鏈接成可在目標(biāo)平臺(tái)上執(zhí)行的程序代碼。交叉編譯交叉編譯的的構(gòu)建構(gòu)建從頭編譯 編譯難度大,不適合初學(xué)者。腳本編譯 需要選擇合適的腳本工具,例如crosstool下載使用 下載指定平臺(tái)編譯好的二進(jìn)制包。相關(guān)工具相關(guān)工具交叉編譯工具鏈主要包括: 標(biāo)準(zhǔn)庫(kù):glibc 編譯器:gcc 鏈接器:ld 匯編器:as 調(diào)試器:gdbglibc最初是自由軟件基金會(huì)為其GNU操作系統(tǒng)所寫,但
13、目前最主要的應(yīng)用是配合Linux內(nèi)核,成為GNU/Linux操作系統(tǒng)一個(gè)重要的組成部分。是Linux系統(tǒng)中最底層的API,幾乎其它任何運(yùn)行庫(kù)都會(huì)直接或間接地依賴于glibc。除了封裝系統(tǒng)調(diào)用之外,還提供一些基本的功能,例如open、malloc、printf、exit等等。 gcc支持不同的編程語(yǔ)言,它被目前許多Unix/Linux系統(tǒng)作為默認(rèn)的標(biāo)準(zhǔn)編譯器。支持多種處理器架構(gòu)上,并且在商業(yè)、專利和開源軟件開發(fā)環(huán)境中廣泛使用。支持嵌入式系統(tǒng)平臺(tái)。binutils是一組開發(fā)工具包,包括連接器、匯編器和其他用于目標(biāo)文件和檔案的工具。其中包括:addr2line、ar 、as、ld、nm、objdum
14、p 、ranlib、readelf是一款功能非常強(qiáng)大的調(diào)試器,既支持多種硬件平臺(tái),也支持多種編程語(yǔ)言,目前gdb支持的調(diào)試語(yǔ)言有C/C+、Java、Fortran、Modula-2等多種語(yǔ)言。不僅用于本地調(diào)試,還可以用于遠(yuǎn)程調(diào)試,非常適合嵌入式系統(tǒng)開發(fā)使用。使用gdb可以完成下面這些任務(wù): 運(yùn)行程序,可以給程序加上所需的任何調(diào)試條件; 在給定的條件下讓程序停止; 檢查程序停止時(shí)的運(yùn)行狀態(tài); 通過(guò)改變一些數(shù)據(jù),可以更快地改正程序的錯(cuò)誤。6、遠(yuǎn)程調(diào)試遠(yuǎn)程調(diào)試以調(diào)試器和被調(diào)試程序是否在同一臺(tái)機(jī)器區(qū)分 本地調(diào)試 遠(yuǎn)程調(diào)試嵌入式系統(tǒng)大多使用遠(yuǎn)程調(diào)試方式遠(yuǎn)程調(diào)試解決方案插樁方案 需要在目標(biāo)操作系統(tǒng)和宿主機(jī)
15、調(diào)試器內(nèi)分別添加一些功能模塊,然后二者互通信息調(diào)試,這種方案稱為插樁(stub) 運(yùn)行在目標(biāo)板上的被調(diào)試程序,一經(jīng)初始化,在入口點(diǎn)會(huì)調(diào)用設(shè)置斷點(diǎn)的函數(shù),主動(dòng)觸發(fā)異常然后由異常處理程序控制,異常處理程序?qū)?huì)調(diào)用調(diào)試端口通信模塊,監(jiān)聽宿主機(jī)調(diào)試器發(fā)送的調(diào)試信息。雙方通信一旦建立,就可以根據(jù)遠(yuǎn)程調(diào)試協(xié)議進(jìn)行調(diào)試。使用ROM Monitor調(diào)試目標(biāo)機(jī)目標(biāo)板程序使用kgdb調(diào)試系統(tǒng)內(nèi)核使用gdbserver調(diào)試用戶空間應(yīng)用程序gdb遠(yuǎn)程調(diào)試遠(yuǎn)程調(diào)試功能功能由宿主機(jī)gdb和目標(biāo)板調(diào)試stub共同構(gòu)成。兩者通過(guò)串口或TCP連接,采用gdb遠(yuǎn)程串行協(xié)議(Remote Serial Protocol, RSP)
16、連接。RSP定義了宿主機(jī)gdb和被調(diào)試的目標(biāo)板程序進(jìn)行通信時(shí)數(shù)據(jù)包的格式。它是一種基于消息的ASCII碼協(xié)議,包含了內(nèi)存讀寫、寄存器查詢、程序運(yùn)行等命令。gdbserver遠(yuǎn)程調(diào)試遠(yuǎn)程調(diào)試7、內(nèi)核調(diào)試內(nèi)核調(diào)試Linux內(nèi)核的規(guī)模之龐大,單靠閱讀代碼查找BUG已經(jīng)非常困難。而Linux內(nèi)核的開發(fā)人員出于保證內(nèi)核代碼正確性的考慮,不愿意在Linux內(nèi)核源代碼中添加調(diào)試器。所以對(duì)Linux內(nèi)核進(jìn)行調(diào)試一直是項(xiàng)艱苦的工作。內(nèi)核調(diào)試技術(shù) 內(nèi)核打印函數(shù) printk 內(nèi)核源代碼調(diào)試kgdbprintk函數(shù)具有良好的健壯性,不受內(nèi)核運(yùn)行條件的限制,在系統(tǒng)運(yùn)行的任何階段都可以使用。和C標(biāo)準(zhǔn)庫(kù)中的printf函數(shù)不同的是,printk函數(shù)可以指定一個(gè)日志級(jí)別。內(nèi)核根據(jù)這個(gè)級(jí)別來(lái)判斷是否在終端上打印消息。在頭文件中定義了可用的日志級(jí)別kgdb內(nèi)核調(diào)試k
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流資源配置的戰(zhàn)略考量及試題與答案
- 2025年份2月份智慧工地?fù)P塵噪聲實(shí)時(shí)監(jiān)控設(shè)備施工規(guī)范
- 2024年陪診師考試指南試題及答案
- 2025年-上海市安全員-B證考試題庫(kù)附答案
- 2024年計(jì)算機(jī)二級(jí)考試快速試題解答
- 2025年3月跨境電子商務(wù)倉(cāng)儲(chǔ)機(jī)器人安裝標(biāo)準(zhǔn)
- 投資咨詢工程師全局觀念試題及答案
- 景觀照明燈具外殼保護(hù)透明樹脂
- 2024年氣候變化與資源配置試題及答案
- 國(guó)際商務(wù)談判與貿(mào)易規(guī)則實(shí)踐題集
- 【創(chuàng)意卡通】趣味黃人教育培訓(xùn)模板
- XX學(xué)校名師工作室專業(yè)發(fā)展規(guī)劃(附學(xué)校名師評(píng)選方案)
- GB/T 31914-2015電子文件管理系統(tǒng)建設(shè)指南
- GB/T 2518-2008連續(xù)熱鍍鋅鋼板及鋼帶
- GA 1800.2-2021電力系統(tǒng)治安反恐防范要求第2部分:火力發(fā)電企業(yè)
- 運(yùn)輸供應(yīng)商年度評(píng)價(jià)表
- 電壓力鍋原理
- 軟件著作權(quán)申請(qǐng)課件
- 廣州市三年級(jí)下冊(cè)英語(yǔ)單詞
- 山鋼鋼板材質(zhì)單
- 男性公民兵役登記表.docx
評(píng)論
0/150
提交評(píng)論