• 有助于嵌入式系統順利開發的硬件獨立性設計方案

       所有嵌入式系統最終都要連接到外部傳感器與執行器或內部功能模塊與外設等硬件以實現輸入輸出、數據存儲及通信功能。每種設計方案中的每個硬件都有其自己的特性,需要設計人員認真對待。

      設計方案中使用的硬件如果發生任何變化,即便是僅僅添加或去除一個輸入或輸出端口,也會影響到嵌入式軟件,有時甚至會造成非常嚴重的影響。如果在設計過程后期才做出上述變動,那么就可能導致產品不能及時上市。解決這一問題的辦法,就是在系統設計過程中確保完全的硬件獨立性。

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

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

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

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

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

      “硬件獨立性設計” 是什么意思?

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

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

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

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

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

      從何做起?

      開始項目設計時,您至少要有一些基本的想法或要求。我們應著手設計一種獨立于硬件的系統。系統應當實現什么功能?最終目標是什么?需要哪些驅動、監控功能?如果加入硬件的話,就要把整個信號鏈中的各個部分組成一個有機的整體。

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

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

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

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

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

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

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

      通過實例說明工作原理

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

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

      隨著項目開發的進展,我們決定采用熱敏電阻作為溫度傳感器(因為熱敏電阻成本低且能滿足特殊屬性需要)。 我們從下圖2可以看出,“獲取溫度”這個矩形塊又擴展為依賴于硬件且與熱敏電阻設計相關的不同功能塊,其中包括熱敏電阻的硬件特性及其接口電路等。

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

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

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

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

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

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

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

      舉例來說,一些設備會在 I2C 主機每次讀取溫度值/寄存器時啟動新的轉換,如果讀取速度過快或者過于頻繁,那么LM75 就難以完成轉換。控制算法則不用擔心這些問題。

      微控制器的抽取

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

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

     
     
    網站首頁  |  關于我們  |  聯系我們  |  廣告服務  |  版權隱私  |  友情鏈接  |  站點導航
     
    色噜噜精品视频在线观看| 亚洲精品色婷婷在线影院| 日本人精品video黑人| 国内大量揄拍人妻精品視頻| 久久国产精品2020盗摄| 亚洲国产精品专区在线观看| 无码精品A∨在线观看十八禁| 久久精品国产影库免费看| 国产在线精品一区二区在线看| 久久精品国产AV一区二区三区| 99久久这里只有精品| 国产精品社区在线观看| 91亚洲国产成人久久精品网站| 国产在线精品观看免费观看| 国产精品扒开做爽爽爽的视频 | 久久久这里有精品999| 亚洲无码日韩精品第一页| 国产伦精品一区二区三区不卡| 99无码精品二区在线视频| 在线观看国产精品普通话对白精品| 国产精品李雅在线观看| 2022国产精品不卡a| 97精品在线观看| 日本精品中文字幕| 日韩精品无码免费专区午夜| 九九久久精品国产免费看小说 | 亚洲精品线路一在线观看| 国产精品久久无码一区二区三区网| 亚洲区精品久久一区二区三区 | 熟女精品视频一区二区三区 | 久久久久国产成人精品亚洲午夜| 国产精品午夜小视频观看| 亚洲AV无码精品国产成人| 国产福利视精品永久免费| 91精品国产免费入口| 老司机亚洲精品影院| 久久久久久影院久久久久免费精品国产小说 | 国产农村乱子伦精品视频| 国产精品宾馆在线精品酒店| 97香蕉久久夜色精品国产| 亚洲精品二三区伊人久久|