首頁(yè) 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級(jí) | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級(jí) | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
計(jì)算機(jī)等級(jí)考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
報(bào)檢員 | 教師資格 | 社會(huì)工作者 | 外銷員 | 國(guó)際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價(jià)格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格考試會(huì)計(jì)證) | 經(jīng)濟(jì)師 | 會(huì)計(jì)職稱 | 注冊(cè)會(huì)計(jì)師 | 審計(jì)師 | 注冊(cè)稅務(wù)師
注冊(cè)資產(chǎn)評(píng)估師 | 高級(jí)會(huì)計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國(guó)際內(nèi)審師
一級(jí)建造師 | 二級(jí)建造師 | 造價(jià)工程師 | 造價(jià)員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評(píng)價(jià)師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價(jià)師 | 安全評(píng)價(jià)師 | 電氣工程師 | 注冊(cè)測(cè)繪師 | 注冊(cè)計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

嵌入式系統(tǒng)關(guān)鍵技術(shù)分析與開發(fā)應(yīng)用



(4)硬實(shí)時(shí)和軟實(shí)時(shí) 

  有些嵌入式系統(tǒng)對(duì)時(shí)間的要求較高,稱之為實(shí)時(shí)系統(tǒng)。有兩種類型的實(shí)時(shí)系統(tǒng):硬實(shí)時(shí)系統(tǒng)和軟實(shí)時(shí)系統(tǒng)。軟實(shí)時(shí)系統(tǒng)并不要求限定某一任務(wù)必須在一定的時(shí)間內(nèi)完成,只要求各任務(wù)運(yùn)行得越快越好;硬實(shí)時(shí)系統(tǒng)對(duì)系統(tǒng)響應(yīng)時(shí)間有嚴(yán)格要求,一旦系統(tǒng)響應(yīng)時(shí)間不能滿足,就可能會(huì)引起系統(tǒng)崩潰或致命的錯(cuò)誤,一般在工業(yè)控制中應(yīng)用較多。

(5)內(nèi)存管理

  針對(duì)有內(nèi)存管理單元(MMU)的處理器設(shè)計(jì)的一些桌面操作系統(tǒng),如Windows、Linux,使用了虛擬存儲(chǔ)器的概念。虛擬內(nèi)存地址被送到MMU。在這里,虛擬地址被映射為物理地址,實(shí)際存儲(chǔ)器被分割為相同大小的頁(yè)面,采用分頁(yè)的方式載入進(jìn)程。一個(gè)程序在運(yùn)行之前,沒有必要全部裝入內(nèi)存,而是僅將那些當(dāng)前要運(yùn)行的部分頁(yè)面裝入內(nèi)存運(yùn)行。   大多數(shù)嵌入式系統(tǒng)針對(duì)沒有MMU的處理器設(shè)計(jì),不能使用處理器的虛擬內(nèi)存管理技術(shù),采用的是實(shí)存儲(chǔ)器管理策略。因而對(duì)于內(nèi)存的訪問是直接的,它對(duì)地址的訪問不需要經(jīng)過MMU,而是直接送到地址線上輸出,所有程序中訪問的地址都是實(shí)際的物理地址;而且,大多數(shù)嵌入式操作系統(tǒng)對(duì)內(nèi)存空間沒有保護(hù),各個(gè)進(jìn)程實(shí)際上共享一個(gè)運(yùn)行空間。一個(gè)進(jìn)程在執(zhí)行前,系統(tǒng)必須為它分配足夠的連續(xù)地址空間,然后全部載入主存儲(chǔ)器的連續(xù)空間。

  由此可見,嵌入式系統(tǒng)的開發(fā)人員不得不參與系統(tǒng)的內(nèi)存管理。從編譯內(nèi)核開始,開發(fā)人員必須告訴系統(tǒng)這塊開發(fā)板到底擁有多少內(nèi)存;在開發(fā)應(yīng)用程序時(shí),必須考慮內(nèi)存的分配情況并關(guān)注應(yīng)用程序需要運(yùn)行空間的大小。另外,由于采用實(shí)存儲(chǔ)器管理策略,用戶程序同內(nèi)核以及其它用戶程序在一個(gè)地址空間,程序開發(fā)時(shí)要保證不侵犯其它程序的地址空間,以使得程序不至于破壞系統(tǒng)的正常工作,或?qū)е缕渌绦虻倪\(yùn)行異常;因而,嵌入式系統(tǒng)的開發(fā)人員對(duì)軟件中的一些內(nèi)存操作要格外小心。

(6)內(nèi)核加載方式

  嵌入式操作系統(tǒng)內(nèi)核可以在Flash上直接運(yùn)行,也可以加載到內(nèi)存中運(yùn)行。Flash的運(yùn)行方式,是把內(nèi)核的可執(zhí)行映像燒寫到Flash上,系統(tǒng)啟動(dòng)時(shí)從Flash的某個(gè)地址開始執(zhí)行。這種方法實(shí)際上是很多嵌入式系統(tǒng)所采用的方法。內(nèi)核加載方式是把內(nèi)核的壓縮文件存放在Flash上,系統(tǒng)啟動(dòng)時(shí)讀取壓縮文件在內(nèi)存里解壓,然后開始執(zhí)行。這種方式相對(duì)復(fù)雜一些,但是運(yùn)行速度可能更快,因?yàn)镽AM的存取速率要比Flash高。

  由于嵌入式系統(tǒng)的內(nèi)存管理機(jī)制,嵌入式操作系統(tǒng)對(duì)用戶程序采用靜態(tài)鏈接的形式。在嵌入式系統(tǒng)中,應(yīng)用程序和操作系統(tǒng)內(nèi)核代碼編譯、鏈接生成一個(gè)二進(jìn)制影像文件來運(yùn)行。

