国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

衛(wèi)星通信設(shè)備通用監(jiān)控板軟件架構(gòu)研究

2018-05-10 18:42廖曉談陳鑫旺
數(shù)字通信世界 2018年4期
關(guān)鍵詞:控件底層菜單

廖曉談,陳鑫旺,宋 穎

(南京熊貓漢達(dá)科技有限公司,南京 210014)

1 引言

隨著衛(wèi)星通信技術(shù)的快速發(fā)展,近年來衛(wèi)星產(chǎn)業(yè)得到了巨大的發(fā)展,也帶來了衛(wèi)星通信設(shè)備需求的爆發(fā)。在天線控制、中頻、切換矩陣、信道等衛(wèi)星通信設(shè)備中存在多種多樣的監(jiān)控板,這些監(jiān)控板的主控芯片大部分是單片機(jī)。在這些單片機(jī)中運(yùn)行的軟件很多都是軟件工程師編寫的前后臺(tái)程序,沒有操作系統(tǒng)和軟件架構(gòu),可維護(hù)性和可移植性差。因?yàn)闆]有一套通用的監(jiān)控軟件架構(gòu),軟件工程師各自為政,甚至同一個(gè)部門的軟件工程師編寫的代碼框架完全不同。由于存在工程師離職、調(diào)崗等情況,新接手的軟件工程師經(jīng)常無法讀懂前人的代碼,導(dǎo)致推翻前人成果重新進(jìn)行軟件編寫,而這些監(jiān)控軟件的無序狀態(tài)都是因?yàn)闆]有一個(gè)統(tǒng)一的監(jiān)控軟件架構(gòu)標(biāo)準(zhǔn)。所以我希望根據(jù)現(xiàn)有資源在我公司的通用監(jiān)控板上實(shí)現(xiàn)一套比較簡單易用的監(jiān)控軟件架構(gòu)。

2 硬件平臺(tái)簡介

我公司的天控、中頻、切換矩陣、信道等設(shè)備中存在著多種多樣的監(jiān)控板。這些監(jiān)控板有的面臨核心芯片停產(chǎn)的問題,有的接口資源不夠豐富、處理能力弱。為了滿足日益復(fù)雜的監(jiān)控任務(wù)需求,減少多種不同監(jiān)控板所帶來的軟硬件研發(fā)和生產(chǎn)復(fù)雜程度,設(shè)計(jì)了一種通用監(jiān)控板,即使用一種外圍接口固定的監(jiān)控板來完成天控、中頻、切換矩陣、信道設(shè)備的監(jiān)控任務(wù)。通用監(jiān)控板的定位孔尺寸、接插件型號(hào)和定義都是固定的,使用相同的軟件驅(qū)動(dòng)程序,未來可以通過更新主控制芯片來進(jìn)行硬件升級。通用監(jiān)控板的主要功能性能指標(biāo)如下:主控制器使用ST公司32位ARM Cotex-M4內(nèi)核的單片機(jī)STM32F429ZIT,最高主頻為180MHz,192KB片內(nèi)RAM,2MB的片內(nèi)Flash;板上有配置參數(shù)存儲(chǔ)器,容量為8KB;支持2路網(wǎng)絡(luò),10/100M自適應(yīng);支持8路串口(其中3路串口可以配置成RS422/RS485 電平);支持3路獨(dú)立的SPI接口(其中1路SPI有6個(gè)片選端口)。

3 軟件架構(gòu)總體設(shè)計(jì)

3.1 原有監(jiān)控軟件架構(gòu)

原有的監(jiān)控軟件都是軟件工程師按照自己的想法編寫的,大部分是前后臺(tái)軟件架構(gòu),包含大循環(huán)掃描和中斷觸發(fā)。這種軟件架構(gòu)的框圖如圖1所示。

圖1 前后臺(tái)軟件架構(gòu)框圖

前后臺(tái)軟件架構(gòu)的優(yōu)點(diǎn)是簡潔、明了,特別適合比較簡單的應(yīng)用。當(dāng)軟件規(guī)模較大時(shí),我們就會(huì)發(fā)現(xiàn)前后臺(tái)軟件架構(gòu)的缺點(diǎn):軟件難管理和維護(hù);軟件工程師必須懂硬件;實(shí)時(shí)性難以保證。所以需要使用一個(gè)嵌入式實(shí)時(shí)操作系統(tǒng)來解決這些問題。

3.2 通用監(jiān)控板軟件架構(gòu)設(shè)計(jì)

針對原有監(jiān)控軟件架構(gòu)的缺點(diǎn),將嵌入式領(lǐng)域出現(xiàn)的優(yōu)秀元素如RTOS、GUI、面向?qū)ο笤O(shè)計(jì)、分層設(shè)計(jì)等思想引入到通用監(jiān)控板軟件架構(gòu)中,使用開源軟件FreeRTOS和msOS,通過合理的組織形成完整的軟件架構(gòu)。此軟件架構(gòu)讓使用者很容易讀懂,并且可以很容易修改、增刪,方便多位工程師協(xié)同開發(fā)系統(tǒng)底層,具有很好的穩(wěn)定性和可重用性,軟件工程師能根據(jù)自己的實(shí)際項(xiàng)目需求來編寫應(yīng)用層程序,而不需要關(guān)心通用監(jiān)控板底層硬件資源管理和驅(qū)動(dòng)等。通用監(jiān)控板軟件架構(gòu)如圖2所示。

