深入了解嵌入式,嵌入式系統(tǒng)結(jié)構(gòu)你真的學(xué)會(huì)了?
嵌入式系統(tǒng)說白了,就是針對某個(gè)應(yīng)用的計(jì)算機(jī)系統(tǒng)!進(jìn)一步說,嵌入式系統(tǒng)是針對某個(gè)應(yīng)用,軟硬件可裁減的,對體積、功耗等有嚴(yán)格要求的一個(gè)計(jì)算機(jī)系統(tǒng)。為增進(jìn)大家對嵌入式的認(rèn)識,本文將對嵌入式系統(tǒng)結(jié)構(gòu)以及運(yùn)行方式予以介紹。如果你對嵌入式具有興趣,不妨繼續(xù)往下閱讀哦。
嵌入式系統(tǒng)通常包括構(gòu)成軟件的基本運(yùn)行環(huán)境的硬件和操作系統(tǒng)兩部分。嵌入式系統(tǒng)的運(yùn)行環(huán)境和應(yīng)用場合決定了嵌入式系統(tǒng)具有區(qū)別于其它操作系統(tǒng)的一些特點(diǎn)。
(1)嵌入式處理器
嵌入式處理器可以分為三類:嵌入式微處理器、嵌入式微控制器、嵌入式DSP(Digital Signal Processor)。嵌入式微處理器就是和通用計(jì)算機(jī)的微處理器對應(yīng)的CPU。在應(yīng)用中,一般是將微處理器裝配在專門設(shè)計(jì)的電路板上,在母板上只保留和嵌入式相關(guān)的功能即可,這樣可以滿足嵌入式系統(tǒng)體積小和功耗低的要求。目前的嵌入式處理器主要包括:PowerPC、Motorola 68000、ARM系列等等。
嵌入式微控制器又稱為單片機(jī),它將CPU、存儲器(少量的RAM、ROM或兩者都有)和其它外設(shè)封裝在同一片集成電路里。常見的有8051。
嵌入式DSP專門用來對離散時(shí)間信號進(jìn)行極快的處理計(jì)算,提高編譯效率和執(zhí)行速度。在數(shù)字濾波、FFT、譜分析、圖像處理的分析等領(lǐng)域,DSP正在大量進(jìn)入嵌入式市場。
(2)微內(nèi)核結(jié)構(gòu)
大多數(shù)操作系統(tǒng)至少被劃分為內(nèi)核層和應(yīng)用層兩個(gè)層次。內(nèi)核只提供基本的功能,如建立和管理進(jìn)程、提供文件系統(tǒng)、管理設(shè)備等,這些功能以系統(tǒng)調(diào)用方式提供給用戶。一些桌面操作系統(tǒng),如Windows、Linux等,將許多功能引入內(nèi)核,操作系統(tǒng)的內(nèi)核變得越來越大。內(nèi)核變大使得占用的資源增多,剪裁起來很麻煩。
大多數(shù)嵌入式操作系統(tǒng)采用了微內(nèi)核結(jié)構(gòu),內(nèi)核只提供基本的功能,比如:任務(wù)的調(diào)度、任務(wù)之間的通信與同步、內(nèi)存管理、時(shí)鐘管理等。其它的應(yīng)用組件,比如網(wǎng)絡(luò)功能、文件系統(tǒng)、GUI系統(tǒng)等均工作在用戶態(tài),以系統(tǒng)進(jìn)程或函數(shù)調(diào)用的方式工作。因而系統(tǒng)都是可裁減的,用戶可以根據(jù)自己的需要選用相應(yīng)的組件。
(3)任務(wù)調(diào)度
在嵌入式系統(tǒng)中,任務(wù)即線程。大多數(shù)的嵌入式操作系統(tǒng)支持多任務(wù)。多任務(wù)運(yùn)行的實(shí)現(xiàn)實(shí)際是靠CPU在多個(gè)任務(wù)之間切換、調(diào)度。每個(gè)任務(wù)都有其優(yōu)先級,不同的任務(wù)優(yōu)先級可能相同也可能不同。任務(wù)的調(diào)度有三種方式:可搶占式調(diào)度、不可搶占式調(diào)度和時(shí)間片輪轉(zhuǎn)調(diào)度。不可搶占式調(diào)度是指,一個(gè)任務(wù)一旦獲得CPU就獨(dú)占CPU運(yùn)行,除非由于某種原因,它決定放棄CPU的使用權(quán);可搶占式調(diào)度是基于任務(wù)優(yōu)先級的,當(dāng)前正在運(yùn)行的任務(wù)可以隨時(shí)讓位給優(yōu)先級更高的處于就緒態(tài)的其它任務(wù);當(dāng)兩個(gè)或兩個(gè)以上任務(wù)有同樣的優(yōu)先級,不同任務(wù)輪轉(zhuǎn)地使用CPU,直到系統(tǒng)分配的CPU時(shí)間片用完,這就是時(shí)間片輪轉(zhuǎn)調(diào)度。
目前,大多數(shù)嵌入式操作系統(tǒng)對不同優(yōu)先級的任務(wù)采用基于優(yōu)先級的搶占式調(diào)度法,對相同優(yōu)先級的任務(wù)則采用時(shí)間片輪轉(zhuǎn)調(diào)度法。
(4)硬實(shí)時(shí)和軟實(shí)時(shí)
有些嵌入式系統(tǒng)對時(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)對系統(tǒng)響應(yīng)時(shí)間有嚴(yán)格要求,一旦系統(tǒng)響應(yīng)時(shí)間不能滿足,就可能會(huì)引起系統(tǒng)崩潰或致命的錯(cuò)誤,一般在工業(yè)控制中應(yīng)用較多。
(5)內(nèi)存管理
針對有內(nèi)存管理單元(MMU)的處理器設(shè)計(jì)的一些桌面操作系統(tǒng),如Windows、Linux,使用了虛擬存儲器的概念。虛擬內(nèi)存地址被送到MMU。在這里,虛擬地址被映射為物理地址,實(shí)際存儲器被分割為相同大小的頁面,采用分頁的方式載入進(jìn)程。一個(gè)程序在運(yùn)行之前,沒有必要全部裝入內(nèi)存,而是僅將那些當(dāng)前要運(yùn)行的部分頁面裝入內(nèi)存運(yùn)行。
大多數(shù)嵌入式系統(tǒng)針對沒有MMU的處理器設(shè)計(jì),不能使用處理器的虛擬內(nèi)存管理技術(shù),采用的是實(shí)存儲器管理策略。因而對于內(nèi)存的訪問是直接的,它對地址的訪問不需要經(jīng)過MMU,而是直接送到地址線上輸出,所有程序中訪問的地址都是實(shí)際的物理地址;而且,大多數(shù)嵌入式操作系統(tǒng)對內(nèi)存空間沒有保護(hù),各個(gè)進(jìn)程實(shí)際上共享一個(gè)運(yùn)行空間。一個(gè)進(jìn)程在執(zhí)行前,系統(tǒng)必須為它分配足夠的連續(xù)地址空間,然后全部載入主存儲器的連續(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í)存儲器管理策略,用戶程
序同內(nèi)核以及其它用戶程序在一個(gè)地址空間,程序開發(fā)時(shí)要保證不侵犯其它程序的地址空間,以使得程序不至于破壞系統(tǒng)的正常工作,或?qū)е缕渌绦虻倪\(yùn)行異常;因而,嵌入式系統(tǒng)的開發(fā)人員對軟件中的一些內(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í)行。這種方式相對復(fù)雜一些,但是運(yùn)行速度可能更快,因?yàn)镽AM的存取速率要比Flash高。
由于嵌入式系統(tǒng)的內(nèi)存管理機(jī)制,嵌入式操作系統(tǒng)對用戶程序采用靜態(tài)鏈接的形式。在嵌入式系統(tǒng)中,應(yīng)用程序和操作系統(tǒng)內(nèi)核代碼編譯、鏈接生成一個(gè)二進(jìn)制影像文件來運(yùn)行。
以上便是此次帶來的嵌入式相關(guān)內(nèi)容,通過本文,希望大家對嵌入式已經(jīng)具備一定的了解。如果你喜歡本文,不妨持續(xù)關(guān)注我們網(wǎng)站哦,將于后期帶來更多精彩內(nèi)容。最后,十分感謝大家的閱讀,have a nice day!