電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 2214|回復(fù): 0
收起左側(cè)

Linux在嵌入式系統(tǒng)應(yīng)用中的探究

[復(fù)制鏈接]

2607

主題

2607

帖子

7472

積分

高級(jí)會(huì)員

Rank: 5Rank: 5

積分
7472
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-7-18 15:17:38 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
Linux在嵌入式系統(tǒng)應(yīng)用中的探究,   

(文章來(lái)源:電子工程網(wǎng))

計(jì)算機(jī)用于嵌入式控制設(shè)備領(lǐng)域的歷史和計(jì)算機(jī)本身的歷史一樣久遠(yuǎn)。最初的用于控制機(jī)電式電話交換器的通訊設(shè)備中“固態(tài)控制程序”就是嵌入式程序!坝(jì)算機(jī)系統(tǒng)”在當(dāng)時(shí)并不普遍;所以固態(tài)程序存放在內(nèi)存中控制相應(yīng)的設(shè)備。在那種時(shí)代,運(yùn)行控制程序是很先進(jìn)的思想,而且當(dāng)時(shí)也只能如此而已。  

那時(shí)的計(jì)算機(jī)是專為特定的用戶設(shè)計(jì),特殊的應(yīng)用程序指令、I/O設(shè)備和主要的計(jì)算設(shè)備集成在一起。微處理器的產(chǎn)生改變了這種局面,價(jià)格低廉、結(jié)構(gòu)小巧的 CPU和外設(shè)連接在總線上形成了比較大的系統(tǒng)。這種硬件架構(gòu)很穩(wěn)定,于是在這個(gè)基礎(chǔ)上,這建立起了通用的軟件開發(fā)環(huán)境和編程模式,且簡(jiǎn)化了編程,。  

不過(guò)很多的嵌入式系統(tǒng)還沒(méi)有使用操作系統(tǒng),它們僅僅包含一些控制流程而已。在嵌入式系統(tǒng)相對(duì)簡(jiǎn)單的情況下,這些控制流足以應(yīng)付。但是,當(dāng)嵌入式系統(tǒng)的功能復(fù)雜后,簡(jiǎn)單控制邏輯就不夠用了,這時(shí)你必須使用操作系統(tǒng)。如果不使用操作系統(tǒng)將會(huì)使得控制系統(tǒng)邏輯結(jié)構(gòu)復(fù)雜混亂,很容易出錯(cuò)。再者,有些嵌入式系統(tǒng)需要接入網(wǎng)絡(luò)系統(tǒng),比如賓館的門控制已經(jīng)需要接入網(wǎng)絡(luò),因此就更需要嵌入式的操作系統(tǒng)來(lái)支持應(yīng)用軟件。  

除了商業(yè)化的操作系統(tǒng)外,還有其他的有版權(quán)要求的非商業(yè)化嵌入式操作系統(tǒng)可以使用。然而今天的Linux 系統(tǒng)有著嵌入式操作系統(tǒng)需要的很多特色、突出的優(yōu)勢(shì):適應(yīng)于多種CPU和多種硬件平臺(tái),性能穩(wěn)定,裁剪性很好,開發(fā)和使用都很容易。因此,我們決定在嵌入式系統(tǒng)中使用Linux操作系統(tǒng)。  

原來(lái)開發(fā)嵌入式系統(tǒng)的關(guān)鍵是需要一套好用的開發(fā)和調(diào)試工具;而且在開發(fā)所不同階段還需要不同的工具。就比如工匠,只有好的工具才能夠使工作完成得又好又快。  

傳統(tǒng)的開發(fā)調(diào)試工具就是ICE-在線仿真器;它取代目標(biāo)板的微處理器,給目標(biāo)程序提供仿真環(huán)境,同時(shí)可以連接監(jiān)視器;允許開發(fā)者調(diào)試和監(jiān)視程序的運(yùn)行。盡管這種運(yùn)行方式會(huì)引起一些奇怪的問(wèn)題,但是它總能夠讓你明了程序在目標(biāo)板的工作狀態(tài),免除了對(duì)底層的軟硬件接口的猜測(cè)。但是,這種設(shè)備價(jià)格非常貴。

  

