軟件架構-嵌入式微系統連載之五
嵌入式微系統架構是C#與CMSIS架構的復合體,如下圖所示:
本文引用地址:http://m.ptau.cn/article/262755.htm

基于C#標準,分為應用層App與系統層System兩層。采用兩個大結構體AppStruct和SystemStruct把它們各自封裝起來。

Appstruct里封裝了兩個結構體:Data和Menu。兩者都是應用層的數據類型。
Data是應用層業(yè)務邏輯所涉及的傳感器、驅動器等全局變量、過程變量、存儲參數、設置參數等數據,Data結構體類似數據庫概念,只是嵌入式系統數據一般不大,用一個結構體實現即可。
Menu是應用層需要的各種菜單顯示頁面,一個頁面下可以加載多種控件,比如背景文字(BackText)、表(Chart)、標簽(Label)和文本(TextBox)四種。目前版本msOS因為主要針對工控,支持本地支持黑白字庫屏,所以只需要這四種控件即可,菜單結構相對簡單,今后需要支持黑白點陣屏甚至是彩屏,需要支持的控件就更多了。
AppStruct可以認為是應用層App的數據庫,里面包含了業(yè)務邏輯的數據庫和菜單界面顯示的各個頁面?;谶@種結構體封裝的好處在于把全局變量統一到數據庫中管理,尤其是業(yè)務邏輯中的全局變量都放到Data區(qū)中統一管理,這充分的利用了全局變量的使用便利性,又有效的避免全局變量滿天飛,解決了長期以來引起極大爭議的全局變量問題。
應用層分為三塊,除了數據庫意思的AppStruct外,還有業(yè)務邏輯(Logic)及菜單界面(Menu),兩者分別跟工業(yè)自動化控制系統的可編程控制器(PLC)和組態(tài)屏(HMI)對應。在工業(yè)自動化中,PLC內部有業(yè)務邏輯參數存儲單元,HMI內部有菜單頁面存儲單元,現在等價于把PLC和HMI的存儲單元合并在AppStruct中來管理。
業(yè)務邏輯(Logic)響應各種傳感器過來的信息,通過給定的算法或操作流程,及時指揮驅動器工作,所以需要設定在較高優(yōu)先級的任務中。菜單界面(Menu)顯示業(yè)務邏輯處理過程中需要顯示的各種參數,只需要滿足眼睛的刷新頻率即可,所以刷新速度相對較慢,一般放在最低優(yōu)先級任務中處理。需要注意的是,菜單界面不包括按鍵部分,按鍵產生按鍵消息,歸入業(yè)務邏輯中,菜單界面只是顯示各種參數,而不會去修改參數,這個保證了數據庫只被業(yè)務邏輯一個任務修改,避免了一個數據同時被多個任務修改產生錯誤的問題。

SystemStruct封裝了整個底層系統,抽象成一個面向應用的接口芯片。
Initialize為初始化函數,在系統應用前,必須要先初始化。
Device結構體中封裝了各類設備,比如LCD、ADC、USART、IO、Timer等。
OS中封裝了uC/OS-II的各種常用接口函數。
Gui中封裝了界面處理接口。
AppStruct和SystemStruct都是一個自定義的結構體類型,需要用這兩個類型定義一個對象。

定義應用層結構體。
定義系統層結構體。需要注意的是,因為采用結構體模擬類功能,System在定義的時候就指定了System的Initialize初始化函數,這樣系統開始就可以使用System.Initialize功能,便于形式上的完美。
一個System結構體,封裝了整個系統層,中間件接口及設備接口,都在System中體現,等價于一個面向于應用層的處理器,App運行于系統層之上,App只需要調用System中的接口即可,簡單、易用,這樣設計做到了跟實際的芯片無關性,比較容易跨平臺,當需要更換芯片的時候,只需要保證System接口一致,應用層無需修改代碼。
c語言相關文章:c語言教程
評論