<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

面向設備編程-嵌入式微系統連載之六

作者: 時(shí)間:2014-09-10 來(lái)源:網(wǎng)絡(luò ) 收藏

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

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

  

 

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

  

 

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

  

 

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

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

  

 

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

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

  

 

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

  一個(gè)設備驅動(dòng)的代碼編寫(xiě)一般的講要分為五部分,以L(fǎng)CD設備為例:

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

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

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

  4、 在Lcd設備初始化函數InitializeLcd中把Lcd設備的接口函數指針與Lcd設備的接口函數關(guān)聯(lián)起來(lái):System.Device.Lcd.DisplayString = LcdDisplayString;

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

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

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

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

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程




關(guān)鍵詞: 嵌入式微系統 System ARM

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>