本發(fā)明涉及龍芯通信領(lǐng)域,具體涉及一種基于龍芯平臺(tái)的通信控制框架。
背景技術(shù):
龍芯是中國(guó)科學(xué)院計(jì)算技術(shù)研究所設(shè)計(jì)的通用CPU,采用MIPS精簡(jiǎn)指令集架構(gòu),獲得了MIPS科技公司專利授權(quán)。龍芯1號(hào)的頻率為266MHz,最早在2002年開始使用。龍芯2號(hào)的頻率最高為1GHz。龍芯3A是首款國(guó)產(chǎn)商用4核處理器,其工作頻率為900MHz~1GHz。龍芯3A的峰值計(jì)算能力達(dá)到16GFLOPS。龍芯3B是首款國(guó)產(chǎn)商用8核處理器,主頻達(dá)到1GHz,支持向量運(yùn)算加速,峰值計(jì)算能力達(dá)到128GFLOPS,具有很高的性能功耗比。
目前業(yè)界有許多優(yōu)秀的開源和非開源的技術(shù)框架,如MFC、.NET、Poco、Boost、struct、hibernate等;或者針對(duì)特定業(yè)務(wù)的開發(fā)軟件框架,但這些框架都是針對(duì)某一領(lǐng)域特定方面或者是定位于基礎(chǔ)工具框架類的,而無法做到在數(shù)據(jù)通信領(lǐng)域很好的支持代碼重用和業(yè)務(wù)開發(fā),特別是急需一種基于龍芯平臺(tái)的通信控制框架。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)存在的以上問題,提供一種基于龍芯平臺(tái)的通信控制框架,用于支撐數(shù)據(jù)通信領(lǐng)域的業(yè)務(wù)開發(fā),極大的提高軟件開發(fā)效率。
為實(shí)現(xiàn)上述技術(shù)目的,達(dá)到上述技術(shù)效果,本發(fā)明通過以下技術(shù)方案實(shí)現(xiàn):
一種基于龍芯平臺(tái)的通信控制框架,包括基于龍芯的操作系統(tǒng)與硬件的通信控制架構(gòu);所述的通信控制架構(gòu)包括接口封裝層、驅(qū)動(dòng)層、公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層;所述的公共框架層管理通信響應(yīng)與處理指令機(jī)制;所述的業(yè)務(wù)層響應(yīng)所述的公共框架層指令;所述的業(yè)務(wù)層與所述的公共框架層通過所述的協(xié)議分發(fā)層進(jìn)行雙向數(shù)據(jù)交互;所述的接口封裝層分別對(duì)所述的公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層提供API接口;所述的接口封裝層接收所述的公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層傳輸?shù)臄?shù)據(jù);所述的公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層接收所述的接口封裝層傳輸源于所述的基于龍芯的操作系統(tǒng)與硬件中的數(shù)據(jù);所述的驅(qū)動(dòng)層為所述的業(yè)務(wù)層提供驅(qū)動(dòng)支持。
進(jìn)一步的,所述的公共框架層包括模塊管理;所述的模塊管理采用模塊進(jìn)程唯一接口;所述的模塊管理包括模塊啟動(dòng)管理、模塊狀態(tài)監(jiān)測(cè);所述的模塊啟動(dòng)管理采用分級(jí)管理機(jī)制;所述的模塊啟動(dòng)管理處理模塊順序啟動(dòng);所述的模塊狀態(tài)監(jiān)測(cè)定時(shí)監(jiān)測(cè)模塊進(jìn)程狀態(tài)。
進(jìn)一步的,所述的模塊啟動(dòng)管理包括獲取模塊信息、模塊控制塊結(jié)構(gòu)體類型定義、存儲(chǔ)模塊控制塊信息、模塊信息填寫、分級(jí)運(yùn)行模塊。
進(jìn)一步的,所述的模塊狀態(tài)監(jiān)測(cè)包括獲取被監(jiān)測(cè)模塊信息、創(chuàng)建監(jiān)測(cè)任務(wù)、發(fā)送測(cè)試激活消息、啟動(dòng)定時(shí)、判斷被監(jiān)測(cè)模塊狀態(tài)、重啟模塊。
進(jìn)一步的,所述的公共框架層還包括基本數(shù)據(jù)結(jié)構(gòu)封裝;所述的基本數(shù)據(jù)結(jié)構(gòu)封裝包括鏈表clink封裝、哈希表chash封裝、樹ctree封裝。
進(jìn)一步的,所述的公共框架層還包括日志管理;所述的日志管理包括日志分級(jí)打印、日志文件存儲(chǔ)、日志文件備份。
進(jìn)一步的,所述的公共框架層還包括配置管理;所述的配置管理采用json開源組件,所述的json開源組件讀取本地的json格式配置文件并保存配置數(shù)據(jù)。
進(jìn)一步的,所述的公共框架層還包括第三方庫;所述的第三方庫為配置管理提供支持;所述的通信控制框架支持第三方庫擴(kuò)展。
進(jìn)一步的,所述的協(xié)議分發(fā)層包括消息分發(fā)機(jī)制、事件分發(fā)機(jī)制;所述的消息分發(fā)機(jī)制為一對(duì)一分發(fā);所述的事件分發(fā)機(jī)制為一對(duì)多分發(fā)。
進(jìn)一步的,所述的接口封裝層封裝有進(jìn)程內(nèi)/進(jìn)程間IPC通信接口、多任務(wù)管理接口、定時(shí)管理接口、時(shí)間管理接口、統(tǒng)一數(shù)據(jù)類型;所述的業(yè)務(wù)層包括應(yīng)用層與網(wǎng)管服務(wù);所述的驅(qū)動(dòng)層與所述的網(wǎng)管服務(wù)雙向通信,所述的應(yīng)用層與所述的網(wǎng)管服務(wù)雙向通信;所述的應(yīng)用層與所述的驅(qū)動(dòng)層通過所述的網(wǎng)管服務(wù)雙向交互。
本發(fā)明的有益效果:本發(fā)明提供一種基于龍芯平臺(tái)的通信控制框架,包括基于龍芯的操作系統(tǒng)與硬件的通信控制架構(gòu);所述的通信控制架構(gòu)包括接口封裝層、驅(qū)動(dòng)層、公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層;所述的公共框架層管理通信響應(yīng)與處理指令機(jī)制;所述的業(yè)務(wù)層響應(yīng)所述的公共框架層指令;所述的業(yè)務(wù)層與所述的公共框架層通過所述的協(xié)議分發(fā)層進(jìn)行雙向數(shù)據(jù)交互;所述的接口封裝層分別對(duì)所述的公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層提供API接口;所述的接口封裝層接收所述的公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層傳輸?shù)臄?shù)據(jù);所述的公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層接收所述的接口封裝層傳輸源于所述的基于龍芯的操作系統(tǒng)與硬件中的數(shù)據(jù);所述的驅(qū)動(dòng)層為所述的業(yè)務(wù)層提供驅(qū)動(dòng)支持。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)如下:
1)模塊化、低耦合,框架采用模塊化設(shè)計(jì),模塊之間統(tǒng)一通過消息機(jī)制通信,低耦合特點(diǎn)也提高了系統(tǒng)的可擴(kuò)展性;
2)支持跨平臺(tái),通過宏將各種系統(tǒng)獨(dú)立的API隔離起來,形成對(duì)上統(tǒng)一的接口,支持Linux/Windows/Vxworks操作系統(tǒng);
3)可調(diào)試性,框架提供了包括基于log4cplus第三方庫的日志功能和調(diào)試手段,提高了問題定位的效率;
4)提供各種基礎(chǔ)服務(wù)和接口,如socket套接字、命名管道等IPC進(jìn)程間通訊機(jī)制;同時(shí)還封裝有基本數(shù)據(jù)結(jié)構(gòu)、定時(shí)器。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,并可依照說明書的內(nèi)容予以實(shí)施,以下以本發(fā)明的較佳實(shí)施例并配合附圖詳細(xì)說明如后。本發(fā)明的具體實(shí)施方式由以下實(shí)施例及其附圖詳細(xì)給出。
附圖說明
此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1是本發(fā)明的一種基于龍芯平臺(tái)的通信控制框架示意圖;
圖2是本發(fā)明的一種基于龍芯平臺(tái)的通信模塊監(jiān)測(cè)邏輯圖;
圖3是本發(fā)明的一種基于龍芯平臺(tái)的通信模塊監(jiān)測(cè)流程圖;
圖4是本發(fā)明的一種基于龍芯平臺(tái)的通信模塊監(jiān)測(cè)狀態(tài)判斷流程圖;
圖5是本發(fā)明的一種基于龍芯平臺(tái)的通信消息分發(fā)機(jī)制示意圖;
圖6是本發(fā)明的一種基于龍芯平臺(tái)的通信事件分發(fā)機(jī)制示意圖。
具體實(shí)施方式
下面將參考附圖并結(jié)合實(shí)施例,來詳細(xì)說明本發(fā)明。
參照?qǐng)D1-6所示,一種基于龍芯平臺(tái)的通信控制框架及其系統(tǒng),包括基于龍芯的操作系統(tǒng)與硬件的通信控制架構(gòu);如圖1所示,所述的通信控制架構(gòu)包括接口封裝層、驅(qū)動(dòng)層、公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層;所述的公共框架層管理通信響應(yīng)與處理指令機(jī)制;所述的業(yè)務(wù)層響應(yīng)所述的公共框架層指令;所述的業(yè)務(wù)層與所述的公共框架層通過所述的協(xié)議分發(fā)層進(jìn)行雙向數(shù)據(jù)交互;所述的接口封裝層分別對(duì)所述的公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層提供API接口;所述的接口封裝層接收所述的公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層傳輸?shù)臄?shù)據(jù);所述的公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層接收所述的接口封裝層傳輸源于所述的基于龍芯的操作系統(tǒng)與硬件中的數(shù)據(jù);所述的驅(qū)動(dòng)層為所述的業(yè)務(wù)層提供驅(qū)動(dòng)支持。接口封裝層對(duì)上提供了調(diào)用的API接口,既接收上層下發(fā)的數(shù)據(jù),也會(huì)將底層數(shù)據(jù)通過回調(diào)函數(shù)等方式通知到上層應(yīng)用。所述的公共框架層還包括配置管理;所述的配置管理采用json開源組件,所述的json開源組件讀取本地的json格式配置文件并保存配置數(shù)據(jù)。優(yōu)選地,所述的公共框架層還包括第三方庫;所述的第三方庫為配置管理提供支持,所述的通信控制框架支持第三方庫擴(kuò)展。
進(jìn)一步的,所述的公共框架層包括模塊管理;確保模塊進(jìn)程在全局中的唯一性,所述的模塊管理采用模塊進(jìn)程唯一接口;所述的模塊管理包括模塊啟動(dòng)管理、模塊狀態(tài)監(jiān)測(cè);所述的模塊啟動(dòng)管理采用分級(jí)管理機(jī)制;所述的模塊啟動(dòng)管理處理模塊順序啟動(dòng);所述的模塊狀態(tài)監(jiān)測(cè)定時(shí)監(jiān)測(cè)模塊進(jìn)程狀態(tài)。
進(jìn)一步的,所述的模塊啟動(dòng)管理包括獲取模塊信息、模塊控制塊結(jié)構(gòu)體類型定義、存儲(chǔ)模塊控制塊信息、模塊信息填寫、分級(jí)運(yùn)行模塊。
獲取模塊信息:包括獲取模塊的ID、模塊名稱、入口函數(shù)、入口函數(shù)名稱。上述信息將為模塊的建立、運(yùn)行提供依據(jù)。
模塊控制塊結(jié)構(gòu)體類型定義:定義模塊控制塊結(jié)構(gòu)體類型,用于管理模塊描述信息、狀態(tài)信息等。模塊表中的每一表項(xiàng)都是一個(gè)模塊控制塊結(jié)構(gòu)結(jié)點(diǎn)。模塊控制塊結(jié)構(gòu)體類型定義采用宏定義,具體宏定義如下:
存儲(chǔ)模塊控制塊信息:存儲(chǔ)所有模塊控制塊信息,通過定義一個(gè)全局?jǐn)?shù)組來存儲(chǔ)系統(tǒng)所有模塊的信息,全局?jǐn)?shù)組定義如下:
static mm_module_t gs_module[MDL_MAX_MODULE_NUM];
模塊信息的填寫:在mm_read_cfg()內(nèi)部函數(shù)中,為所有需要運(yùn)行的模塊填寫模塊信息。
分級(jí)運(yùn)行模塊:按照0~8分級(jí)啟動(dòng),0級(jí)最先啟動(dòng),以此類推;為解決啟動(dòng)時(shí)模塊之間依賴問題,將啟動(dòng)分為八個(gè)等級(jí)。按系統(tǒng)啟動(dòng)順序需求,依次啟動(dòng)各模塊。
進(jìn)一步的,所述的模塊狀態(tài)監(jiān)測(cè)包括獲取被監(jiān)測(cè)模塊信息、創(chuàng)建監(jiān)測(cè)任務(wù)、發(fā)送測(cè)試激活消息、啟動(dòng)定時(shí)、判斷被監(jiān)測(cè)模塊狀態(tài)、重啟模塊。如關(guān)鍵模塊運(yùn)行過程中進(jìn)入不能提供服務(wù)的狀態(tài)(模塊掛死),簡(jiǎn)單起見,模塊管理可以選擇重啟系統(tǒng)。由于模塊狀態(tài)監(jiān)測(cè)是基于模塊中的任務(wù),考慮到一個(gè)模塊可功能存在多個(gè)任務(wù),因此要求應(yīng)用模塊在啟動(dòng)后,需要為自身管理的任務(wù)向模塊狀態(tài)監(jiān)測(cè)進(jìn)行注冊(cè)。如圖2、圖3所示,模塊狀態(tài)監(jiān)測(cè)的實(shí)現(xiàn),通過啟動(dòng)一個(gè)獨(dú)立的任務(wù),新建一個(gè)接收消息隊(duì)列,向被監(jiān)測(cè)模塊發(fā)送測(cè)試激活消息。監(jiān)測(cè)任務(wù)發(fā)送完激活消息ACTIVITY_TEST后,立即啟動(dòng)一個(gè)定時(shí)器,當(dāng)定時(shí)器超時(shí),將調(diào)用回調(diào)函數(shù)讀取接收消息隊(duì)列中所有消息,如所有被測(cè)試模塊均在規(guī)定時(shí)間內(nèi)回復(fù)了響應(yīng)激活消息ACTIVITY_OK,則表明系統(tǒng)正常;若接收消息隊(duì)列中缺失相應(yīng)的被監(jiān)測(cè)模塊響應(yīng)消息,模塊監(jiān)測(cè)任務(wù)將采取相應(yīng)的處理措施,即重啟系統(tǒng)。監(jiān)測(cè)作為一個(gè)獨(dú)立的任務(wù),與被監(jiān)測(cè)模塊一樣,具備模塊的一般特性,如啟動(dòng)函數(shù)、模塊ID、模塊名稱等,所以監(jiān)測(cè)模塊與被監(jiān)測(cè)模塊間的心跳與回復(fù)消息通訊就可以使用消息分發(fā)機(jī)制完成。
如圖4所示,為模塊監(jiān)測(cè)狀態(tài)判斷流程圖,定時(shí)器回調(diào)函數(shù)用于驗(yàn)證被監(jiān)測(cè)模塊是否存活,當(dāng)收到模塊響應(yīng)消息后,建立新的定時(shí)器,在指定時(shí)間內(nèi)再次向模塊發(fā)送激活測(cè)試消息;當(dāng)未收到模塊響應(yīng)消息時(shí),表明被測(cè)試模塊可能出現(xiàn)故障,回調(diào)函數(shù)應(yīng)完成系統(tǒng)重啟功能。重發(fā)定時(shí)器超時(shí)后,回調(diào)函數(shù)向所有模塊重發(fā)激活消息,之后關(guān)閉重發(fā)定時(shí)器,并啟動(dòng)一個(gè)新的激活定時(shí)器。
進(jìn)一步的,所述的公共框架層還包括基本數(shù)據(jù)結(jié)構(gòu)封裝;所述的基本數(shù)據(jù)結(jié)構(gòu)封裝包括鏈表clink封裝、哈希表chash封裝、樹ctree封裝。
如哈希表chash封裝中,通過直接定址法、質(zhì)數(shù)取余法、平方取中法、折疊法構(gòu)建哈希函數(shù),盡可能地使任意一組關(guān)鍵字的哈希地址均勻地分布在整個(gè)地址空間中,即用任意關(guān)鍵字作為哈希函數(shù)的自變量其計(jì)算結(jié)果隨機(jī)分布,以便減少?zèng)_突的發(fā)生可能性。并通過開放定址法、鏈地址法、再哈希法、溢出區(qū)法解決沖突
開放定址法,當(dāng)發(fā)生沖突時(shí),在沖突位置的前后附近尋找可以存放記錄的空閑單元。用此法解決沖突,要產(chǎn)生一個(gè)探測(cè)序列,沿著此序列去尋找可以存放記錄的空閑單元。最簡(jiǎn)單的探測(cè)序列產(chǎn)生方法是進(jìn)行線性探測(cè),即當(dāng)發(fā)生沖突時(shí),從發(fā)生沖突的存儲(chǔ)位置的下一個(gè)存儲(chǔ)位置開始依次順序探測(cè)空閑單元。
鏈地址法,將所有關(guān)鍵字是同義詞的記錄鏈接成一個(gè)線性鏈表,將其鏈頭鏈接在由哈希函數(shù)確定的哈希地址所指示的存儲(chǔ)單元中。
再哈希法,當(dāng)發(fā)生沖突時(shí),用另一個(gè)哈希函數(shù)再計(jì)算另一個(gè)哈希地址,如果再發(fā)生沖突,再使用另一個(gè)哈希函數(shù),直至不發(fā)生沖突為止。這種方法要求預(yù)先要設(shè)置一個(gè)哈希函數(shù)的序列。
溢出區(qū)法,除基本的存儲(chǔ)區(qū)外(稱為基本表),另外建立一個(gè)公共溢出區(qū)(稱為溢出表),當(dāng)發(fā)生沖突時(shí),記錄可以存入這個(gè)公共溢出區(qū)。
哈希表的查找過程與哈希表的構(gòu)造過程基本一致,對(duì)于給定的關(guān)鍵字值k,按照建表時(shí)設(shè)定的哈希函數(shù)求得哈希地址;若哈希地址所指位置已有記錄,并且其關(guān)鍵字值不等于給定值k,則根據(jù)建表時(shí)設(shè)定的沖突處理方法求得同義詞的下一地址,直到求得的哈希地址所指位置為空閑或其中記錄的關(guān)鍵字值等于給定值k為止;如果求得的哈希地址對(duì)應(yīng)的內(nèi)存空間為空閑,則查找失?。蝗绻蟮玫墓5刂穼?duì)應(yīng)的內(nèi)存空間中的記錄關(guān)鍵字值等于給定值k,則查找成功。
上述查找過程可以描述如下:
(1)計(jì)算出給定關(guān)鍵字值對(duì)應(yīng)的哈希地址addr=H(k);
(2)while((addr中不空)&&(addr中關(guān)鍵字值?。絢))按沖突處理方法求得下一地址addr;
(3)如果(addr中為空),則查找失敗,返回失敗信息;
(4)否則查找成功,并返回地址addr;
在處理沖突方法相同的哈希表中,其平均查找時(shí)間,還依賴于哈希表的裝填因子,哈希表的裝填因子為:α=表中填入的記錄數(shù)/哈希表的長(zhǎng)度,裝填因子越小,表中填入的記錄就越少,發(fā)生沖突的可能性就會(huì)小,反之,表中已填入的記錄越多,再填充記錄時(shí),發(fā)生沖突的可能性就越大,則查找時(shí)進(jìn)行關(guān)鍵字的比較次數(shù)就越多。
樹ctree的封裝中,樹是n(n≥0)個(gè)節(jié)點(diǎn)的有限集合。若n=0,則稱為空樹;否則,有且僅有一個(gè)特定的節(jié)點(diǎn)被稱為根,當(dāng)n>1時(shí),其余節(jié)點(diǎn)被分成m(m>0)個(gè)互不相交的子集T1,T2,...,Tm,每個(gè)子集又是一棵樹。由此可以看出,樹的定義是遞歸。節(jié)點(diǎn),數(shù)據(jù)元素的內(nèi)容及其指向其子樹根的分支統(tǒng)稱為節(jié)點(diǎn)。
節(jié)點(diǎn)的度,節(jié)點(diǎn)的分支數(shù)。
終端節(jié)點(diǎn)(葉子),度為0的節(jié)點(diǎn)。
非終端節(jié)點(diǎn),度不為0的節(jié)點(diǎn)。
節(jié)點(diǎn)的層次,樹中根節(jié)點(diǎn)的層次為1,根節(jié)點(diǎn)子樹的根為第2層,以此類推。
樹的度,樹中所有節(jié)點(diǎn)度的最大值。
樹的深度,樹中所有節(jié)點(diǎn)層次的最大值。
有序樹、無序樹,如果樹中每棵子樹從左向右的排列擁有一定的順序,不得互換,則稱為有序樹,否則稱為無序樹。
森林,是m(m≥0)棵互不相交的樹的集合。
在樹結(jié)構(gòu)中,節(jié)點(diǎn)之間的關(guān)系又可以用家族關(guān)系描述,定義如下:
孩子、雙親節(jié)點(diǎn)子樹的根稱為這個(gè)節(jié)點(diǎn)的孩子,而這個(gè)節(jié)點(diǎn)又被稱為孩子的雙親。
子孫,以某節(jié)點(diǎn)為根的子樹中的所有節(jié)點(diǎn)都被稱為是該節(jié)點(diǎn)的子孫。
祖先,從根節(jié)點(diǎn)到該節(jié)點(diǎn)路徑上的所有節(jié)點(diǎn)。
兄弟,同一個(gè)雙親的孩子之間互為兄弟。
堂兄弟,雙親在同一層的節(jié)點(diǎn)互為堂兄弟。
進(jìn)一步的,所述的公共框架層還包括日志管理;所述的日志管理包括日志分級(jí)打印、日志文件存儲(chǔ)、日志文件備份。日志輸出采用第三方庫log4plus,并在此基礎(chǔ)上封裝了一層接口,按照級(jí)別通過文件方式輸出到應(yīng)用程序執(zhí)行目錄下。
進(jìn)一步的,所述的協(xié)議分發(fā)層包括消息分發(fā)機(jī)制、事件分發(fā)機(jī)制;所述的消息分發(fā)機(jī)制為一對(duì)一分發(fā);所述的事件分發(fā)機(jī)制為一對(duì)多分發(fā)。如圖5所示,為消息分發(fā)機(jī)制,模塊間消息根據(jù)模塊ID進(jìn)行一對(duì)一消息分發(fā),確保消息分發(fā)的準(zhǔn)確性。如圖6所示,為事件分發(fā)機(jī)制,多個(gè)模塊可能關(guān)注同一事件類型,一對(duì)多;通過各模塊向事件分發(fā)層注冊(cè)關(guān)注的事件ID號(hào)以及自身的回調(diào)函數(shù);事件分發(fā)層收到事件后,會(huì)根據(jù)注冊(cè)的事件ID,通過回調(diào)函數(shù)通知到響應(yīng)模塊。
進(jìn)一步的,所述的接口封裝層封裝有進(jìn)程內(nèi)/進(jìn)程間IPC通信接口、多任務(wù)管理接口、定時(shí)管理接口、時(shí)間管理接口、統(tǒng)一數(shù)據(jù)類型;所述的業(yè)務(wù)層包括應(yīng)用層與網(wǎng)管服務(wù);所述的驅(qū)動(dòng)層與所述的網(wǎng)管服務(wù)雙向通信,所述的應(yīng)用層與所述的網(wǎng)管服務(wù)雙向通信;所述的應(yīng)用層與所述的驅(qū)動(dòng)層通過所述的網(wǎng)管服務(wù)雙向交互??缙脚_(tái)系統(tǒng)API封裝,分別在Linux/Windows/Vxworks下實(shí)現(xiàn)了一套系統(tǒng)API功能,完美支持Linux/Windows/Vxworks操作系統(tǒng)
平臺(tái)無關(guān)系統(tǒng)API封裝:
1)進(jìn)程內(nèi)/進(jìn)程間IPC通信接口:消息隊(duì)列、命名管道、Socket套接字;
2)多任務(wù)管理接口:線程(任務(wù))的創(chuàng)建、銷毀等接口;
3)定時(shí)器管理接口:定時(shí)器創(chuàng)建、銷毀等接口;
4)時(shí)間管理接口:獲取當(dāng)前UTC時(shí)間、標(biāo)準(zhǔn)時(shí)間,時(shí)間轉(zhuǎn)換接口等;
5)統(tǒng)一類型定義:UINT8/16/32/64、INT8/16/32/64、IPV4ADDR;如下表
表1基于32位封裝平臺(tái)基本數(shù)據(jù)類型
本發(fā)明提供一種基于龍芯平臺(tái)的通信控制框架,包括基于龍芯的操作系統(tǒng)與硬件的通信控制架構(gòu);所述的通信控制架構(gòu)包括接口封裝層、驅(qū)動(dòng)層、公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層;所述的公共框架層管理通信響應(yīng)與處理指令機(jī)制;所述的業(yè)務(wù)層響應(yīng)所述的公共框架層指令;所述的業(yè)務(wù)層與所述的公共框架層通過所述的協(xié)議分發(fā)層進(jìn)行雙向數(shù)據(jù)交互;所述的接口封裝層分別對(duì)所述的公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層提供API接口;所述的接口封裝層接收所述的公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層傳輸?shù)臄?shù)據(jù);所述的公共框架層、協(xié)議分發(fā)層、業(yè)務(wù)層接收所述的接口封裝層傳輸源于所述的基于龍芯的操作系統(tǒng)與硬件中的數(shù)據(jù);所述的驅(qū)動(dòng)層為所述的業(yè)務(wù)層提供驅(qū)動(dòng)支持。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)如下:
1)模塊化、低耦合,框架采用模塊化設(shè)計(jì),模塊之間統(tǒng)一通過消息機(jī)制通信,低耦合特點(diǎn)也提高了系統(tǒng)的可擴(kuò)展性;
2)支持跨平臺(tái),通過宏將各種系統(tǒng)獨(dú)立的API隔離起來,形成對(duì)上統(tǒng)一的接口,完美支持Linux/Windows/Vxworks操作系統(tǒng);
3)可調(diào)試性,框架提供了包括基于log4cplus第三方庫的日志功能和調(diào)試手段,提高了問題定位的效率;
4)提供各種基礎(chǔ)服務(wù)和接口,如socket套接字、命名管道等IPC進(jìn)程間通訊機(jī)制;同時(shí)還封裝有基本數(shù)據(jù)結(jié)構(gòu)、定時(shí)器。
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非對(duì)本發(fā)明作任何形式上的限制;凡本行業(yè)的普通技術(shù)人員均可按說明書附圖所示和以上所述而順暢地實(shí)施本發(fā)明;但是,凡熟悉本專業(yè)的技術(shù)人員在不脫離本發(fā)明技術(shù)方案范圍內(nèi),利用以上所揭示的技術(shù)內(nèi)容而做出的些許更動(dòng)、修飾與演變的等同變化,均為本發(fā)明的等效實(shí)施例;同時(shí),凡依據(jù)本發(fā)明的實(shí)質(zhì)技術(shù)對(duì)以上實(shí)施例所作的任何等同變化的更動(dòng)、修飾與演變等,均仍屬于本發(fā)明的技術(shù)方案的保護(hù)范圍之內(nèi)。