在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 面向設備編程-嵌入式微系統(tǒng)連載之六

      面向設備編程-嵌入式微系統(tǒng)連載之六

      作者: 時間:2014-09-10 來源:網絡 收藏

        結構體封裝了整個系統(tǒng)層,讓App很容易基于跨平臺,那么內部該如何組織?

      本文引用地址:http://www.biyoush.com/article/262756.htm

        

       

        公司推薦嵌入式開發(fā)遵循CMSIS架構,用戶應用程序可以調用實時內核(OS)、中間件等,也可以直接調用底層硬件基于CMSIS標準的函數接口,比如ST公司發(fā)布的STM32的硬件驅動LIB庫,甚至直接訪問最底層的寄存器。這種架構編程比較靈活,對于規(guī)模不大的嵌入式系統(tǒng)比較適合,但這樣的一個架構分層還比較模糊,應用層幾乎可以訪問所有的系統(tǒng)層資源,比較任意。各種底層接口沒有封裝,規(guī)模一大很容易引起重名、相互調用,若更換處理器芯片,整個系統(tǒng)層都要重新設計,不便于移植。為了解決這些問題,需要引入新的概念:設備,基于設備把底層的硬件驅動函數按功能封裝起來,這樣可以把系統(tǒng)層內部理清、分層次、模塊化、可移植。

        

       

        設備這個詞,我們是經常接觸的,我們知道PC機的組成,就是由中央處理器、內存、硬盤、主板、電源、顯示器等幾樣組成,這是物理上講的,若從Windows操作系統(tǒng)角度看,我們可以看Windows的設備管理器。一臺PC機在Windows XP的眼中由DVD驅動器、IDE控制器、處理器、磁盤驅動器、電池等等組成,每一個設備里面又細分為很多小設備。所以設備是Windows XP管理的基本對象。

        

       

        在VS.Net架構的C#編程角度看,系統(tǒng)層System由各種功能子類組成,子類下面又分子類。應用層開發(fā)程序,就是面向System各種類開發(fā)即可,所以類是C#編程的基礎單元。

        無論設備還是類,它們都是表征一組具有相對完整功能的集合。比如一個人,由頭、四肢、五臟六腑組成,這些部件都是相對完整的功能集,而頭呢,又由大腦、眼睛、鼻子、耳朵等組成,它們的功能也是相對完整的。相對于類這個概念來說,嵌入式人員更容易接受設備這個名詞,因為有很多實際的對應物存在,比如LCD、按鍵、存儲器、串口、ADC、定時器、IO等等,都是具體的一個設備,它們有非常明確的功能定義,基本上各個項目都需要這些設備組合起來完成,只是不同的項目可能涉及的設備種類不同罷了,但基本上脫離不了這么幾種。所以我們可以認為一個系統(tǒng)層System就是由不同的設備組成的,系統(tǒng)層內的中間件也是由設備來支持的,而設備則需要編寫設備驅動代碼,需要調用各種硬件驅動接口函數來實現,比如ST公司發(fā)布的STM32硬件驅動庫來完成。

        

       

        中低端嵌入式編程,因為資源比較緊張,為了節(jié)省資源,代碼編寫比較緊湊,所以長期以來應用層與系統(tǒng)底層是分不清的,這就導致經常一個人既要懂上層應用,又要懂底層驅動,對開發(fā)者的要求較高,這也增加了項目的開發(fā)難度。而現在高性能嵌入式芯片的出現,可以不再被資源約束,所以引入設備概念,讓嵌入式編程真正意義上解決了一人打天下的尷尬局面,對于應用層開發(fā)人員來說,他們雖然不懂底層硬件驅動,但可以很容易理解設備這個功能接口,輕松完成項目需求,而對于底層驅動人員來說,一個個明確獨立的設備,更有助于自己清晰的編寫底層驅動,適合多人協(xié)助開發(fā)。所以msOS,可以認為是面向設備開發(fā)的架構。

        每一個設備,都有一個對應的結構體封裝,因為中低端嵌入式系統(tǒng)規(guī)模不大,為了方便應用查看,所以直接封裝在System的Device里面。

        

       

        只有在System的Device中的基礎設備才可以被應用層訪問、調用,而設備內的其它函數,都需要定義為Static類型,防止被外部調用。

        一個設備驅動的代碼編寫一般的講要分為五部分,以LCD設備為例:

        1、 建立一個按鍵設備文件device_lcd.c。

        2、 在device_lcd.c中編寫lcd設備驅動代碼,除了外部接口函數之外,其它的都需要定義為Static類型的靜態(tài)函數,防止被外部函數調用。

        3、 在SystemStruct的Device中添加Lcd設備結構體,內部包含接口函數指針。

        4、 在Lcd設備初始化函數InitializeLcd中把Lcd設備的接口函數指針與Lcd設備的接口函數關聯起來:System.Device.Lcd.DisplayString = LcdDisplayString;

        5、 有些需要基于系統(tǒng)節(jié)拍運行的設備,比如按鍵、定時器設備,需要由系統(tǒng)節(jié)拍提供系統(tǒng)節(jié)拍服務程序:KeySystick100Service();TimerSystick1000Service();

        引入設備概念,把系統(tǒng)層分為一個個相對獨立的模塊,內部的函數都通過Static封裝了,只是保留了設備接口與外界聯系,這樣大大簡化了系統(tǒng)的復雜度,調理更加清晰,可以支撐項目做的更大更強。封裝之后的設備功能相對完整,獨立性強,那么它是如何運轉的呢?必須要有一套支撐設備運行的規(guī)范。

        1、 設備一般分為兩類,一類不需要系統(tǒng)節(jié)拍支撐它運行的,比如Lcd、IO等設備,它們由上層函數直接調用接口即可。還有一類需要由系統(tǒng)節(jié)拍設備支撐其運行的,比如按鍵和定時器設備,按鍵是基于每秒100次的按鍵掃描獲取按鍵值,定時器是基于每秒1000次的系統(tǒng)節(jié)拍實現多路虛擬定時器。所以這一類設備,需要由系統(tǒng)節(jié)拍設備提供支持,它們的工作基于系統(tǒng)節(jié)拍之上運行,系統(tǒng)節(jié)拍設備是它們運行的基礎。device_systick.c是系統(tǒng)節(jié)拍設備,它是相對比較特殊的基礎設備。

        2、 調用方式分為三種:上層與下層可以直接調用,下層對上層提供了兩種方式,一是利用OS的消息機制實現信息上傳,二是采用注冊機制,實現類似處理器中斷的方式,給上層提供信息。

      c語言相關文章:c語言教程




      評論


      相關推薦

      技術專區(qū)

      關閉