色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 軟件架構(gòu)-嵌入式微系統(tǒng)連載之五

          軟件架構(gòu)-嵌入式微系統(tǒng)連載之五

          作者: 時間:2014-09-10 來源:網(wǎng)絡 收藏

            架構(gòu)是C#與架構(gòu)的復合體,如下圖所示:

          本文引用地址:http://cafeforensic.com/article/262755.htm

            

           

            基于C#標準,分為應用層App與系統(tǒng)層System兩層。采用兩個大結(jié)構(gòu)體AppStruct和SystemStruct把它們各自封裝起來。

            

           

            Appstruct里封裝了兩個結(jié)構(gòu)體:Data和Menu。兩者都是應用層的數(shù)據(jù)類型。

            Data是應用層業(yè)務邏輯所涉及的傳感器、驅(qū)動器等全局變量、過程變量、存儲參數(shù)、設置參數(shù)等數(shù)據(jù),Data結(jié)構(gòu)體類似數(shù)據(jù)庫概念,只是嵌入式系統(tǒng)數(shù)據(jù)一般不大,用一個結(jié)構(gòu)體實現(xiàn)即可。

            Menu是應用層需要的各種菜單顯示頁面,一個頁面下可以加載多種控件,比如背景文字(BackText)、表(Chart)、標簽(Label)和文本(TextBox)四種。目前版本msOS因為主要針對工控,支持本地支持黑白字庫屏,所以只需要這四種控件即可,菜單結(jié)構(gòu)相對簡單,今后需要支持黑白點陣屏甚至是彩屏,需要支持的控件就更多了。

            AppStruct可以認為是應用層App的數(shù)據(jù)庫,里面包含了業(yè)務邏輯的數(shù)據(jù)庫和菜單界面顯示的各個頁面?;谶@種結(jié)構(gòu)體封裝的好處在于把全局變量統(tǒng)一到數(shù)據(jù)庫中管理,尤其是業(yè)務邏輯中的全局變量都放到Data區(qū)中統(tǒng)一管理,這充分的利用了全局變量的使用便利性,又有效的避免全局變量滿天飛,解決了長期以來引起極大爭議的全局變量問題。

            應用層分為三塊,除了數(shù)據(jù)庫意思的AppStruct外,還有業(yè)務邏輯(Logic)及菜單界面(Menu),兩者分別跟工業(yè)自動化控制系統(tǒng)的可編程控制器(PLC)和組態(tài)屏(HMI)對應。在工業(yè)自動化中,PLC內(nèi)部有業(yè)務邏輯參數(shù)存儲單元,HMI內(nèi)部有菜單頁面存儲單元,現(xiàn)在等價于把PLC和HMI的存儲單元合并在AppStruct中來管理。

            業(yè)務邏輯(Logic)響應各種傳感器過來的信息,通過給定的算法或操作流程,及時指揮驅(qū)動器工作,所以需要設定在較高優(yōu)先級的任務中。菜單界面(Menu)顯示業(yè)務邏輯處理過程中需要顯示的各種參數(shù),只需要滿足眼睛的刷新頻率即可,所以刷新速度相對較慢,一般放在最低優(yōu)先級任務中處理。需要注意的是,菜單界面不包括按鍵部分,按鍵產(chǎn)生按鍵消息,歸入業(yè)務邏輯中,菜單界面只是顯示各種參數(shù),而不會去修改參數(shù),這個保證了數(shù)據(jù)庫只被業(yè)務邏輯一個任務修改,避免了一個數(shù)據(jù)同時被多個任務修改產(chǎn)生錯誤的問題。

            

           

            SystemStruct封裝了整個底層系統(tǒng),抽象成一個面向應用的接口芯片。

            Initialize為初始化函數(shù),在系統(tǒng)應用前,必須要先初始化。

            Device結(jié)構(gòu)體中封裝了各類設備,比如LCD、ADC、USART、IO、Timer等。

            OS中封裝了uC/OS-II的各種常用接口函數(shù)。

            Gui中封裝了界面處理接口。

            AppStruct和SystemStruct都是一個自定義的結(jié)構(gòu)體類型,需要用這兩個類型定義一個對象。

            

           

            定義應用層結(jié)構(gòu)體。

            定義系統(tǒng)層結(jié)構(gòu)體。需要注意的是,因為采用結(jié)構(gòu)體模擬類功能,System在定義的時候就指定了System的Initialize初始化函數(shù),這樣系統(tǒng)開始就可以使用System.Initialize功能,便于形式上的完美。

            一個System結(jié)構(gòu)體,封裝了整個系統(tǒng)層,中間件接口及設備接口,都在System中體現(xiàn),等價于一個面向于應用層的處理器,App運行于系統(tǒng)層之上,App只需要調(diào)用System中的接口即可,簡單、易用,這樣設計做到了跟實際的芯片無關性,比較容易跨平臺,當需要更換芯片的時候,只需要保證System接口一致,應用層無需修改代碼。

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




          評論


          相關推薦

          技術專區(qū)

          關閉