System結(jié)構(gòu)體封裝了整個系統(tǒng)層,讓App很容易基于System跨平臺,那么System內(nèi)部該如何組織?
ARM公司推薦嵌入式系統(tǒng)開發(fā)遵循CMSIS架構(gòu),用戶應用程序可以調(diào)用實時內(nèi)核(OS)、中間件等,也可以直接調(diào)用底層硬件基于CMSIS標準的函數(shù)接口,比如ST公司發(fā)布的STM32的硬件驅(qū)動LIB庫,甚至直接訪問最底層的寄存器。這種架構(gòu)編程比較靈活,對于規(guī)模不大的嵌入式系統(tǒng)比較適合,但這樣的一個架構(gòu)分層還比較模糊,應用層幾乎可以訪問所有的系統(tǒng)層資源,比較任意。各種底層接口沒有封裝,規(guī)模一大很容易引起重名、相互調(diào)用,若更換處理器芯片,整個系統(tǒng)層都要重新設計,不便于移植。為了解決這些問題,需要引入新的概念:設備,基于設備把底層的硬件驅(qū)動函數(shù)按功能封裝起來,這樣可以把系統(tǒng)層內(nèi)部理清、分層次、模塊化、可移植。
設備這個詞,我們是經(jīng)常接觸的,我們知道PC機的組成,就是由中央處理器、內(nèi)存、硬盤、主板、電源、顯示器等幾樣組成,這是物理上講的,若從Windows操作系統(tǒng)角度看,我們可以看Windows的設備管理器。一臺PC機在WindowsXP的眼中由DVD驅(qū)動器、IDE控制器、處理器、磁盤驅(qū)動器、電池等等組成,每一個設備里面又細分為很多小設備。所以設備是WindowsXP管理的基本對象。
在VS.Net架構(gòu)的C#編程角度看,系統(tǒng)層System由各種功能子類組成,子類下面又分子類。應用層開發(fā)程序,就是面向System各種類開發(fā)即可,所以類是C#編程的基礎單元。