圖2 通用監(jiān)控板軟件架構(gòu)

FreeRTOS是一個(gè)迷你的實(shí)時(shí)操作系統(tǒng)內(nèi)核,主要功能包括:任務(wù)管理、時(shí)間管理、信號(hào)量、消息隊(duì)列、內(nèi)存管理、記錄功能、軟件定時(shí)器、協(xié)程等,可滿足絕大部分監(jiān)控軟件的需要。FreeRTOS的源代碼開源且免費(fèi),可以方便地使用ST公司的工具軟件STM32CubeMX來配置生成。

嵌入式微系統(tǒng)msOS是一款簡單、易用的通用嵌入式軟件架構(gòu),其結(jié)合具體的項(xiàng)目應(yīng)用,整合uC/OS-I I,面向?qū)ο缶幊?,是一款具有?shí)時(shí)性要求、多任務(wù)的前后臺(tái)系統(tǒng)。msOS的特點(diǎn)是統(tǒng)一了編程風(fēng)格,把C語言寫成簡單、優(yōu)雅的C#語言的樣子,利用結(jié)構(gòu)體把軟件架構(gòu)分為應(yīng)用層(App)和系統(tǒng)層(System),獨(dú)立編程,應(yīng)用層和系統(tǒng)層都只能對設(shè)備操作,不能訪問底層,實(shí)現(xiàn)芯片級移植,便于多人協(xié)同開發(fā)系統(tǒng)層。

本文研究的軟件架構(gòu)底層的CMSIS、STM32 HAL Driver和FreeRTOS模塊都可以方便地使用ST公司的工具軟件STM32CubeMX來配置生成,方便在STM32不同芯片之間進(jìn)行移植。上層的System和App層是按照msOS的框架和風(fēng)格來實(shí)現(xiàn)的。App層是直接面向應(yīng)用的,不涉及底層硬件和驅(qū)動(dòng)。主要包含業(yè)務(wù)邏輯(Logic.c)和菜單界面(Menu.c),用于業(yè)務(wù)邏輯控制和串口屏界面顯示。System層細(xì)分為GUI庫、MOTOR(電機(jī))庫、Switch Mat r ix(切換矩陣)庫等中間件和Device 子層,可以將它看作是C#里的System命名空間,將通用監(jiān)控板底層的硬件資源及相關(guān)驅(qū)動(dòng)全部封裝起來,供App層調(diào)用。GUI庫為菜單界面解析包,用于面向?qū)ο蟮捻撁娼馕?。MOTOR庫為電機(jī)控制包,用于封裝控制步進(jìn)電機(jī)和直流電機(jī)的子函數(shù)。Switch Matrix庫為切換矩陣控制包,用于封裝控制切換矩陣的子函數(shù)。Device為App層和System層提供所需要外圍軟硬件設(shè)備的驅(qū)動(dòng)程序,內(nèi)部包含各種設(shè)備,如LCD、按鍵、串口、電機(jī)等。

4 任務(wù)分配

本文的軟件架構(gòu)借鑒了msOS的思想,共分為4 個(gè)任務(wù),它們的名字和優(yōu)先級如圖3所示。任務(wù)1的功能是進(jìn)行1ms一次的輪詢,處理最緊急的周期性查詢事物如電機(jī)控制等,為最高的任務(wù)優(yōu)先級;任務(wù)2的功能是進(jìn)行10ms一次的輪詢,處理較緊急的周期性查詢事物如按鍵掃描等,為第二高的任務(wù)優(yōu)先級;任務(wù)3的功能是采用消息驅(qū)動(dòng)型方式處理業(yè)務(wù)邏輯,為第三高的任務(wù)優(yōu)先級;任務(wù)4的功能是進(jìn)行菜單界面解析處理,為最低的任務(wù)優(yōu)先級,100ms刷新一次即可。另外,如果需要進(jìn)行微秒級的輪詢,直接使用MCU的定時(shí)器,在定時(shí)器中斷程序里進(jìn)行輪詢,緩存從外設(shè)獲取的數(shù)據(jù),并發(fā)送消息給任務(wù)3,在任務(wù)3中進(jìn)行業(yè)務(wù)邏輯處理。

