網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的方法及裝置,涉及網(wǎng)絡(luò)操作系統(tǒng)開發(fā)技術(shù)領(lǐng)域。該方法包括:對(duì)網(wǎng)絡(luò)操作系統(tǒng)中的設(shè)備硬件進(jìn)行建模抽象,得到設(shè)備硬件模型;將設(shè)備硬件模型通過代碼解釋工具生成相關(guān)自動(dòng)代碼;將自動(dòng)代碼存儲(chǔ)于網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件內(nèi)并編譯通過,網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件在啟動(dòng)時(shí)加載已存儲(chǔ)的設(shè)備硬件模型文件,并為設(shè)備硬件模型創(chuàng)建一個(gè)模型數(shù)據(jù)庫;利用自動(dòng)代碼提供的set函數(shù)接口、notify函數(shù)接口,以及創(chuàng)建的模型數(shù)據(jù)庫,完成各業(yè)務(wù)對(duì)設(shè)備硬件模型的使用。本發(fā)明能使網(wǎng)絡(luò)操作系統(tǒng)的內(nèi)部開發(fā)與設(shè)備硬件驅(qū)動(dòng)的開發(fā)相分離,提升網(wǎng)絡(luò)操作系統(tǒng)適配新硬件的能力,縮短網(wǎng)絡(luò)操作系統(tǒng)的研發(fā)周期。
【專利說明】
網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的方法及裝置
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及網(wǎng)絡(luò)操作系統(tǒng)開發(fā)技術(shù)領(lǐng)域,具體來講是一種網(wǎng)絡(luò)操作系統(tǒng)中建立并 使用設(shè)備硬件模型的方法及裝置。
【背景技術(shù)】
[0002] 網(wǎng)絡(luò)操作系統(tǒng)開發(fā)的設(shè)計(jì)目標(biāo)是:希望開發(fā)出來的網(wǎng)絡(luò)操作系統(tǒng)是一個(gè)可以適配 不同產(chǎn)品系列中各種硬件的系統(tǒng),其開發(fā)內(nèi)容包括操作系統(tǒng)內(nèi)部的設(shè)計(jì)開發(fā)與設(shè)備硬件驅(qū) 動(dòng)的設(shè)計(jì)開發(fā)。設(shè)備硬件驅(qū)動(dòng)的設(shè)計(jì)開發(fā)的目標(biāo)是:希望某個(gè)新型的網(wǎng)絡(luò)操作系統(tǒng)在設(shè)計(jì) 開發(fā)設(shè)備硬件驅(qū)動(dòng)軟件時(shí)能盡量簡(jiǎn)化適配工作,即如何將設(shè)備硬件驅(qū)動(dòng)流程整合到網(wǎng)絡(luò)操 作系統(tǒng)內(nèi)部的工作盡量簡(jiǎn)化。
[0003] 而目前,網(wǎng)絡(luò)操作系統(tǒng)開發(fā)過程中設(shè)備管理層面通常沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)過程去 遵循,這導(dǎo)致開發(fā)不同的設(shè)備硬件驅(qū)動(dòng)時(shí),會(huì)分別設(shè)計(jì)出不同的開發(fā)流程,需要網(wǎng)絡(luò)操作系 統(tǒng)內(nèi)部的研發(fā)人員和設(shè)備硬件驅(qū)動(dòng)的研發(fā)人員同時(shí)進(jìn)行設(shè)計(jì)和開發(fā)工作。這種將網(wǎng)絡(luò)操作 系統(tǒng)內(nèi)部設(shè)計(jì)與設(shè)備硬件驅(qū)動(dòng)設(shè)計(jì)進(jìn)行綁定開發(fā)的方式,嚴(yán)重限制了網(wǎng)絡(luò)操作系統(tǒng)適配新 硬件的能力且延長了網(wǎng)絡(luò)操作系統(tǒng)的研發(fā)周期。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的是為了克服上述【背景技術(shù)】的不足,提供一種網(wǎng)絡(luò)操作系統(tǒng)中建立并 使用設(shè)備硬件模型的方法及裝置,通過將設(shè)備硬件抽象為設(shè)備硬件模型,該設(shè)備硬件模型 能作為中間橋梁連接網(wǎng)絡(luò)操作系統(tǒng)與設(shè)備硬件驅(qū)動(dòng),從而使得網(wǎng)絡(luò)操作系統(tǒng)的內(nèi)部開發(fā)與 設(shè)備硬件驅(qū)動(dòng)的開發(fā)相分離,提升了網(wǎng)絡(luò)操作系統(tǒng)適配新硬件的能力,縮短了網(wǎng)絡(luò)操作系 統(tǒng)的研發(fā)周期。
[0005] 為達(dá)到以上目的,本發(fā)明采取的技術(shù)方案是:提供一種網(wǎng)絡(luò)操作系統(tǒng)中建立并使 用設(shè)備硬件模型的方法,包括以下步驟:
[0006] 步驟S1:對(duì)網(wǎng)絡(luò)操作系統(tǒng)中的設(shè)備硬件進(jìn)行建模抽象,得到設(shè)備硬件模型;
[0007] 步驟S2:將設(shè)備硬件模型通過代碼解釋工具生成相關(guān)自動(dòng)代碼,該自動(dòng)代碼包括: 與各設(shè)備元器件對(duì)應(yīng)的結(jié)構(gòu)體定義、set函數(shù)接口定義,以及notify函數(shù)接口定義;
[0008] 步驟S3:將自動(dòng)代碼存儲(chǔ)于網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件內(nèi)并編譯通過;將設(shè)備硬件模 型文件存儲(chǔ)于網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件內(nèi),網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件在啟動(dòng)時(shí)加載設(shè)備硬件模 型文件,并為設(shè)備硬件模型創(chuàng)建一個(gè)模型數(shù)據(jù)庫;
[0009]步驟S4:利用自動(dòng)代碼提供的set函數(shù)接口、notify函數(shù)接口,以及創(chuàng)建的模型數(shù) 據(jù)庫,完成各業(yè)務(wù)對(duì)設(shè)備硬件模型的使用。
[0010]在上述技術(shù)方案的基礎(chǔ)上,所述設(shè)備硬件模型的內(nèi)容包括所有設(shè)備元器件的類信 息,每個(gè)設(shè)備元器件的類信息包含以下類成員內(nèi)容:設(shè)備元器件名稱、設(shè)備元器件關(guān)鍵屬性 描述、設(shè)備元器件的類對(duì)應(yīng)的結(jié)構(gòu)體成員信息。
[0011]在上述技術(shù)方案的基礎(chǔ)上,步驟S1具體包括以下操作:
[0012] 步驟S101:定義設(shè)備元器件的類名稱,該類名稱用于在模型文件內(nèi)唯一標(biāo)識(shí)一個(gè) 設(shè)備元器件,并在生成代碼過程中以此名稱做關(guān)鍵字進(jìn)行結(jié)構(gòu)體命名和函數(shù)命名;
[0013] 步驟S102:設(shè)置類成員屬性值,該屬性值為默認(rèn)值設(shè)置或者在系統(tǒng)運(yùn)行中通過相 應(yīng)的設(shè)置接口函數(shù)進(jìn)行修改設(shè)置;
[0014] 步驟S103:定義類成員的數(shù)據(jù)類型名稱,該名稱對(duì)應(yīng)編程語言的數(shù)據(jù)類型;
[0015]步驟S104:設(shè)置類成員在內(nèi)存中占用的長度。
[0016]在上述技術(shù)方案的基礎(chǔ)上,步驟S2中所述將設(shè)備硬件模型通過代碼解釋工具生成 相關(guān)自動(dòng)代碼,包括以下操作:代碼解釋工具對(duì)設(shè)備硬件模型文件進(jìn)行一套C語言化的轉(zhuǎn) 換,將每個(gè)設(shè)備元器件的類對(duì)應(yīng)一個(gè)結(jié)構(gòu)體名,將設(shè)備元器件的類的屬性對(duì)應(yīng)結(jié)構(gòu)體的成 員變量。
[0017]在上述技術(shù)方案的基礎(chǔ)上,步驟S4具體操作如下:
[0018]步驟S401:當(dāng)有業(yè)務(wù)修改了自動(dòng)代碼中的某個(gè)結(jié)構(gòu)體時(shí),通過調(diào)用該結(jié)構(gòu)體對(duì)應(yīng) 的set函數(shù)接口,向模型數(shù)據(jù)庫發(fā)送TLV消息格式的修改消息;
[0019]步驟S402:模型數(shù)據(jù)庫在接收到修改消息后,檢查有哪些其他業(yè)務(wù)與該結(jié)構(gòu)體相 關(guān),向相關(guān)的其他業(yè)務(wù)發(fā)送有關(guān)該結(jié)構(gòu)體的變化消息;
[0020]步驟S403:收到結(jié)構(gòu)體變化消息的其他業(yè)務(wù),通過noti fy函數(shù)接口回調(diào)模型數(shù)據(jù) 庫來接收該結(jié)構(gòu)體的變化。
[0021 ]在上述技術(shù)方案的基礎(chǔ)上,其特征在于:若存在重復(fù)的設(shè)備元器件時(shí),步驟S1中對(duì) 網(wǎng)絡(luò)操作系統(tǒng)中的設(shè)備硬件進(jìn)行建模抽象時(shí),通過添加 inst實(shí)例屬性做為關(guān)鍵字,對(duì)重復(fù) 的設(shè)備元器件進(jìn)行索引標(biāo)識(shí)。
[0022] 本發(fā)明還提供一種基于上述方法的網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的 裝置,包括模型建立單元、自動(dòng)代碼生成單元、代碼編譯與模型加載單元、模型使用單元;
[0023] 所述模型建立單元用于:對(duì)網(wǎng)絡(luò)操作系統(tǒng)中的設(shè)備硬件進(jìn)行建模抽象,得到設(shè)備 硬件模型;
[0024] 所述自動(dòng)代碼生成單元用于:將設(shè)備硬件模型通過代碼解釋工具生成相關(guān)自動(dòng)代 碼,該自動(dòng)代碼包括:與各設(shè)備元器件對(duì)應(yīng)的結(jié)構(gòu)體定義、set函數(shù)接口定義,以及notify函 數(shù)接口定義;
[0025] 所述代碼編譯與模型加載單元用于:將自動(dòng)代碼存儲(chǔ)于網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件內(nèi) 并編譯通過;將設(shè)備硬件模型文件存儲(chǔ)于網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件內(nèi),使網(wǎng)絡(luò)操作系統(tǒng)平臺(tái) 軟件啟動(dòng)時(shí)加載設(shè)備硬件模型文件,并為設(shè)備硬件模型創(chuàng)建一個(gè)模型數(shù)據(jù)庫;
[0026] 所述模型使用單元用于:利用自動(dòng)代碼提供的set函數(shù)接口、notify函數(shù)接口,以 及創(chuàng)建的模型數(shù)據(jù)庫,完成各業(yè)務(wù)對(duì)設(shè)備硬件模型的使用。
[0027] 在上述技術(shù)方案的基礎(chǔ)上,所述模型建立單元包括類名稱定義子單元、屬性值設(shè) 置子單元、數(shù)據(jù)類型名稱定義子單元和長度設(shè)置子單元;所述類名稱定義子單元用于:定義 設(shè)備元器件的類名稱,該類名稱用于在模型文件內(nèi)唯一標(biāo)識(shí)一個(gè)設(shè)備元器件,并在生成代 碼過程中以此名稱做關(guān)鍵字進(jìn)行結(jié)構(gòu)體命名和函數(shù)命名;所述屬性值設(shè)置子單元用于:設(shè) 置類成員屬性值;所述數(shù)據(jù)類型名稱定義子單元用于:定義類成員的數(shù)據(jù)類型名稱,該名稱 對(duì)應(yīng)編程語言的數(shù)據(jù)類型;所述長度設(shè)置子單元用于:設(shè)置類成員在內(nèi)存中占用的長度。
[0028] 在上述技術(shù)方案的基礎(chǔ)上,所述自動(dòng)代碼生成單元將設(shè)備硬件模型通過代碼解釋 工具生成相關(guān)自動(dòng)代碼的具體過程為:自動(dòng)代碼生成單元通過代碼解釋工具對(duì)設(shè)備硬件模 型文件進(jìn)行一套C語言化的轉(zhuǎn)換,將每個(gè)設(shè)備元器件的類對(duì)應(yīng)一個(gè)結(jié)構(gòu)體名,將設(shè)備元器件 的類的屬性對(duì)應(yīng)結(jié)構(gòu)體的成員變量。
[0029] 在上述技術(shù)方案的基礎(chǔ)上,所述模型使用單元包括修改消息發(fā)送子單元、變化消 息發(fā)送子單元和變化接收子單元;所述修改消息發(fā)送子單元用于:當(dāng)有業(yè)務(wù)修改了自動(dòng)代 碼中的某個(gè)結(jié)構(gòu)體時(shí),通過調(diào)用該結(jié)構(gòu)體對(duì)應(yīng)的set函數(shù)接口,向模型數(shù)據(jù)庫發(fā)送TLV消息 格式的修改消息;所述變化消息發(fā)送子單元用于:在模型數(shù)據(jù)庫接收到修改消息后,檢查有 哪些其他業(yè)務(wù)與被修改的結(jié)構(gòu)體相關(guān),并向相關(guān)的其他業(yè)務(wù)發(fā)送有關(guān)該結(jié)構(gòu)體的變化消 息;所述變化接收子單元用于:使收到結(jié)構(gòu)體變化消息的其他業(yè)務(wù),通過no t i f y函數(shù)接口回 調(diào)模型數(shù)據(jù)庫來接收被修改的結(jié)構(gòu)體的變化。
[0030] 本發(fā)明的有益效果在于:
[0031] (1)本發(fā)明中,使用面向?qū)ο蟮脑O(shè)計(jì)方法將設(shè)備硬件和整體形態(tài)進(jìn)行抽象整理為 設(shè)備硬件模型,并將設(shè)備硬件模型通過代碼解釋工具生成相關(guān)自動(dòng)代碼,該自動(dòng)代碼不但 包含與各設(shè)備元器件對(duì)應(yīng)的結(jié)構(gòu)體定義,而且還包含各結(jié)構(gòu)體向模型數(shù)據(jù)庫提交消息的接 口(set函數(shù)接口),以及當(dāng)模型數(shù)據(jù)庫中結(jié)構(gòu)體的實(shí)例發(fā)生變化時(shí)業(yè)務(wù)回調(diào)模型數(shù)據(jù)庫的 通知回調(diào)接口(notify函數(shù)接口);網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件加載設(shè)備硬件模型文件后,會(huì)為 設(shè)備硬件模型創(chuàng)建模型數(shù)據(jù)庫;利用自動(dòng)代碼提供的set函數(shù)接口、notify函數(shù)接口,以及 創(chuàng)建的模型數(shù)據(jù)庫,可以方便快速的完成各業(yè)務(wù)(網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)業(yè)務(wù)、設(shè)備硬件驅(qū)動(dòng)業(yè) 務(wù))對(duì)設(shè)備硬件模型的使用。
[0032] 與現(xiàn)有技術(shù)相比,本發(fā)明能實(shí)現(xiàn)以設(shè)備硬件模型為中間橋梁連接網(wǎng)絡(luò)操作系統(tǒng)與 硬件驅(qū)動(dòng),從而使得網(wǎng)絡(luò)操作系統(tǒng)的內(nèi)部開發(fā)與設(shè)備硬件驅(qū)動(dòng)的開發(fā)相分離,二者可分別 進(jìn)行,將網(wǎng)絡(luò)操作系統(tǒng)內(nèi)部和設(shè)備硬件驅(qū)動(dòng)視為兩個(gè)點(diǎn),缺少任一點(diǎn)都不影響另一點(diǎn)的設(shè) 計(jì)開發(fā)。設(shè)備硬件驅(qū)動(dòng)不需要重復(fù)編寫同一類型的代碼,相同的代碼邏輯僅因模型命名的 不同而導(dǎo)致代碼中變量不同這部分代碼將由工具根據(jù)模型進(jìn)行解析生成,不需要手動(dòng)編 寫,縮短了網(wǎng)絡(luò)操作系統(tǒng)的研發(fā)周期;而且設(shè)備硬件模型的可移植性強(qiáng),通用性強(qiáng),可提升 網(wǎng)絡(luò)操作系統(tǒng)適配新硬件的能力。
[0033] (2)本發(fā)明步驟S4的詳細(xì)步驟中,通過調(diào)用結(jié)構(gòu)體對(duì)應(yīng)的set函數(shù)接口,向模型數(shù) 據(jù)庫發(fā)送基于TLV消息格式的修改消息。TLV(type+length+value)消息格式是一種靈活可 變的消息打包方式,不要求每次消息報(bào)文要格式相同,其中type由兩部分組成,分別是前半 部的類索引和后半部分成員索引構(gòu)成,因此,模型數(shù)據(jù)庫在接收到tlv消息格式的修改消息 后,可根據(jù)type定位到具體內(nèi)容,靈活方便。
[0034] (3)本發(fā)明考慮到有的設(shè)備元器件在一塊板卡上有多個(gè)的問題,因此,為了對(duì)重復(fù) 的設(shè)備元器件進(jìn)行進(jìn)一步區(qū)分,本發(fā)明通過在建模抽象時(shí)添加 inst實(shí)例屬性做為關(guān)鍵字, 來對(duì)重復(fù)的設(shè)備元器件進(jìn)行索引標(biāo)識(shí),不但識(shí)別效果好,而且滿足了各種板卡的使用需求, 實(shí)用性尚。
【附圖說明】
[0035] 圖1為本發(fā)明實(shí)施例中網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的方法的流程 圖;
[0036]圖2為路由器設(shè)備主控板的內(nèi)部結(jié)構(gòu)框圖;
[0037]圖3為步驟S1的具體流程圖;
[0038]圖4為步驟S4的具體流程圖;
[0039] 圖5為本發(fā)明實(shí)施例中網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的裝置的結(jié)構(gòu)框 圖。
【具體實(shí)施方式】
[0040] 下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述。
[0041] 參見圖1所示,本發(fā)明實(shí)施例提供一種網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型 的方法,包括以下步驟:
[0042]步驟S1、模型的建立:對(duì)網(wǎng)絡(luò)操作系統(tǒng)中的設(shè)備硬件進(jìn)行建模抽象,得到設(shè)備硬件 模型。
[0043]可以理解的是,本實(shí)施例中,在進(jìn)行設(shè)備硬件建模抽象時(shí),是以板卡為單元,對(duì)板 卡內(nèi)所有設(shè)備元器件進(jìn)行抽象,得到的設(shè)備硬件模型為XML格式文件,并以板卡名稱進(jìn)行命 名。其中,設(shè)備硬件模型的內(nèi)容包括所有設(shè)備元器件的類信息,每個(gè)設(shè)備元器件的類信息包 含以下類成員內(nèi)容:設(shè)備元器件名稱、設(shè)備元器件關(guān)鍵屬性描述、設(shè)備元器件的類對(duì)應(yīng)的結(jié) 構(gòu)體成員信息。
[0044] 例如,以一塊路由器設(shè)備主控板為例,如圖2所示,該主控板內(nèi)的設(shè)備元器件包括 CPU、控制網(wǎng)口和串行接口,則該設(shè)備硬件模型可保存為"主控板.xml",其相應(yīng)的模型內(nèi)容 如下: 〈board name=" 彳板"〉 <class name="cpu"> 〈member name=:i'tdp" value="35" type="UINT16" len^"2" iskey="false"/> .〈member. name='M2 cache" value="512" type=--"uns[T16" len="2" iskey="false'V> 〈member name.=." core". value="2" typ;e:="UINT8" len="l".
[0045] iskey="false"/> <member name="frequency" vtlue="8Q0!' type="UINT16" 1611="2" iskey="falsei'/> </class> <class name="etherne!:"> <member name="speed" value-'100" type="UINT16" len="2" iskey="fabe7> </class> <class name="console"> 〈member name="bit rate.1:' val.ue=''56700" type.=!'UINT32"
[0046] len="4" iskey="false7> </class> 乂....... </board>
[0047] 進(jìn)一步地,由于抽象建模的過程基本上是一種滿足TLV(Type,Length,Value)格式 的一組描述,通過這組描述生成編程語言可識(shí)別的中間配置文件,即模型文件。因此,如圖3 所示,實(shí)際操作時(shí),步驟S1的抽象建模過程具體包括以下操作:
[0048]步驟S101:定義設(shè)備元器件的類名稱,該類名稱用于在模型文件內(nèi)唯一標(biāo)識(shí)一個(gè) 設(shè)備元器件,并在生成代碼過程中(即步驟S2中)以此名稱做關(guān)鍵字進(jìn)行結(jié)構(gòu)體命名和函數(shù) 命名。
[0049] 步驟S102:設(shè)置類成員屬性值。模型中的屬性賦值通常是該屬性的默認(rèn)值,對(duì)于設(shè) 備元器件固定不變的屬性值,在模型加載時(shí)讀取,可用于業(yè)務(wù)(網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)業(yè)務(wù)、設(shè) 備硬件驅(qū)動(dòng)業(yè)務(wù))查詢;對(duì)于設(shè)備元器件可變化的屬性值可以在系統(tǒng)運(yùn)行中通過相應(yīng)的設(shè) 置接口函數(shù)進(jìn)行修改。
[0050] 步驟S103:定義類成員的數(shù)據(jù)類型名稱,對(duì)應(yīng)編程語言的數(shù)據(jù)類型。
[0051]步驟S104:設(shè)置類成員在內(nèi)存中占用的長度。
[0052]步驟S2、自動(dòng)代碼的生成:將設(shè)備硬件模型通過代碼解釋工具生成相關(guān)自動(dòng)代碼, 自動(dòng)代碼包括與各設(shè)備元器件對(duì)應(yīng)的結(jié)構(gòu)體定義、各結(jié)構(gòu)體向模型數(shù)據(jù)庫提交消息的接口 (set函數(shù)接口)定義,以及當(dāng)模型數(shù)據(jù)庫中結(jié)構(gòu)體的實(shí)例發(fā)生變化時(shí)業(yè)務(wù)回調(diào)模型數(shù)據(jù)庫 的通知回調(diào)接口(notify函數(shù)接口)定義。
[0053]具體操作時(shí),步驟S2中所述將設(shè)備硬件模型通過代碼解釋工具生成相關(guān)自動(dòng)代 碼,包括以下操作:代碼解釋工具對(duì)設(shè)備硬件模型文件進(jìn)行一套C語言化的轉(zhuǎn)換,將每個(gè)設(shè) 備元器件的類對(duì)應(yīng)一個(gè)結(jié)構(gòu)體名,將設(shè)備元器件的類的屬性對(duì)應(yīng)結(jié)構(gòu)體的成員變量。此處, 還是以上述路由器設(shè)備主控板為例,對(duì)該主控板模型進(jìn)行C語言轉(zhuǎn)換后生成的相關(guān)自動(dòng)代 碼如下: struct epu { UINT16tdp; UINT16 12_cache; UINT8 core ; UINT16 frequency ; };
[0054] struct ethernet UINT16 speed; struct console { UINT32 bit-rate; };
[0055] 步驟S3、自動(dòng)代碼的編譯與模型的加載:將自動(dòng)代碼拷貝到網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟 件的項(xiàng)目工程目錄內(nèi),修改編譯配置使代碼編譯通過;將設(shè)備硬件模型文件放在網(wǎng)絡(luò)操作 系統(tǒng)平臺(tái)軟件指定的資源目錄文件夾內(nèi),網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件在啟動(dòng)時(shí)會(huì)加載設(shè)備硬件 模型文件,并為設(shè)備硬件模型創(chuàng)建一個(gè)模型數(shù)據(jù)庫。
[0056]步驟S4、模型的使用:利用自動(dòng)代碼提供的set函數(shù)接口、notify函數(shù)接口,以及創(chuàng) 建的模型數(shù)據(jù)庫,完成各業(yè)務(wù)(網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)業(yè)務(wù)、設(shè)備硬件驅(qū)動(dòng)業(yè)務(wù))對(duì)設(shè)備硬件模 型的使用,實(shí)現(xiàn)以設(shè)備硬件模型為中間橋梁連接網(wǎng)絡(luò)操作系統(tǒng)與硬件驅(qū)動(dòng),從而使得網(wǎng)絡(luò) 操作系統(tǒng)的內(nèi)部開發(fā)與設(shè)備硬件驅(qū)動(dòng)的開發(fā)相分尚。
[0057]實(shí)際操作時(shí),如圖4所示,步驟S4具體包括以下操作:
[0058]步驟S401:當(dāng)有業(yè)務(wù)(網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)業(yè)務(wù)或設(shè)備硬件驅(qū)動(dòng)業(yè)務(wù))修改了自動(dòng)代 碼中的某個(gè)結(jié)構(gòu)體時(shí),通過調(diào)用該結(jié)構(gòu)體對(duì)應(yīng)的set函數(shù)接口,向模型數(shù)據(jù)庫發(fā)送修改消 息;可以理解的是,調(diào)用set函數(shù)接口的方法本身是一個(gè)消息發(fā)送的封裝過程,也就是將業(yè) 務(wù)對(duì)結(jié)構(gòu)體的修改轉(zhuǎn)換為通用的TLV消息格式發(fā)送至模型數(shù)據(jù)庫。TLV(type + length+ value)消息格式是一種靈活可變的消息打包方式,不要求每次消息報(bào)文要格式相同,其中 type由兩部分組成,分別是前半部的類索引和后半部分成員索引構(gòu)成,因此模型數(shù)據(jù)庫在 接收到tlv消息格式的修改消息后,可以根據(jù)type定位到具體內(nèi)容。
[0059]步驟S402:模型數(shù)據(jù)庫在接收到修改消息后,檢查有哪些其他業(yè)務(wù)(除做出修改的 業(yè)務(wù)之外的業(yè)務(wù))與該結(jié)構(gòu)體相關(guān),向相關(guān)的其他業(yè)務(wù)發(fā)送有關(guān)該結(jié)構(gòu)體的變化消息。
[0060]步驟S403:收到結(jié)構(gòu)體變化消息的其他業(yè)務(wù),通過noti fy函數(shù)接口回調(diào)模型數(shù)據(jù) 庫來接收該結(jié)構(gòu)體的變化。
[0061]另外,在上述技術(shù)方案的基礎(chǔ)上,考慮到有的設(shè)備元器件在一塊板卡上有多個(gè),因 此,為了對(duì)相同種類的設(shè)備元器件進(jìn)行進(jìn)一步區(qū)分,需要在進(jìn)行建模抽象時(shí)通過添加實(shí)例 屬性(inst)做為關(guān)鍵字對(duì)重復(fù)的設(shè)備元器件進(jìn)行索引標(biāo)識(shí),同樣,在生成相關(guān)自動(dòng)代碼時(shí) 也需要對(duì)添加的實(shí)例屬性進(jìn)行C語言化的轉(zhuǎn)換。
[0062] 例如,在路由器業(yè)務(wù)板上就存在有多個(gè)ge_interface接口,則對(duì)該業(yè)務(wù)板進(jìn)行建 模抽象時(shí),設(shè)備硬件模型中g(shù)e_interface接口相應(yīng)的內(nèi)容如下: <class name="ge_interface"> <meinber name="inst" value-tvpe=" UI NT 16" len=,'2" iskey="true"/>
[0063] <rnember name="mtu" value=" 1460" type="UrNT16" 1en=!,2" iskey='!false"/> </class>
[0064] 生成相關(guān)自動(dòng)代碼時(shí),相關(guān)的代碼內(nèi)容如下: struct ge_interface {:
[0065] UINT32 inst; UINT16mtu: h
[0066] 參見圖5所示,本發(fā)明實(shí)施例還提供一種基于上述方法的網(wǎng)絡(luò)操作系統(tǒng)中建立并 使用設(shè)備硬件模型的裝置,該裝置包括模型建立單元、自動(dòng)代碼生成單元、代碼編譯與模型 加載單元、模型使用單元。
[0067] 模型建立單元用于:對(duì)網(wǎng)絡(luò)操作系統(tǒng)中的設(shè)備硬件進(jìn)行建模抽象,得到設(shè)備硬件 模型。
[0068]其中,所述模型建立單元包括類名稱定義子單元、屬性值設(shè)置子單元、數(shù)據(jù)類型名 稱定義子單元和長度設(shè)置子單元。所述類名稱定義子單元用于:定義設(shè)備元器件的類名稱, 該類名稱用于在模型文件內(nèi)唯一標(biāo)識(shí)一個(gè)設(shè)備元器件,并在生成代碼過程中以此名稱做關(guān) 鍵字進(jìn)行結(jié)構(gòu)體命名和函數(shù)命名;所述屬性值設(shè)置子單元用于:設(shè)置類成員屬性值;所述數(shù) 據(jù)類型名稱定義子單元用于:定義類成員的數(shù)據(jù)類型名稱,該名稱對(duì)應(yīng)編程語言的數(shù)據(jù)類 型;所述長度設(shè)置子單元用于:設(shè)置類成員在內(nèi)存中占用的長度。
[0069]自動(dòng)代碼生成單元用于:將設(shè)備硬件模型通過代碼解釋工具生成相關(guān)自動(dòng)代碼, 該自動(dòng)代碼包括:與各設(shè)備元器件對(duì)應(yīng)的結(jié)構(gòu)體定義、set函數(shù)接口定義,以及notify函數(shù) 接口定義。
[0070] 其中,所述自動(dòng)代碼生成單元將設(shè)備硬件模型通過代碼解釋工具生成相關(guān)自動(dòng)代 碼的具體過程為:自動(dòng)代碼生成單元通過代碼解釋工具對(duì)設(shè)備硬件模型文件進(jìn)行一套C語 言化的轉(zhuǎn)換,將每個(gè)設(shè)備元器件的類對(duì)應(yīng)一個(gè)結(jié)構(gòu)體名,將設(shè)備元器件的類的屬性對(duì)應(yīng)結(jié) 構(gòu)體的成員變量。
[0071] 代碼編譯與模型加載單元用于:將自動(dòng)代碼存儲(chǔ)于網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件內(nèi)并編 譯通過;將設(shè)備硬件模型文件存儲(chǔ)于網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件內(nèi),使網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件 啟動(dòng)時(shí)加載設(shè)備硬件模型文件,并為設(shè)備硬件模型創(chuàng)建一個(gè)模型數(shù)據(jù)庫。
[0072] 模型使用單元用于:利用自動(dòng)代碼提供的set函數(shù)接口、notify函數(shù)接口,以及創(chuàng) 建的模型數(shù)據(jù)庫,完成各業(yè)務(wù)(網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)業(yè)務(wù)、設(shè)備硬件驅(qū)動(dòng)業(yè)務(wù))對(duì)設(shè)備硬件模 型的使用。
[0073] 其中,所述模型使用單元包括修改消息發(fā)送子單元、變化消息發(fā)送子單元和變化 接收子單元。
[0074] 所述修改消息發(fā)送子單元用于:當(dāng)有業(yè)務(wù)(網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)業(yè)務(wù)或設(shè)備硬件驅(qū) 動(dòng)業(yè)務(wù))修改了自動(dòng)代碼中的某個(gè)結(jié)構(gòu)體時(shí),通過調(diào)用該結(jié)構(gòu)體對(duì)應(yīng)的set函數(shù)接口,向模 型數(shù)據(jù)庫發(fā)送修改消息;
[0075] 所述變化消息發(fā)送子單元用于:在模型數(shù)據(jù)庫接收到修改消息后,檢查有哪些其 他業(yè)務(wù)與被修改的結(jié)構(gòu)體相關(guān),并向相關(guān)的其他業(yè)務(wù)發(fā)送有關(guān)該結(jié)構(gòu)體的變化消息;
[0076] 所述變化接收子單元用于:使收到結(jié)構(gòu)體變化消息的其他業(yè)務(wù),通過notify函數(shù) 接口回調(diào)模型數(shù)據(jù)庫來接收被修改的結(jié)構(gòu)體的變化。
[0077] 本發(fā)明不局限于上述實(shí)施方式,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離 本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù) 范圍之內(nèi)。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。
【主權(quán)項(xiàng)】
1. 一種網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的方法,其特征在于,包括以下步驟: 步驟SI:對(duì)網(wǎng)絡(luò)操作系統(tǒng)中的設(shè)備硬件進(jìn)行建模抽象,得到設(shè)備硬件模型; 步驟S2:將設(shè)備硬件模型通過代碼解釋工具生成相關(guān)自動(dòng)代碼,該自動(dòng)代碼包括:與各 設(shè)備元器件對(duì)應(yīng)的結(jié)構(gòu)體定義、set函數(shù)接口定義,以及notify函數(shù)接口定義; 步驟S3:將自動(dòng)代碼存儲(chǔ)于網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件內(nèi)并編譯通過;將設(shè)備硬件模型文 件存儲(chǔ)于網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件內(nèi),網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件在啟動(dòng)時(shí)加載設(shè)備硬件模型文 件,并為設(shè)備硬件模型創(chuàng)建一個(gè)模型數(shù)據(jù)庫; 步驟S4:利用自動(dòng)代碼提供的set函數(shù)接口、notify函數(shù)接口,以及創(chuàng)建的模型數(shù)據(jù)庫, 完成各業(yè)務(wù)對(duì)設(shè)備硬件模型的使用。2. 如權(quán)利要求1所述的網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的方法,其特征在于: 所述設(shè)備硬件模型的內(nèi)容包括所有設(shè)備元器件的類信息,每個(gè)設(shè)備元器件的類信息包含以 下類成員內(nèi)容:設(shè)備元器件名稱、設(shè)備元器件關(guān)鍵屬性描述、設(shè)備元器件的類對(duì)應(yīng)的結(jié)構(gòu)體 成員信息。3. 如權(quán)利要求1所述的網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的方法,其特征在于, 步驟Sl具體包括以下操作: 步驟S101:定義設(shè)備元器件的類名稱,該類名稱用于在模型文件內(nèi)唯一標(biāo)識(shí)一個(gè)設(shè)備 元器件,并在生成代碼過程中以此名稱做關(guān)鍵字進(jìn)行結(jié)構(gòu)體命名和函數(shù)命名; 步驟S102:設(shè)置類成員屬性值,該屬性值為默認(rèn)值設(shè)置或者在系統(tǒng)運(yùn)行中通過相應(yīng)的 設(shè)置接口函數(shù)進(jìn)行修改設(shè)置; 步驟S103:定義類成員的數(shù)據(jù)類型名稱,該名稱對(duì)應(yīng)編程語言的數(shù)據(jù)類型; 步驟S104:設(shè)置類成員在內(nèi)存中占用的長度。4. 如權(quán)利要求1所述的網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的方法,其特征在于: 步驟S2中所述將設(shè)備硬件模型通過代碼解釋工具生成相關(guān)自動(dòng)代碼,包括以下操作:代碼 解釋工具對(duì)設(shè)備硬件模型文件進(jìn)行一套C語言化的轉(zhuǎn)換,將每個(gè)設(shè)備元器件的類對(duì)應(yīng)一個(gè) 結(jié)構(gòu)體名,將設(shè)備元器件的類的屬性對(duì)應(yīng)結(jié)構(gòu)體的成員變量。5. 如權(quán)利要求1所述的網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的方法,其特征在于, 步驟S4具體操作如下: 步驟S401:當(dāng)有業(yè)務(wù)修改了自動(dòng)代碼中的某個(gè)結(jié)構(gòu)體時(shí),通過調(diào)用該結(jié)構(gòu)體對(duì)應(yīng)的set 函數(shù)接口,向模型數(shù)據(jù)庫發(fā)送TLV消息格式的修改消息; 步驟S402:模型數(shù)據(jù)庫在接收到修改消息后,檢查有哪些其他業(yè)務(wù)與該結(jié)構(gòu)體相關(guān),向 相關(guān)的其他業(yè)務(wù)發(fā)送有關(guān)該結(jié)構(gòu)體的變化消息; 步驟S403:收到結(jié)構(gòu)體變化消息的其他業(yè)務(wù),通過notify函數(shù)接口回調(diào)模型數(shù)據(jù)庫來 接收該結(jié)構(gòu)體的變化。6. 如權(quán)利要求1至5中任一項(xiàng)所述的網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的方法, 其特征在于:若存在重復(fù)的設(shè)備元器件時(shí),步驟Sl中對(duì)網(wǎng)絡(luò)操作系統(tǒng)中的設(shè)備硬件進(jìn)行建 模抽象時(shí),通過添加 inst實(shí)例屬性做為關(guān)鍵字,對(duì)重復(fù)的設(shè)備元器件進(jìn)行索引標(biāo)識(shí)。7. -種基于權(quán)利要求1所述方法的網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的裝置, 其特征在于:該裝置包括模型建立單元、自動(dòng)代碼生成單元、代碼編譯與模型加載單元、模 型使用單元; 所述模型建立單元用于:對(duì)網(wǎng)絡(luò)操作系統(tǒng)中的設(shè)備硬件進(jìn)行建模抽象,得到設(shè)備硬件 豐旲型; 所述自動(dòng)代碼生成單元用于:將設(shè)備硬件模型通過代碼解釋工具生成相關(guān)自動(dòng)代碼, 該自動(dòng)代碼包括:與各設(shè)備元器件對(duì)應(yīng)的結(jié)構(gòu)體定義、set函數(shù)接口定義,以及notify函數(shù) 接口定義; 所述代碼編譯與模型加載單元用于:將自動(dòng)代碼存儲(chǔ)于網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件內(nèi)并編 譯通過;將設(shè)備硬件模型文件存儲(chǔ)于網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件內(nèi),使網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)軟件 啟動(dòng)時(shí)加載設(shè)備硬件模型文件,并為設(shè)備硬件模型創(chuàng)建一個(gè)模型數(shù)據(jù)庫; 所述模型使用單元用于:利用自動(dòng)代碼提供的set函數(shù)接口、notify函數(shù)接口,以及創(chuàng) 建的模型數(shù)據(jù)庫,完成各業(yè)務(wù)對(duì)設(shè)備硬件模型的使用。8. 如權(quán)利要求7所述的網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的裝置,其特征在于: 所述模型建立單元包括類名稱定義子單元、屬性值設(shè)置子單元、數(shù)據(jù)類型名稱定義子單元 和長度設(shè)置子單兀; 所述類名稱定義子單元用于:定義設(shè)備元器件的類名稱,該類名稱用于在模型文件內(nèi) 唯一標(biāo)識(shí)一個(gè)設(shè)備元器件,并在生成代碼過程中以此名稱做關(guān)鍵字進(jìn)行結(jié)構(gòu)體命名和函數(shù) 命名; 所述屬性值設(shè)置子單元用于:設(shè)置類成員屬性值; 所述數(shù)據(jù)類型名稱定義子單元用于:定義類成員的數(shù)據(jù)類型名稱,該名稱對(duì)應(yīng)編程語 言的數(shù)據(jù)類型; 所述長度設(shè)置子單元用于:設(shè)置類成員在內(nèi)存中占用的長度。9. 如權(quán)利要求7所述的網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的裝置,其特征在于: 所述自動(dòng)代碼生成單元將設(shè)備硬件模型通過代碼解釋工具生成相關(guān)自動(dòng)代碼的具體過程 為:自動(dòng)代碼生成單元通過代碼解釋工具對(duì)設(shè)備硬件模型文件進(jìn)行一套C語言化的轉(zhuǎn)換,將 每個(gè)設(shè)備元器件的類對(duì)應(yīng)一個(gè)結(jié)構(gòu)體名,將設(shè)備元器件的類的屬性對(duì)應(yīng)結(jié)構(gòu)體的成員變 量。10. 如權(quán)利要求7所述的網(wǎng)絡(luò)操作系統(tǒng)中建立并使用設(shè)備硬件模型的裝置,其特征在 于:所述模型使用單元包括修改消息發(fā)送子單元、變化消息發(fā)送子單元和變化接收子單元; 所述修改消息發(fā)送子單元用于:當(dāng)有業(yè)務(wù)修改了自動(dòng)代碼中的某個(gè)結(jié)構(gòu)體時(shí),通過調(diào) 用該結(jié)構(gòu)體對(duì)應(yīng)的set函數(shù)接口,向模型數(shù)據(jù)庫發(fā)送TLV消息格式的修改消息; 所述變化消息發(fā)送子單元用于:在模型數(shù)據(jù)庫接收到修改消息后,檢查有哪些其他業(yè) 務(wù)與被修改的結(jié)構(gòu)體相關(guān),并向相關(guān)的其他業(yè)務(wù)發(fā)送有關(guān)該結(jié)構(gòu)體的變化消息; 所述變化接收子單元用于:使收到結(jié)構(gòu)體變化消息的其他業(yè)務(wù),通過notify函數(shù)接口 回調(diào)模型數(shù)據(jù)庫來接收被修改的結(jié)構(gòu)體的變化。
【文檔編號(hào)】G06F9/44GK105930154SQ201610244354
【公開日】2016年9月7日
【申請(qǐng)日】2016年4月19日
【發(fā)明人】宋??? 蘭光華
【申請(qǐng)人】烽火通信科技股份有限公司