<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 嵌入式系統(tǒng)順利開發(fā)的硬件獨立性設(shè)計方案

          嵌入式系統(tǒng)順利開發(fā)的硬件獨立性設(shè)計方案

          作者: 時間:2017-06-06 來源:網(wǎng)絡(luò) 收藏
            所有最終都要連接到外部與執(zhí)行器或內(nèi)部功能模塊與外設(shè)等硬件,以實現(xiàn)輸入輸出、數(shù)據(jù)存儲及通信功能。每種中的每個硬件都有其自己的特性,需要設(shè)計人員認真對待。

            中使用的硬件如果發(fā)生任何變化,即便是僅僅添加或去除一個輸入或輸出端口,也會影響到嵌入式軟件,有時甚至?xí)斐煞浅乐氐挠绊?。如果在設(shè)計過程后期才做出上述變動,那么就可能導(dǎo)致產(chǎn)品不能及時上市。解決這一問題的辦法,就是在系統(tǒng)設(shè)計過程中確保完全的。

            設(shè)計(design-out the hardware)就是指將所有控制和算法軟件與硬件接口軟件相分離。我們應(yīng)有效地設(shè)計與硬件有關(guān)的邏輯封裝器和接口,這樣不管什么時候用邏輯部件來替換正在使用中的特定硬件,也不會影響控制和算法軟件。

            通過便于理解的邏輯接口(函數(shù)、宏、符號)將硬件提取出來,這不僅有助于提高設(shè)計的可移植性,而且還能使開發(fā)人員集中精力解決實際的應(yīng)用問題,甚至在明確采用什么硬件之前就能開始設(shè)計工作。這聽起來似乎比較簡單,您可能認為現(xiàn)在您或您的工作團隊正是這么做的。

            不過,我們不妨來認真研究一下當(dāng)前的設(shè)計項目(或者曾經(jīng)喜歡的項目),看看要是更換其中的微控制器,會出現(xiàn)什么情況。如果改用不同的微控制器,尤其是不同廠商的微控制器的話,要是會對項目造成嚴重影響,那么您在設(shè)計過程中就沒有實現(xiàn)。

            為了成功實現(xiàn)硬件獨立性設(shè)計,我們必須在設(shè)計過程中保持清醒的頭腦。我們不必等硬件完全設(shè)計好了再開始開發(fā)嵌入式軟件,也不必等到明確所有要求后最終確定硬件選擇,而是可以將中的硬件選擇與設(shè)計方案相分離,這樣在市場嶄露頭角的時候我們就可以開始設(shè)計工作,從而有助于贏得關(guān)鍵客戶。說到底,有哪些設(shè)計項目中硬件是真的一成不變的呢?最后總是會出現(xiàn)硬件變動的情況。

            用這種方法開始設(shè)計工作有助于提高整體靈活性,這既是由于硬件幾乎隨時“能夠”替換,同時也是由于我們不用擔(dān)心硬件的替換問題了。此外,由于硬件特定的功能位于封裝器與接口中,因此這有助于簡化調(diào)試工作,也增加了不同項目之間 IP 的重復(fù)利用率。

            “硬件獨立性設(shè)計” 是什么意思?

            最簡單地說,的硬件獨立性設(shè)計就是在邏輯上把嵌入式應(yīng)用軟件與所有硬件直接相連的軟件相分離。所謂“所有”硬件就是指物理設(shè)計或選定微控制器發(fā)生變化時可能發(fā)生的任何變化因素。

            顯然這包括選定微控制器中支持硬件的所有器件,如模數(shù)轉(zhuǎn)換器(ADC)和通信接口(UART、SPI、I2C、USB、CAN 等)。不過如果物理系統(tǒng)設(shè)計還包括與執(zhí)行器,那么它們的變動也會影響軟件,因此必須確保其 為硬件獨立性設(shè)計。

            此外,不要忘了輸入/輸出端口與嵌入式存儲器等常見元件。如果它們發(fā)生變動,也會影響應(yīng)用(比方說用于記錄數(shù)據(jù)日志或存儲配置選擇的非易失性存儲器,或提供內(nèi)部上拉或內(nèi)置驅(qū)動電路的輸入端口)??傊?,所有硬件都要做到獨立系統(tǒng)設(shè)計。

            有的讀者可能會想,硬件獨立性設(shè)計方案到底有什么新穎之處?幾千年以前,睿智的所羅門國王曾經(jīng)說過:“太陽下面沒有什么東西是新的。”硬件獨立性設(shè)計背后的理念實際并不是什么新東西。自從現(xiàn)代嵌入式系統(tǒng)設(shè)計出現(xiàn)以來(我認為大約是在 1980 年吧),工程師一直在圍繞硬件構(gòu)建封裝器與接口。

            本文要說明的是,我們應(yīng)當(dāng)把這種方法發(fā)揮到邏輯極致,否則我們的項目就仍然會受限于硬件,就不能在需要時靈活地更改硬件。我希望您通過本文能夠充分認識到硬件選擇對嵌入式設(shè)計的影響,并能夠了解到在今后設(shè)計中消除硬件變化影響的一些小竅門。

            從何做起?

          本文引用地址:http://www.ex-cimer.com/article/201706/349484.htm
            開始項目設(shè)計時,您至少要有一些基本的想法或要求。我們應(yīng)著手設(shè)計一種獨立于硬件的系統(tǒng)。系統(tǒng)應(yīng)當(dāng)實現(xiàn)什么功能?最終目標是什么?需要哪些驅(qū)動、監(jiān)控功能?如果加入硬件的話,就要把整個信號鏈中的各個部分組成一個有機的整體。

            您會發(fā)現(xiàn),所有彼此相互連接的硬件實際上都是替換硬件情況下潛在的問題來源。我們要用封裝器或接口將所有硬件隔離起來。就馬達控制設(shè)計而言,我們不妨來看看它的算法,看看要用哪些數(shù)據(jù)來確定驅(qū)動指令。

            為了控制算法,不管采用什么硬件,不管是幾安培的負載電流,還是每分鐘多少轉(zhuǎn)的轉(zhuǎn)速,還是百分比驅(qū)動命令,都必須確保邏輯性。

            通過硬件和算法相結(jié)合,負載電流轉(zhuǎn)換為電壓,ADC 對其采樣后轉(zhuǎn)換成數(shù)字計數(shù),再通過數(shù)學(xué)函數(shù)轉(zhuǎn)換為毫安;上面每個步驟都需要進行“包裝”,避免底層硬件改變時影響軟件應(yīng)用。

            如果在設(shè)計過程中完全遵循上述步驟,那么最終我們就能實現(xiàn)兩個目的。首先,我們能明確硬件與最終系統(tǒng)的關(guān)系,并了解到類似但不同的新項目如何從現(xiàn)有的設(shè)計方案受益。其次,如果需要設(shè)計全新的項目,采用完全不同的應(yīng)用類型,那么仍能參考現(xiàn)有的項目,只需對其加以調(diào)整,就能滿足新項目的要求,只需根據(jù)新式應(yīng)用替換或刪除有關(guān)層即可。

            以前,微控制器的高級大型電路板支持套件需要專業(yè)工作組或電腦天才來做特殊處理,而他們又總是因為工作太忙而難以作出必要的調(diào)整,現(xiàn)在,我們可以支持邏輯解構(gòu),逐步滿足各相關(guān)功能需求,確保滿足整體需求。

            記得上大學(xué)時,即便考試答題時沒有得出正確的答案,但如果演算過程邏輯清晰、條理分明、系統(tǒng)而有組織,并加以適當(dāng)注解,那么仍能在考試中獲得一定的分數(shù)。這個道理與硬件獨立性設(shè)計方案的道理是一樣的。

            我們不需要做到特別嚴格的有組織性,只需將封裝器與接口在邏輯上進行集中,就能方便地替代實際硬件。舉例來說,如果我們把所有與微控制器直接相關(guān)的封裝器與接口集中在一個地方,而不是將其分散在不同的文件中,那么就能在最后關(guān)頭輕松更換微控制器。

            通過實例說明工作原理

            我們不妨通過一個應(yīng)用實例來說明上述道理。在這個應(yīng)用中,我們根據(jù)溫度來控制風(fēng)扇轉(zhuǎn)速,一步步完成相關(guān)設(shè)計工作,確保硬件獨立性設(shè)計。在開始項目設(shè)計之前,我們已知:1) 我們需要獲得溫度讀數(shù)。 2) 我們需要根據(jù)溫度計算出所需的風(fēng)扇轉(zhuǎn)速。 3) 我們需要讀取當(dāng)前風(fēng)扇轉(zhuǎn)速。 4)我們需要根據(jù)當(dāng)前風(fēng)扇命令以及實際風(fēng)扇轉(zhuǎn)速與理想轉(zhuǎn)速之間的誤差計算出新的風(fēng)扇命令。5)我們需要向風(fēng)扇輸出新的命令。

            圖1給出了該系統(tǒng)的邏輯方框圖。矩形塊表示依賴于硬件,而橢圓形則表示獨立于硬件。根據(jù)該圖所示的邏輯關(guān)系,控制工程師可以利用 MatLab 等模擬套件開始系統(tǒng)開發(fā)工作,而設(shè)計結(jié)果則能直接輸入最終設(shè)計方案(尤其是用 C 語言等幾乎所有微控制器都支持的高級語言編寫的情況,更是如此)。

            隨著項目開發(fā)的進展,我們決定采用熱敏電阻作為溫度(因為熱敏電阻成本低且能滿足特殊屬性需要)。

            我們從下圖2可以看出,“獲取溫度”這個矩形塊又擴展為依賴于硬件且與熱敏電阻設(shè)計相關(guān)的不同功能塊,其中包括熱敏電阻的硬件特性及其接口電路等。

            溫度在熱敏電阻中以電阻表示;在信號調(diào)節(jié)電路中,電阻則表示為電壓,通過 ADC 轉(zhuǎn)換,電壓則轉(zhuǎn)換為 0 至 4095 之間的數(shù)值;在軟件中,該數(shù)值則轉(zhuǎn)換為機器可存儲和顯示的溫度值(比方說定點值溫度,間隔為0.1℃)。

            我們將溫度放入數(shù)據(jù)存儲系統(tǒng)中,讓數(shù)據(jù)值更新同步于控制算法,這樣溫度就能與控制算法一樣保持最新,從而確保將軟硬件更好地隔離開來。

            隨后,我們在設(shè)計方案中發(fā)現(xiàn),使用熱敏電阻的話微控制器將不能滿足溫度熱點的要求,一直在熱敏電阻與微控制器引腳之間運行模擬線路的話,就會造成太多噪聲并導(dǎo)致信號損耗。

            因此,我們決定在溫度區(qū)采用集成電路 LM75 I2C 作為溫度傳感器,將溫度進行本地轉(zhuǎn)化,并向I2C 總線提供數(shù)字值作為從設(shè)備。


            現(xiàn)在,為了獲得溫度值,如下圖 3所示,我們必須在微控制器中啟用 I2C 主通信硬件,讀取 LM75 中的一組寄存器,并將溫度的原生表達法(最低有效位為 0.125℃)轉(zhuǎn)化為此前選定的溫度表達法(定點值溫度,間隔為 0.1℃)。

            由于我們實現(xiàn)了控制軟件隔離,即便采用新的溫度讀取方法,控制應(yīng)用軟件也不會因為硬件改變而受到影響。

            有關(guān)LM75的特性可以集中在上圖3所示的藍色矩形框中,我們可在不影響控制軟件的前提下對其加以檢查和驗證。

            舉例來說,一些設(shè)備會在 I2C 主機每次讀取溫度值/寄存器時啟動新的轉(zhuǎn)換,如果讀取速度過快或者過于頻繁,那么LM75 就難以完成轉(zhuǎn)換??刂扑惴▌t不用擔(dān)心這些問題。

            微控制器的抽取

            我們在上面的實例中有意識地改變了微控制器外部的硬件,說明外部硬件轉(zhuǎn)變不會影響控制軟件。同樣,即便微控制器內(nèi)部硬件發(fā)生變化,也不會造成影響。

            如果我們?nèi)鐖D 2 所示先設(shè)計熱敏電阻,隨后再改動我們的微控制器,那么配置和讀取 ADC 的命令就會變化,對輸入進行多路復(fù)用和采樣的寄存器序列也會變化,進而計數(shù)到溫度的轉(zhuǎn)換也會發(fā)生改變。

            不過,由于這些變動僅限于矩形之中(表示函數(shù)和/或宏定義以及調(diào)用),因此我們只需將原來矩形框中的內(nèi)容用新微控制器所需的新指令替換即可。這樣,即便硬件發(fā)生了變化,軟件仍然絲毫不受影響。

            然而我并沒有談到改用不同廠商的微控制器時可用什么嵌入式設(shè)計工具來進行相關(guān)調(diào)整的問題。事實上,許多廠商都提供了硬件初始化的設(shè)置向?qū)?,選擇同一廠商推出的新產(chǎn)品相對而言簡化了硬件更換過程。

            就簡化硬件獨立性設(shè)計方案而言,微控制器廠商在自身的軟件開發(fā)工具中采用硬件提取技術(shù),從而進一步簡化了這一工作。用戶可從目錄項中根據(jù)應(yīng)用需求選擇微控制器的外設(shè)功能,并可根據(jù)設(shè)計方案需求的變化進行添加與刪減。

            利用 PWM1 或 ADC 等通用實例名,用戶可改變硬件的具體功能細節(jié),并讓工具來管理第一層提取或封裝器。舉例來說,在圖 2 中,如果我們需要增量型(積分型)ADC,而不是采用 SAR(逐次逼近)ADC的話,那么工具就能自動改變中間淺藍色的矩形。

            我們還能在更高級層面上進行提取。舉例來說,利用面向 PSoC 混合信號陣列產(chǎn)品的 PSoC Designer 與 PSoC Express 可視化嵌入式設(shè)計工具,軟件默認采用硬件提取方法,并自動生成所有層(請見上圖2與圖3中的藍色部分)。


            如欲修改熱敏電阻,用戶可在 PSoC Express 的目錄中選擇“熱敏電阻”,并定義“計算所需速度”的控制算法,開發(fā)工具就會給出哪些 PSoC 器件可以為該應(yīng)用提供必需的資源。

            選擇某個器件時,工具會以定點格式在一定的數(shù)據(jù)結(jié)構(gòu)中生成必要的固件來讀取、轉(zhuǎn)換并存儲熱敏電阻的溫度,并提供給“計算所需速度”算法。

            如果熱敏電阻的規(guī)范發(fā)生變化,那么用戶可選擇其他的 PSoC 器件,從而調(diào)整存儲容量、引腳數(shù)量、成本等。只顯示具有應(yīng)用必需資源的器件,而且能在不影響控制算法的情況下重新生成硬件提取層。

            或許在未來的什么時候,所有項目開發(fā)工作都可以制定出合理的計劃,市場營銷工作可以提前部署,明確客戶到底需要什么產(chǎn)品,而且計劃不會發(fā)生變化,具有預(yù)期特性的應(yīng)用軟件正好與選定的微控制器的存儲空間相符。

            不過在這一天到來之前,我們就應(yīng)通過封裝器和硬件層將所有硬件與控制軟件相隔離,這樣就能在很大程度上簡化嵌入式系統(tǒng)的設(shè)計工作。

            放眼窗外,深呼吸,仰望長空,雄鷹展翅,隨時準備攻擊捕獲獵物。時不我待,我們必須集中精力,全力以赴滿足緊迫的市場需求,堅決打贏最后關(guān)頭調(diào)整硬件選擇這一仗,滿足最苛刻的客戶需求。


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();