嵌入式linux開發(fā)環(huán)境課件

單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí)蘇丹紅阿薩德發(fā)送到發(fā)射點(diǎn)發(fā)撒到發(fā)射點(diǎn)發(fā)射到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā),第三級(jí)撒到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā)撒到發(fā)射點(diǎn)發(fā)阿道夫撒旦法撒到發(fā)射點(diǎn)發(fā),第四級(jí)sfeeeeeeeeeeeee撒到發(fā)射到發(fā)射點(diǎn)發(fā)阿薩德發(fā)送到發(fā)射點(diǎn)發(fā)阿薩德發(fā)送到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā),第五級(jí)撒到發(fā)射點(diǎn)發(fā)射到發(fā)射點(diǎn)發(fā)撒到發(fā)射點(diǎn)發(fā)斯蒂芬阿斯蒂芬,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí)蘇丹紅阿薩德發(fā)送到發(fā)射點(diǎn)發(fā)撒到發(fā)射點(diǎn)發(fā)射到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā),第三級(jí)撒到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā)撒到發(fā)射點(diǎn)發(fā)阿道夫撒旦法撒到發(fā)射點(diǎn)發(fā),第四級(jí)sfeeeeeeeeeeeee撒到發(fā)射到發(fā)射點(diǎn)發(fā)阿薩德發(fā)送到發(fā)射點(diǎn)發(fā)阿薩德發(fā)送到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā)as到發(fā)射點(diǎn)發(fā),第五級(jí)撒到發(fā)射點(diǎn)發(fā)射到發(fā)射點(diǎn)發(fā)撒到發(fā)射點(diǎn)發(fā)斯蒂芬阿斯蒂芬,嵌入式linux開發(fā)環(huán)境,嵌入式linux開發(fā)環(huán)境,教學(xué)回顧,linux下的編譯器,linux下的調(diào)試器,make工具,教學(xué)回顧linux下的編譯器,教學(xué)內(nèi)容,嵌入式系統(tǒng),嵌入式linux系統(tǒng),開發(fā)模式,交叉編譯,交叉調(diào)試,教學(xué)內(nèi)容嵌入式系統(tǒng),教學(xué)要求,掌握交叉編譯器的安裝及相關(guān)工具的使用,掌握交叉調(diào)試,掌握目標(biāo)板與主機(jī)的通信方法,教學(xué)要求掌握交叉編譯器的安裝及相關(guān)工具的使用,嵌入式系統(tǒng),嵌入式系統(tǒng),以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等嚴(yán)格要求的,專用計(jì)算機(jī)系統(tǒng),。
嵌入式系統(tǒng)的幾個(gè)重要特征,低功耗、體積小,專用性強(qiáng),軟件固化在存儲(chǔ)器芯片,硬件和軟件剪裁,代碼質(zhì)量要求很高,專門的開發(fā)工具和開發(fā)環(huán)境,嵌入式系統(tǒng)嵌入式系統(tǒng),嵌入式系統(tǒng)與PC機(jī)的比較(1),設(shè)備名稱嵌入式系統(tǒng)PC機(jī),CPU嵌入式處理器CPU(Intel的Pentium,(ARM,MIPS)AMD的Athlon等),內(nèi)存SDRAM,DDR芯片SDRAM,DDR內(nèi)存條,存儲(chǔ)設(shè)備Flash芯片硬盤,輸入設(shè)備 按鍵、觸摸屏 鼠標(biāo)、鍵盤,傳感器,輸出設(shè)備LCD顯示器,聲音設(shè)備音頻芯片聲卡,接口MAX232等芯片主板集成,其他設(shè)備USB芯片、主板集成或外接卡,網(wǎng)卡芯片,嵌入式系統(tǒng)與PC機(jī)的比較(1)設(shè)備名稱嵌入式系統(tǒng)PC,嵌入式系統(tǒng)與PC機(jī)的比較(2),名稱嵌入式系統(tǒng)PC機(jī),引導(dǎo)代碼Bootloader引導(dǎo),主板的BIOS引導(dǎo),無須,針對(duì)不同電路板進(jìn)行移植改動(dòng),操作系統(tǒng)WinCE、VxWorks、Linux等Windows、Linux等,需要移植 不需要移植,驅(qū)動(dòng)程序必須針對(duì)電路板進(jìn)行移植從網(wǎng)上下載直接使用,協(xié)議棧需要移植操作系統(tǒng)包括,開發(fā)環(huán)境交叉編譯在本機(jī)就可開發(fā)調(diào)試,仿真器需要不需要,嵌入式系統(tǒng)與PC機(jī)的比較(2)名稱嵌入式系統(tǒng)PC機(jī),現(xiàn)今,嵌入式開發(fā)分類,基于,單片機(jī),開發(fā);,基于專用集成電路的,板級(jí),系統(tǒng),設(shè)計(jì),;根據(jù)需求利用現(xiàn)有的,IC(CPU、RAM、flash)等設(shè)計(jì)電路板,在板中移植操作系統(tǒng),開發(fā)應(yīng)用程序。
片上系統(tǒng),(,System On Chip,SOC);在單芯片上集成數(shù)字信號(hào)處理器、微控制器、存儲(chǔ)器、接口電路等模塊,即芯片設(shè)計(jì);講求軟硬件協(xié)調(diào)開發(fā)現(xiàn)今,嵌入式開發(fā)分類基于單片機(jī)開發(fā);,嵌入式系統(tǒng)結(jié)構(gòu),嵌入式系統(tǒng)一般包括,硬件,和,軟件,兩部分,這里的硬件是以一個(gè)高性能的處理器(通常是,32位處理器)為基礎(chǔ);,軟件是以一個(gè)多任務(wù)操作系統(tǒng)為基礎(chǔ)的綜合平臺(tái),這樣一個(gè)軟、硬件平臺(tái)是單片機(jī)無法比擬的,可稱之為“嵌入式系統(tǒng)”嵌入式系統(tǒng)結(jié)構(gòu)嵌入式系統(tǒng)一般包括硬件和軟件兩部分,(1)嵌入式硬件平臺(tái),其他外設(shè),SDRAM,Flash,外部總線,控制器,SDRAM,控制器,時(shí)鐘,復(fù)位,中斷,控制器,處理器核,片上系統(tǒng),(1)嵌入式硬件平臺(tái)其他外設(shè)SDRAMFlash外部總線SD,(2)嵌入式系統(tǒng)軟件,嵌入式軟件可以分為兩大類:,系統(tǒng)軟件:控制和管理嵌入式系統(tǒng)資源,一般是內(nèi)核應(yīng)用軟件:在系統(tǒng)軟件之上,如,GUI(圖形界面),網(wǎng)絡(luò)服務(wù)器軟件等2)嵌入式系統(tǒng)軟件嵌入式軟件可以分為兩大類:,(2)嵌入式軟件結(jié)構(gòu),應(yīng)用程序,硬件平臺(tái),嵌入式軟件,內(nèi)核子程序(進(jìn)程調(diào)度、,內(nèi)存管理、文件系統(tǒng)、,網(wǎng)絡(luò)、進(jìn)程間通信),動(dòng)態(tài)庫(kù),BSP包(驅(qū)動(dòng)程序),系統(tǒng)調(diào)用,內(nèi)核軟件,(2)嵌入式軟件結(jié)構(gòu)應(yīng)用程序硬件平臺(tái)嵌入式軟件內(nèi)核子程序(進(jìn),嵌入式軟件開發(fā),嵌入式應(yīng)用開發(fā)過程,一個(gè)嵌入式應(yīng)用項(xiàng)目的開發(fā)過程是一個(gè)硬件和軟件設(shè)計(jì)的綜合過程,是一個(gè)系統(tǒng)設(shè)計(jì)過程,主要經(jīng)歷以下步驟:,硬件設(shè)計(jì)與實(shí)現(xiàn),引導(dǎo)加載程序的設(shè)計(jì),操作系統(tǒng)的移植(主要是驅(qū)動(dòng)程序移植),應(yīng)用程序的設(shè)計(jì),系統(tǒng)調(diào)試,樣機(jī)交付,其中,引導(dǎo)加載程序,操作系統(tǒng)移植,應(yīng)用程序設(shè)計(jì)是軟件設(shè)計(jì),具有自己的特點(diǎn)。
嵌入式軟件開發(fā)嵌入式應(yīng)用開發(fā)過程,嵌入式linux系統(tǒng),軟件平臺(tái),由,linux內(nèi)核等多個(gè)開源軟件構(gòu)成的自定義系統(tǒng),嵌入式linux系統(tǒng)軟件平臺(tái),嵌入式Linux的分區(qū)內(nèi)容,分區(qū)1 bootloader,分區(qū)2 內(nèi)核,分區(qū)3 系統(tǒng)軟件,bootloader,rootfs,Kernel,extfs,Uboot,.,bin,Uboot,_,4412,源碼,uboot,源碼,Kernel,硬件手冊(cè),4.4,源碼,Rootfs,.,img,Rootfs,Busybox,系統(tǒng)文件,(,etc,、,dev,),燒寫工具,軟件,Cross,-,compiler,Binutils,Cross,.,ta,r,.,bz,2,Gcc,Glibc,4,.,4,_,4412,patch,Rootfs,.,img,mkfs,工具,嵌入式Linux的分區(qū)內(nèi)容分區(qū)1 bootloader 分區(qū),嵌入式linux系統(tǒng)的組成,從上面的分區(qū)圖,可以看出嵌入式linux系統(tǒng)的組成:,bootloader,bootloader是一個(gè)統(tǒng)稱,指的是在內(nèi)核啟動(dòng)前運(yùn)行的一小段代碼linux內(nèi)核,操作系統(tǒng)內(nèi)核,根文件系統(tǒng)(系統(tǒng)工具),用戶使用時(shí),必要的工具。
嵌入式linux系統(tǒng)的組成從上面的分區(qū)圖,可以看出嵌入式li,嵌入式linux軟件開發(fā)的特點(diǎn),需要交叉編譯,硬件平臺(tái)處理器較慢,內(nèi)存和外存容量小等等;,把軟件開發(fā)放在高性能的,PC機(jī)上進(jìn)行;,PC機(jī)上CPU指令集與嵌入式CPU的指令集是不同的,因此,在PC機(jī)上開發(fā)嵌入式軟件需要交叉編譯需要移植,由于嵌入式系統(tǒng)是一個(gè)軟硬件定制的系統(tǒng),硬件平臺(tái)各不相同,軟件設(shè)計(jì)需要根據(jù)不同的硬件設(shè)備來添加或修改相應(yīng)的代碼,這就是移植嵌入式linux軟件開發(fā)的特點(diǎn)需要交叉編譯,交叉編譯,程序源碼編譯之后,最終要翻譯成,機(jī)器指令,ARM平臺(tái)與X86平臺(tái),機(jī)器指令是,不一樣,怎么在高性能的X86平臺(tái)上編譯出在ARM平臺(tái)上運(yùn)行的程序?,ARM板上安裝一個(gè)編譯,在PC上使用軟件模擬一個(gè)ARM硬件平臺(tái),交叉編譯,-在PC(X86)機(jī)上編譯出ARM平臺(tái)運(yùn)行的程序交叉編譯程序源碼編譯之后,最終要翻譯成機(jī)器指令,交叉編譯,需要交叉開發(fā)環(huán)境(Cross Development Env)的支持是嵌入式應(yīng)用軟件開發(fā)時(shí)的一個(gè)顯著特點(diǎn)交叉編譯器只是交叉開發(fā)環(huán)境的一部分交叉開發(fā)環(huán)境,是指編譯、鏈接和調(diào)試嵌入式應(yīng)用軟件的環(huán)境,它與運(yùn)行嵌入式應(yīng)用軟件的環(huán)境有所不同,通常采用,宿,主機(jī)目標(biāo)機(jī),模式,。
交叉編譯需要交叉開發(fā)環(huán)境(Cross Development,交叉編譯,宿主機(jī)目標(biāo)板模式,宿主機(jī)(Host)是一臺(tái)通用計(jì)算機(jī),它,通過串口、,usb,接口,或者以太網(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)軟硬件資源通常都比較有限交叉編譯宿主機(jī)目標(biāo)板模式,交叉編譯,宿主機(jī)目標(biāo)板模式,首先利用宿主機(jī)上豐富的資源和良好的開發(fā)環(huán)境開發(fā)和仿真調(diào)試目標(biāo)機(jī)上的軟件;,然后通過串口、,usb,接口或者以網(wǎng)絡(luò)將交叉編譯生成的目標(biāo)代碼傳輸并裝載到目標(biāo)機(jī)上,并在監(jiān)控程序或者操作系統(tǒng)的支持下利用交叉調(diào)試器進(jìn)行分析和調(diào)試;,最后目標(biāo)機(jī)在特定環(huán)境下脫離宿主機(jī)單獨(dú)運(yùn)行交叉編譯宿主機(jī)目標(biāo)板模式,交叉編譯,GNU交叉工具鏈,toolchain,交叉編譯器,例如arm-linux-gcc,交叉匯編器,例如arm-linux-as,交叉鏈接器,例如arm-linux-ld,用于處理可執(zhí)行程序和庫(kù)的一些基本工具例如arm-linux-strip,交叉編譯GNU交叉工具鏈toolchain,交叉編譯,GNU交叉工具鏈的下載,linux下的GNU交叉編譯器一般有廠家提供,或者可以從網(wǎng)上下載安裝,甚至是自己動(dòng)手制作一個(gè)交叉編譯器。
例如:,我們教學(xué)用的一個(gè)4.,8,.,2,版本的交叉編譯器:,arm-linux-gcc-4.8.2.tar.bz2,通常開發(fā)板的光碟資料中,也會(huì)提供一個(gè)交叉編譯器,交叉編譯GNU交叉工具鏈的下載,交叉編譯,交叉編譯器的安裝:,1.解壓安裝包,tar jxvf,arm-linux-gcc-4.8.2.tar.bz2,解壓的文件存放的目錄沒有規(guī)定,一般放在用戶的家目錄,2.添加環(huán)境變量,有兩種方法:,(1)在終端直接使用如下命令:,export PATH=解壓后的路徑/bin:$PATH,特點(diǎn):終端關(guān)閉,設(shè)置失效,(2)在配置文件/etc/,profile,文件的最后添加:,export PATH=解壓后的路徑/bin:$PATH,特點(diǎn):linux啟動(dòng)就設(shè)置;,3.工具鏈安裝完成交叉編譯交叉編譯器的安裝:,交叉編譯,GNU交叉工具鏈的常用工具介紹,交叉編譯GNU交叉工具鏈的常用工具介紹,交叉編譯示意圖,交叉編譯示意圖,連接目標(biāo)飯,連接目標(biāo)飯,訪問目標(biāo)板,如何觀察應(yīng)用程序在目標(biāo)板的運(yùn)行情況,即查看程序的輸出信息?,通過串口線連接宿主機(jī)和目標(biāo)板配置串口做為目標(biāo)板的輸出設(shè)備例如在交叉編譯目標(biāo)板的linux內(nèi)核時(shí),配置指定終端為串口:,noinitrd root=/dev/mtdblock2 init=/linuxrc,console=ttySAC0,115200,在宿主機(jī)上通過,串口通信軟件,查看目標(biāo)板系統(tǒng)的運(yùn)行情況。
訪問目標(biāo)板如何觀察應(yīng)用程序在目標(biāo)板的運(yùn)行情況,即查看程序的輸,PC上的串口通信軟件有很多:,超級(jí)終端,dnw,putty等等,串口通信工具的配置一般如下:,PC上的串口通信軟件有很多:,下載程序映象到目標(biāo)板,在pc上交叉編譯后的程序要下載到目標(biāo)板中運(yùn)行,下載的方式有很多,主要如下:,通過串口下載,串口下載速度慢,但是實(shí)現(xiàn)起來簡(jiǎn)單;,通過usb下載,USB下載速度快,但是實(shí)現(xiàn)結(jié)構(gòu)比較復(fù)雜;,通過TFTP方式下載,通過網(wǎng)口,使用tftp協(xié)議從pc機(jī)上的tftp服務(wù)器上下載文件到目標(biāo)板中,通過掛載NFS方式下載,通過網(wǎng)口,使用nfs協(xié)議從pc上下載文件到目標(biāo)板中,下載程序映象到目標(biāo)板在pc上交叉編譯后的程序要下載到目標(biāo)板中,交叉調(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)試器嵌入式軟件開發(fā)過程中的交叉調(diào)試與本地軟件開發(fā)過程中,交叉調(diào)試器,交叉調(diào)試器,交叉調(diào)試器,將gdbserver拷貝到,目標(biāo)板的文件系統(tǒng)中飯中g(shù)dbserver在解壓后的交叉編譯器里面“,crosstool/4.8.2/arm-none-linux-gnueabi/debug-root/usr/。