過(guò)去,甚至在整個(gè)開發(fā)期內(nèi),開發(fā)嵌入式系統(tǒng)主要依靠這些調(diào)試工具。 可是,我們發(fā)現(xiàn),一旦軟硬件能夠正常支持串口的運(yùn)行時(shí),我們可以使用其他的調(diào)試辦法,F(xiàn)代的嵌入式系統(tǒng)采用相當(dāng)成熟的微處理器。因此很容易使得串口工作。串口連接成功,可以進(jìn)行很多的開發(fā)調(diào)試。所以我們不用ICE也可以很好地開始開發(fā)和調(diào)試工作了,同時(shí)還降低開發(fā)費(fèi)用。  

Linux利用GNU項(xiàng)目的C編譯器來(lái)編譯程序,使用gdb源程序級(jí)調(diào)試器來(lái)調(diào)試程序。它們提供了合適的手段來(lái)使你能夠開發(fā)嵌入式的Linux系統(tǒng)。為了開發(fā)基于Linux的嵌入式系統(tǒng),可以按以下方法進(jìn)行:  

向串口輸出提示字符串,例如“hello word ”或“Waston, come here I need you!”等, 然后通過(guò)串口,指揮gdb 開始工作。以這種方式和另外一臺(tái)運(yùn)行g(shù)db程序的Linux主機(jī)系統(tǒng)“交談”,通過(guò)串口,你可以很方便地讓gdb調(diào)試目標(biāo)程序。通過(guò)串口和gdb通訊,可以進(jìn)行C源程序級(jí)的調(diào)試。甚至你還可以以串口把其他的程序下裝到RAM或flash存儲(chǔ)器。通過(guò)串口,使用gdb可以使得軟硬件的初始化代碼繼續(xù)運(yùn)行到核心全部啟動(dòng)。  

一旦核心在運(yùn)行了,你就可以使用其他的更好的調(diào)試工具,象Kgdb等,如果連接了網(wǎng)絡(luò),你也可以讓網(wǎng)絡(luò)工作起來(lái)。同時(shí)你就可以用GUI的xgdb來(lái)調(diào)試應(yīng)用程序。  

細(xì)細(xì)分析起來(lái),大多數(shù)系統(tǒng)并不需要嚴(yán)格的實(shí)時(shí)性。而嵌入式系統(tǒng)也經(jīng)常被誤解為就是實(shí)時(shí)性系統(tǒng)。其實(shí),多數(shù)嵌入式系統(tǒng)并不需要實(shí)時(shí)性,而且實(shí)時(shí)性本身是個(gè)相對(duì)的概念絕對(duì)的實(shí)時(shí)性是指對(duì)需要的服務(wù)以限定的方式和在限定時(shí)間內(nèi)提供,比如在微秒級(jí)內(nèi)響應(yīng)。 這種硬實(shí)時(shí)性功能只是針對(duì)特殊的設(shè)備而言 ,例如數(shù)字信號(hào)處理等。而這些要求使用特殊的硬件 如FIFO、DMA 和其他特殊設(shè)計(jì)的硬件 也可以滿足 。  

現(xiàn)在,嚴(yán)格要求的實(shí)時(shí)性任務(wù)的決定因素是中斷例程本身和內(nèi)核中的其他驅(qū)動(dòng)程序有關(guān);而響應(yīng)延 遲時(shí)間主要受中斷的優(yōu)先級(jí)和其他進(jìn)程會(huì)暫時(shí)地關(guān)閉中斷響應(yīng)的影響。因此管理和驅(qū)動(dòng)中斷的機(jī)制必須 保證實(shí)時(shí)要求。

(責(zé)任編輯:fqj)

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表