2 嵌入式系統(tǒng)開發(fā)相關(guān)技術(shù)

  相對(duì)于在Windows環(huán)境下的開發(fā)應(yīng)用程序,嵌入式系統(tǒng)開發(fā)有著很多的不同。不同的硬件平臺(tái)和操作系統(tǒng)帶來了許多附加的開發(fā)復(fù)雜性。 2.1 嵌入式開發(fā)過程

  在嵌入式開發(fā)過程中有宿主機(jī)和目標(biāo)機(jī)的角色之分:宿主機(jī)是執(zhí)行編譯、鏈接、定址過程的計(jì)算機(jī);目標(biāo)機(jī)指運(yùn)行嵌入式軟件的硬件平臺(tái)。首先須把應(yīng)用程序轉(zhuǎn)換成可以在目標(biāo)機(jī)上運(yùn)行的二進(jìn)制代碼。這一過程包含三個(gè)步驟:編譯、鏈接、定址。編譯過程由交叉編譯器實(shí)現(xiàn)。所謂交叉編譯器就是運(yùn)行在一個(gè)計(jì)算機(jī)平臺(tái)上并為另一個(gè)平臺(tái)產(chǎn)生代碼的編譯器。常用的交叉編譯器有GNU C/C++(gcc)。編譯過程產(chǎn)生的所有目標(biāo)文件被鏈接成一個(gè)目標(biāo)文件,稱為鏈接過程。定址過程會(huì)把物理存儲(chǔ)器地址指定給目標(biāo)文件的每個(gè)相對(duì)偏移處。該過程生成的文件就是可以在嵌入式平臺(tái)上執(zhí)行的二進(jìn)制文件。   嵌入式開發(fā)過程中另一個(gè)重要的步驟是調(diào)試目標(biāo)機(jī)上的應(yīng)用程序。嵌入式調(diào)試采用交叉調(diào)試器,一般采用宿主機(jī)-目標(biāo)機(jī)的調(diào)試方式,它們之間由串行口線或以太網(wǎng)或BDM線相連。交叉調(diào)試有任務(wù)級(jí)、源碼級(jí)和匯編級(jí)的調(diào)試,調(diào)試時(shí)需將宿主機(jī)上的應(yīng)用程序和操作系統(tǒng)內(nèi)核下載到目標(biāo)機(jī)的RAM中或直接燒錄到目標(biāo)機(jī)的ROM中。目標(biāo)監(jiān)控器是調(diào)試器對(duì)目標(biāo)機(jī)上運(yùn)行的應(yīng)用程序進(jìn)行控制的代理(Debugger Agent),事先被固化在目標(biāo)機(jī)的Flash、ROM中,在目標(biāo)機(jī)上電后自動(dòng)啟動(dòng),并等待宿主機(jī)方調(diào)試器發(fā)來的命令,配合調(diào)試器完成應(yīng)用程序的下載、運(yùn)行和基本的調(diào)試功能,將調(diào)試信息返回給宿主機(jī)。 2.2 向嵌入式平臺(tái)移植軟件 

  大部分嵌入式開發(fā)人員選用的軟件開發(fā)模式是先在PC機(jī)上編寫軟件,再進(jìn)行軟件的移植工作。在PC機(jī)上編寫軟件時(shí),要注意軟件的可移植性,選用具有較高移植性的編程語言(如C語言),盡量少調(diào)用操作系統(tǒng)函數(shù),注意屏蔽不同硬件平臺(tái)帶來的字節(jié)順序、字節(jié)對(duì)齊等問題。以下是我們?cè)谝浦矃f(xié)議棧過程中的一些體會(huì)。

2.2.1 字節(jié)順序

  字節(jié)順序是指占內(nèi)存多于一個(gè)字節(jié)類型的數(shù)據(jù)在內(nèi)存中的存放順序,通常有小端、大端兩種字節(jié)順序。小端字節(jié)序指低字節(jié)數(shù)據(jù)存放在內(nèi)存低地址處,高字節(jié)數(shù)據(jù)存放在內(nèi)存高地址處;大端字節(jié)序是高字節(jié)數(shù)據(jù)存放在低地址處,低字節(jié)數(shù)據(jù)存放在高地址處;赬86平臺(tái)的PC機(jī)是小端字節(jié)序的,而有的嵌入式平臺(tái)則是大端字節(jié)序的。因而對(duì)int、uint16、uint32等多于1字節(jié)類型的數(shù)據(jù),在這些嵌入式平臺(tái)上應(yīng)該變換其存儲(chǔ)順序。通常我們認(rèn)為,在空中傳輸?shù)淖止?jié)的順序即網(wǎng)絡(luò)字節(jié)序?yàn)闃?biāo)準(zhǔn)順序,考慮到與協(xié)議的一致以及與同類其它平臺(tái)產(chǎn)品的互通,在程序中發(fā)數(shù)據(jù)包時(shí),將主機(jī)字節(jié)序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序,收數(shù)據(jù)包處將網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換為主機(jī)字節(jié)序。

更多軟考資料請(qǐng)?jiān)L問:考試吧軟件水平考試欄目

希望與更多網(wǎng)友交流,請(qǐng)進(jìn)入考試吧軟件水平考試論壇

文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。