1. gzyueqian
      13352868059

      嵌入式培訓(xùn)排名 大牛才懂的嵌入式應(yīng)用軟件開發(fā)階段

      更新時(shí)間: 2019-03-17 14:00:47來源: 嵌入式培訓(xùn)瀏覽量:7811

        上回我們提到,嵌入式應(yīng)用軟件開發(fā)主要包括以下5個(gè)基本階段:開發(fā)環(huán)境的建立、源代碼編輯階段、交叉編譯和鏈接、重定位和下載、聯(lián)機(jī)調(diào)試。下面嵌入式培訓(xùn)分別對(duì)這幾個(gè)階段進(jìn)行介紹:

        1.開發(fā)環(huán)境的建立

        在開發(fā)之前,必須了解在嵌入式編程中使用的交叉開發(fā)環(huán)境。交叉開發(fā)環(huán)境的原理比較簡(jiǎn)單,只是在主機(jī)和目標(biāo)機(jī)體系結(jié)構(gòu)不同的情況下,在主機(jī)開發(fā)將在目標(biāo)機(jī)器上運(yùn)行的程序。



        按照發(fā)布的形式,交叉開發(fā)環(huán)境主要分為開放和商用2種類型。開發(fā)式交叉開發(fā)環(huán)境實(shí)例主要有g(shù)cc,它可以支持多種交叉平臺(tái)的編譯器。使用gcc作為交叉開發(fā)平臺(tái),要遵守GPL的規(guī)定。

        按照使用方式,交叉開發(fā)工具主要分為使用Makefile和IDE開發(fā)環(huán)境2種類型。使用Makefile的開發(fā)環(huán)境需要編譯Makefile來管理和控制項(xiàng)目的開發(fā),可以自己手寫,優(yōu)勢(shì)也可以使用一些自動(dòng)化的工具。這種開發(fā)工具是gcc、SDS Cross Compiler等。新類型的開發(fā)環(huán)境一般由一個(gè)用戶友好的IDE界面,方便管理和控制項(xiàng)目的開發(fā),如Code Warrior等。有些開發(fā)環(huán)境既可用Makefile管理項(xiàng)目,又可使用IDE,給使用者留下很大的余地。

        對(duì)交叉開發(fā)環(huán)境有了一定的了解后,就要根據(jù)開發(fā)需求選擇一種開發(fā)環(huán)境進(jìn)行代碼編寫。編寫程序的件事情就是要會(huì)寫程序,即要先會(huì)程序的規(guī)劃,將問題需求跟蹤程序功能明確地寫下來,依據(jù)規(guī)劃好的函數(shù)逐個(gè)寫好。

        當(dāng)嵌入式系統(tǒng)編程升級(jí)時(shí),要考慮到跨平臺(tái)的問題。跨平臺(tái)就是把原始程序拿到不同的CPU的平臺(tái)和編譯環(huán)境中,仍然能夠不用修改太多的代碼就可達(dá)到程序原始目的。因?yàn)榍度胧较到y(tǒng)所用的硬件平臺(tái)不盡相同,若是為了不同的硬件平臺(tái)而讓程序做大幅度修改,就會(huì)變得非常不經(jīng)濟(jì),特別是在當(dāng)時(shí)嵌入式系統(tǒng)硬件百家爭(zhēng)鳴的狀況下,如何讓寫出的程序快速移植到各種不同的硬件上,已成為嵌入式培訓(xùn)應(yīng)用程序開發(fā)飛主要考慮因素之一。

        2.源文件編輯階段

        源程序的啟動(dòng)代碼、硬件初始化代碼要用匯編語(yǔ)言編寫,這樣可以發(fā)揮匯編語(yǔ)言短小精悍的優(yōu)勢(shì),以提高代碼的執(zhí)行效率。匯編語(yǔ)言編寫完成后,代碼轉(zhuǎn)向c語(yǔ)言的程序入口點(diǎn),執(zhí)行c語(yǔ)言代碼。C語(yǔ)言在開發(fā)大型軟件的開發(fā)中常用的語(yǔ)言。但是在與硬件關(guān)聯(lián)較緊密的編程中,c語(yǔ)言要結(jié)合匯編語(yǔ)言進(jìn)行混合編程,也即內(nèi)嵌匯編。

        3.編譯

        通常所說的翻譯程序能夠把某一種語(yǔ)言的程序轉(zhuǎn)換成另一種語(yǔ)言程序,而后者與前者在邏輯上是等價(jià)的,如果匯編語(yǔ)言是諸如FORTRAN、Pascal、C、Ada或Java這樣的“語(yǔ)言”,而目標(biāo)語(yǔ)言是諸如匯編語(yǔ)言或機(jī)器語(yǔ)言之類的“低級(jí)語(yǔ)言”,這樣的一個(gè)翻譯程序成為編譯程序。編譯就是將“語(yǔ)言”轉(zhuǎn)化為“低級(jí)語(yǔ)言”的過程。

        編譯器主要負(fù)責(zé)的工作就是將源代碼編譯成特定的目標(biāo)代碼,順便檢查語(yǔ)法的錯(cuò)誤,所產(chǎn)生的代碼是不能執(zhí)行的,不過可從目標(biāo)代碼找出許多有用的信息。現(xiàn)在目標(biāo)代碼有2類:COFF與ELF。在目標(biāo)文件中規(guī)定信息的組織方式,也即目標(biāo)文件格式。目標(biāo)文件格式的規(guī)定是為了不同的供應(yīng)商提供的開發(fā)工具可以遵循很好的標(biāo)準(zhǔn),以實(shí)現(xiàn)相互操作的。

        4.鏈接

        一個(gè)程序員想在內(nèi)存中運(yùn)行,除了編譯之外,還要經(jīng)過鏈接的步驟。編譯器只能在一個(gè)模塊內(nèi)部完成符號(hào)名到地址的轉(zhuǎn)換工作,不同模式間的符號(hào)解析需要由連接器完成。為了解決不同模式間的鏈接問題,鏈接器主要有2項(xiàng)工作要做。

        1)符號(hào)解析

        當(dāng)一個(gè)模塊使用了在該模塊中沒有定義過的函數(shù)或全局變量時(shí),編譯器生成的符號(hào)表會(huì)標(biāo)記出所有這樣的函數(shù)或全局變量;而鏈接器的責(zé)任就是要到其他模塊中去查找他們的定義,如果沒有合適的定義或者找到的合適的定義不,符號(hào)解析都無(wú)法正常完成。

        2)重定位

        編譯器在編譯生成文件時(shí),通常使用從零開始的相對(duì)地址。然而,在鏈接過程中,鏈接器將從一個(gè)指定的地址開始,根據(jù)輸入的目標(biāo)文件的順序以段為單位將它們一個(gè)接一個(gè)地拼裝起來。除了目標(biāo)文件的拼裝之外,在重定位的過程中還完成了2個(gè)任務(wù):一是生成終的符號(hào)表;二是對(duì)代碼中的某些位置進(jìn)行修改,所有需要修改的位置都由編譯器生成的重定位表指出。

        鏈接器將所有目標(biāo)代碼及l(fā)ib里的數(shù)據(jù)區(qū)段,包括“.text”“.data”及“.bss”區(qū)段的數(shù)據(jù)合并,而且會(huì)將所有尚未編譯的函數(shù)及變量調(diào)用彼此對(duì)應(yīng)起來。

        在鏈接過程中,對(duì)于嵌入式系統(tǒng)的開發(fā)而言,都希望使用小型的函數(shù)庫(kù),以使產(chǎn)的可執(zhí)行代碼盡量小。因此在編譯中使用的一般是經(jīng)過特殊定制的函數(shù)庫(kù),比如使用c語(yǔ)言進(jìn)行嵌入式開發(fā)者一般使用的嵌入式函數(shù)庫(kù)有:μClibc/μClibm、μC-libc/μC-libm和newlib等。

        5.下載

        就是把可執(zhí)行映像文件燒寫到ROM里,如本系列教程中使用的Embest ARM開發(fā)環(huán)境具有Flash編譯器功能,燒寫前使用Elf to Bin工具將映像文件(ELF格式轉(zhuǎn)換為二進(jìn)制格式),也可通過其他方式下載調(diào)試好的代碼。

        當(dāng)可執(zhí)行的程序映像文件下載完成后,就可打開電源來運(yùn)行系統(tǒng)。下載過的代碼優(yōu)勢(shì)還需要在實(shí)際應(yīng)用軟件中進(jìn)行進(jìn)一步調(diào)試,調(diào)試確定無(wú)誤后一個(gè)完整的嵌入式程序就可運(yùn)行了。

        6.調(diào)試

        嵌入式培訓(xùn)系統(tǒng)的調(diào)試分為軟件調(diào)試和硬件調(diào)試2種:軟件調(diào)試時(shí)通過軟件調(diào)試器嵌入式系統(tǒng)軟件;硬件調(diào)試時(shí)通過仿真調(diào)試器完成調(diào)試過程。由于嵌入式系統(tǒng)特殊的開發(fā)環(huán)境,不可避免的是,調(diào)試時(shí)必然需要目標(biāo)平臺(tái)和調(diào)試器兩方面的支持。

        通常作為調(diào)試軟件部分的調(diào)試器是被集成在安裝在目標(biāo)機(jī)上嵌入式軟件開發(fā)集成環(huán)境中的,例如Embest IDE中的Debhgger。軟件調(diào)試工具一般具有ISS功能,即完成代碼在無(wú)硬件調(diào)試環(huán)境下的模擬調(diào)試。而由于真正的硬件運(yùn)行環(huán)境與軟禁模擬環(huán)境有較大的差異,ISS只能用于開發(fā)編程練習(xí)或者軟件的初步調(diào)試。

        使用硬件調(diào)試器,可獲得比軟件功能強(qiáng)大得多的調(diào)試性能。硬件調(diào)試器的原理一般是通過仿真硬件和真正執(zhí)行過程,讓開發(fā)者在調(diào)試過程中可時(shí)刻獲得執(zhí)行情況。硬件調(diào)試器主要有ICE和ICD兩種。前者主要完成仿真模擬的功能,后者使用硬件上的在線調(diào)試任務(wù)。

        這次我們?cè)敿?xì)講了嵌入式開發(fā)五大階段了,想了解更多,就來pick粵嵌嵌入式培訓(xùn)


      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲在在线观看免费视频 | 开心六月综合激情婷婷 | 日本有码中文字幕视频 | 亚洲国产亚综合在线欧美 | 亚洲精品网站在线观看 | 又大又长粗又爽又黄少妇频 |