任務(wù)1、任務(wù)2和中斷程序?qū)耐庠O(shè)獲取的數(shù)據(jù)緩存到MCU內(nèi)存中,并發(fā)送消息給任務(wù)3;任務(wù)3在收到任務(wù)1、任務(wù)2和中斷程序發(fā)送過來的消息后,對緩存下來的數(shù)據(jù)進(jìn)行協(xié)議解析、轉(zhuǎn)換計(jì)算等處理,并更新全局?jǐn)?shù)據(jù)庫App.Data和App.Menu;任務(wù)4根據(jù)全局?jǐn)?shù)據(jù)庫App.Data和App.Menu的最新數(shù)據(jù),每隔100ms刷新一次界面顯示。

圖3 任務(wù)分配框圖

5 面向?qū)ο蟛藛谓缑?/h2>

本文的菜單界面是基于msOS的菜單界面設(shè)計(jì)思想,根據(jù)通用監(jiān)控板菜單界面的具體需求改造而來。它完全基于面向?qū)ο蟮乃悸穪磉M(jìn)行設(shè)計(jì),把界面抽象成若干個(gè)頁面,而每個(gè)頁面又由背景文字(BackText)、標(biāo)簽(Label)和文本(TextBox)等控件組成。背景文字用于顯示固定的文字說明,比如頻點(diǎn)、溫度等,這些文字在當(dāng)前頁面下是一直不會(huì)變化的。標(biāo)簽控件是用來顯示變量的,可以是字符串,也可以是數(shù)字。文本控件除了具有標(biāo)簽控件的特點(diǎn)外,還可以通過按鍵等來修改變量值。標(biāo)簽控件使用單向鏈表來進(jìn)行組織和遍歷,文本控件使用雙向鏈表來進(jìn)行組織和遍歷。在面向?qū)ο笳Z言C#中,控件是類(class)來封裝的,控件的特性對應(yīng)類的屬性,控件的操作函數(shù)對應(yīng)類的方法。在C語言中沒有類,只能將控件的特性封裝到結(jié)構(gòu)體(struct)里面。菜單界面中頁面的組織結(jié)構(gòu)如圖4所示。

圖4 菜單界面中頁面結(jié)構(gòu)框圖

在頁面的初始化函數(shù)中將每個(gè)控件初始化,然后在任務(wù)4中每隔100ms就解析執(zhí)行一次菜單界面。只有當(dāng)菜單界面有數(shù)據(jù)更新時(shí),才去更新液晶屏顯示,這樣可以減少M(fèi)CU與液晶屏之間的數(shù)據(jù)通信開銷,有利于提高菜單界面顯示的可靠性。

6 結(jié)束語

本文針對衛(wèi)星通信設(shè)備通用監(jiān)控板的監(jiān)控軟件實(shí)際需求,基于開源的FreeRTOS和msOS嵌入式操作系統(tǒng),設(shè)計(jì)了一套監(jiān)控軟件架構(gòu)。本文的監(jiān)控軟件架構(gòu)具有良好的可讀性、穩(wěn)定性和可移植性,使得應(yīng)用軟件工程師不需要關(guān)心底層的硬件和驅(qū)動(dòng),只需要關(guān)注自己需要的監(jiān)控界面和業(yè)務(wù)邏輯,大大減少了重復(fù)性工作,監(jiān)控軟件開發(fā)的時(shí)間成本和溝通成本減少,新員工接手監(jiān)控軟件的難度也將大大降低,預(yù)期的效益非常明顯。

[1] 王紹偉,鄭德智,吳玉勇.嵌入式微系統(tǒng)[M].北京:機(jī)械工業(yè)出版社,2016.

[2] 李澤平.嵌入式微系統(tǒng)msOS的設(shè)計(jì)與應(yīng)用[D].江西科技師范大學(xué),2015.

[3] 李志明,檀永,徐石明.STM32嵌入式系統(tǒng)開發(fā)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2013.

[4] 左中凱,劉軍,張洋.FreeRTOS源碼詳解與應(yīng)用開發(fā)[M].北京:北京航空航天大學(xué)出版社,2017.

猜你喜歡
控件底層菜單
航天企業(yè)提升采購能力的底層邏輯
基于.net的用戶定義驗(yàn)證控件的應(yīng)用分析
中國新年菜單
關(guān)于.net控件數(shù)組的探討
本月菜單
回到現(xiàn)實(shí)底層與悲憫情懷
中國底層電影研究探略
一個(gè)“公海龜”的求偶菜單
略論“底層”
基于嵌入式MINIGUI控件子類化技術(shù)的深入研究與應(yīng)用
荥阳市| 横山县| 桦川县| 滁州市| 苏尼特左旗| 抚顺市| 岫岩| 隆昌县| 乌拉特中旗| 威宁| 新民市| 平阴县| 资源县| 宁陕县| 南皮县| 长子县| 桐庐县| 漳浦县| 祁东县| 寻乌县| 金乡县| 信丰县| 岱山县| 清苑县| 扎囊县| 炎陵县| 南投市| 青州市| 凤山市| 来凤县| 皋兰县| 翁牛特旗| 洛扎县| 星座| 垦利县| 呈贡县| 壶关县| 隆尧县| 蒲城县| 兴文县| 日喀则市|