本發(fā)明屬于嵌入式計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種嵌入式軟件模塊化的構(gòu)建方法及裝置。
背景技術(shù):
由于各種嵌入式應(yīng)用目標(biāo)存在較大的差異,使得嵌入式硬件及操作系統(tǒng)也各不相同,即使開發(fā)同樣功能的應(yīng)用程序,也需要針對(duì)特定的嵌入式平臺(tái)上進(jìn)行編程;造成用戶在應(yīng)用軟件的開發(fā)上需要花費(fèi)大量的時(shí)間和精力,并且開發(fā)出來的應(yīng)用軟件還不能移植到其他的嵌入式硬件平臺(tái);因此,嵌入式應(yīng)用軟件的代碼不具備重用性,這是嵌入式開發(fā)面臨的最大的瓶頸。
目前嵌入式系統(tǒng)主要存在以下幾點(diǎn)問題:
1.嵌入式系統(tǒng)最大的特征就是差異性,應(yīng)用于不同場合的嵌入式產(chǎn)品及設(shè)備,無論是從形態(tài)或功能上看,都有很大的不同。
2.常規(guī)的開發(fā)過程中,用戶整理需要并開始進(jìn)行軟件設(shè)計(jì)和代碼編寫,從實(shí)際情況來看,由于需求的千差萬別及隨時(shí)可能發(fā)生的需求變化,用戶代碼基本上沒有重用性,這就意味如果需求發(fā)生一定的變化,整個(gè)的代碼可能都會(huì)重新編寫,這不但延誤了用戶的開發(fā)進(jìn)度,而且影響了代碼的健壯性和可靠性,為用戶設(shè)備的功能實(shí)現(xiàn)帶來了巨大的風(fēng)險(xiǎn)。
3.嵌入式系統(tǒng)軟件的開發(fā)同底層的設(shè)備驅(qū)動(dòng)程序緊密相關(guān)。用戶要實(shí)現(xiàn)對(duì)硬件設(shè)備的操作就必須通過設(shè)備驅(qū)動(dòng)程序來完成,常規(guī)開發(fā)中都是由用戶程序直接進(jìn)行設(shè)備驅(qū)動(dòng)程序的調(diào)用,這種方式要求應(yīng)用程序的開發(fā)人員需要對(duì)底層的硬件設(shè)計(jì)及該設(shè)備的驅(qū)動(dòng)程序有足夠的了解;另外,在進(jìn)行設(shè)備驅(qū)動(dòng)程序的訪問時(shí),驅(qū)動(dòng)程序提供的軟件接口沒有通用性,用戶在應(yīng)用程序調(diào)用時(shí)很不方便。
4.設(shè)備驅(qū)動(dòng)程序可以被定義為一個(gè)良好的內(nèi)部編程接口,完全隱藏設(shè)備的工作細(xì)節(jié),用戶的操作是通過一組標(biāo)準(zhǔn)化的調(diào)用來執(zhí)行,設(shè)備驅(qū)動(dòng)程序?qū)⑦@些調(diào)用映射到作用于實(shí)際硬件的設(shè)備特有操作上。這是一個(gè)看似完美的調(diào)用過程,但實(shí)際上由于硬件設(shè)備的千差萬別以及不同程序員的編程習(xí)慣,針對(duì)同一個(gè)設(shè)備,不同的程序員編寫出的驅(qū)動(dòng)程序可能風(fēng)格迥異,提供的操作接口可能不盡相同。這對(duì)于用戶操作而言顯然不具有通用性,當(dāng)用戶編寫的應(yīng)用程序需要調(diào)用驅(qū)動(dòng)程序功能的時(shí)候,用戶還必須考慮用哪一個(gè)函數(shù)功能,傳遞哪幾個(gè)參數(shù),是不是需要返回值等細(xì)節(jié)問題,顯然影響了軟件代碼的開發(fā)速度和通用性。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問題,本發(fā)明提出了一種嵌入式軟件模塊化的構(gòu)建方法及裝置,在嵌入式操作系統(tǒng)和用戶應(yīng)用程序之間構(gòu)建一個(gè)中間層,為用戶提供在嵌入式系統(tǒng)中具有較強(qiáng)通用性的軟件模塊,使開發(fā)和操作過程更加簡單方便。
為達(dá)到上述目的,本發(fā)明采用的技術(shù)方案是:
一種嵌入式軟件模塊化的構(gòu)建方法,包括步驟:
在嵌入式系統(tǒng)的嵌入式操作系統(tǒng)和用戶應(yīng)用程序之間構(gòu)建一個(gè)中間層軟件模塊;
在所述軟件模塊中構(gòu)建具有多個(gè)存儲(chǔ)空間的軟件數(shù)據(jù)庫;
將嵌入式系統(tǒng)的軟件進(jìn)行功能性分類;
對(duì)每一類的軟件構(gòu)建代碼,并將代碼構(gòu)成的管理模塊存儲(chǔ)在相應(yīng)的存儲(chǔ)空間內(nèi);
根據(jù)用戶需求調(diào)用相應(yīng)存儲(chǔ)空間中的軟件代碼;
輸出軟件代碼至相應(yīng)的硬件設(shè)備。
進(jìn)一步的是,所述管理模塊包括相互獨(dú)立的工業(yè)總線通信管理模塊、網(wǎng)絡(luò)通信管理模塊、模擬IO設(shè)備管理模塊、數(shù)字IO設(shè)備管理模塊、LED設(shè)備管理模塊、蜂鳴器設(shè)備管理模塊、日期及時(shí)間管理模塊、看門狗設(shè)備管理模塊、PWM設(shè)備管理模塊和高精度定時(shí)器設(shè)備管理模塊。
這些軟件模塊基本涵蓋了嵌入式設(shè)計(jì)開發(fā)中常用的功能,為用戶提供標(biāo)準(zhǔn)的開發(fā)接口,為用戶進(jìn)行開發(fā)提供了便利的手段,用戶可以集中精力進(jìn)行系統(tǒng)整體邏輯功能的設(shè)計(jì)而不糾結(jié)于單個(gè)模塊功能的實(shí)現(xiàn)。
進(jìn)一步的是,所述工業(yè)總線通信管理模塊封裝滿足串口通信功能的串口操作函數(shù);用于嵌入式系統(tǒng)的串行通信;
所述調(diào)用串口操作函數(shù)包括:打開并初始化串口操作函數(shù),此函數(shù)打開并初始化串口功能;從串口讀數(shù)據(jù)函數(shù);向串口寫數(shù)據(jù)函數(shù);串口關(guān)閉函數(shù)。
用戶只需正確調(diào)用庫中的函數(shù),即可實(shí)現(xiàn)一般性嵌入式串口通信,而不必關(guān)心串口的具體工作原理和工作模式;從而大大節(jié)省基于串口的開發(fā)時(shí)間和降低開發(fā)難度。
進(jìn)一步的是,所述網(wǎng)絡(luò)通信管理模塊包括TCP動(dòng)態(tài)庫和UDP動(dòng)態(tài)庫,分別針對(duì)面向連接和非連接網(wǎng)絡(luò)通信需求;用于嵌入式系統(tǒng)的網(wǎng)絡(luò)通信;
所述TCP動(dòng)態(tài)庫包括:客戶機(jī)連接函數(shù):用于客戶機(jī)向服務(wù)器發(fā)出連接;發(fā)送數(shù)據(jù)函數(shù):用于向TCP套接口發(fā)送數(shù)據(jù);接收數(shù)據(jù)函數(shù):用于從TCP套接口接收數(shù)據(jù);設(shè)置服務(wù)器為監(jiān)聽模式函數(shù):用于將服務(wù)器端設(shè)為監(jiān)聽模式;服務(wù)器接收連接請(qǐng)求函數(shù):從服務(wù)器等待隊(duì)列取出客戶端連接請(qǐng)求;關(guān)閉套接字函數(shù);
所述UDP動(dòng)態(tài)庫包括:建立數(shù)據(jù)報(bào)套接字函數(shù);建立服務(wù)器端套接字函數(shù):初始化服務(wù)器套接字結(jié)構(gòu)地址,綁定服務(wù)器端口號(hào);初始化服務(wù)器地址結(jié)構(gòu)函數(shù):向服務(wù)器端發(fā)送數(shù)據(jù);初始化服務(wù)器地址結(jié)構(gòu)函數(shù):從服務(wù)器接收數(shù)據(jù);關(guān)閉套接字函數(shù);附帶的系統(tǒng)函數(shù)Ⅰ:用于發(fā)送數(shù)據(jù);附帶的系統(tǒng)函數(shù)Ⅱ:用于接收數(shù)據(jù)。
本動(dòng)態(tài)庫并不是將所有的TCP/UDP協(xié)議通信所用到的系統(tǒng)函數(shù)進(jìn)行封裝,而是為了提高編程效率,將一些繁瑣的諸如對(duì)套接字地址結(jié)構(gòu)初始化以及相關(guān)聯(lián)的收發(fā)數(shù)據(jù)之類的問題進(jìn)行了封裝。
進(jìn)一步的是,所述模擬IO設(shè)備管理模塊包括滿足模擬IO設(shè)備的輸入輸出功能函數(shù);包括ADC設(shè)備輸入輸出功能函數(shù)和DAC設(shè)備輸入輸出功能函數(shù);用于嵌入式系統(tǒng)的模擬IO設(shè)備管理;
所述ADC設(shè)備輸入輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);ADC設(shè)備配置函數(shù);獲取ADC設(shè)備當(dāng)前配置函數(shù);讀取ADC設(shè)備采樣值;轉(zhuǎn)換采樣值函數(shù);
所述DAC設(shè)備輸入輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);向DAC輸出數(shù)據(jù)函數(shù)。
用戶只需正確調(diào)用庫中的函數(shù),即可實(shí)現(xiàn)一般性嵌入式系統(tǒng)的模擬IO設(shè)備的打開、關(guān)閉和基本的輸入輸出功能,而不必關(guān)心該模擬IO設(shè)備的具體工作原理和工作模式,節(jié)省了模擬IO設(shè)備管理的開發(fā)時(shí)間,降低了開發(fā)難度。
進(jìn)一步的是,所述數(shù)字IO設(shè)備管理模塊包括滿足數(shù)字IO設(shè)備的輸入輸出功能函數(shù);包括簡單數(shù)字IO設(shè)備的輸入輸出功能函數(shù)和外接鍵盤設(shè)備輸入輸出功能函數(shù);用于嵌入式系統(tǒng)的數(shù)字IO設(shè)備管理;
所述簡單數(shù)字IO設(shè)備的輸入輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);清空緩沖區(qū)函數(shù);讀取簡單數(shù)字IO值函數(shù);置簡單數(shù)字IO值函數(shù),此函數(shù)提供設(shè)置當(dāng)前數(shù)字IO設(shè)備值功能;
所述外接鍵盤設(shè)備輸入輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);清空緩沖區(qū)函數(shù);讀取鍵盤值函數(shù)。
用戶只需正確調(diào)用庫中的函數(shù),即可實(shí)現(xiàn)一般性嵌入式系統(tǒng)的數(shù)字IO設(shè)備的打開、關(guān)閉和基本的輸入輸出功能,而不必關(guān)心該數(shù)字IO設(shè)備的具體工作原理和工作模式,節(jié)省了數(shù)字IO設(shè)備管理的開發(fā)時(shí)間,降低了開發(fā)難度。
進(jìn)一步的是,所述LED設(shè)備管理模塊包括滿足LED設(shè)備的輸出功能函數(shù);用于嵌入式系統(tǒng)的LED設(shè)備管理;
所述LED設(shè)備的輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);清空緩沖區(qū)函數(shù);置LED設(shè)備顯示值函數(shù);
用戶只需正確調(diào)用庫中的函數(shù),即可實(shí)現(xiàn)一般性嵌入式系統(tǒng)的LED設(shè)備的打開、關(guān)閉和基本的顯示輸出功能,而不必關(guān)心該LED設(shè)備的具體工作原理和工作模式,節(jié)省了LED設(shè)備管理的開發(fā)時(shí)間,降低了開發(fā)難度。
所述蜂鳴器設(shè)備管理模塊包括滿足蜂鳴器設(shè)備的輸出功能函數(shù);用于嵌入式系統(tǒng)的蜂鳴器類設(shè)備管理;
所述蜂鳴器設(shè)備的輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);置蜂鳴器設(shè)備值函數(shù)。
用戶只需正確調(diào)用庫中的函數(shù),即可實(shí)現(xiàn)一般性嵌入式系統(tǒng)的蜂鳴器設(shè)備的打開、關(guān)閉和基本的蜂鳴功能,而不必關(guān)心該蜂鳴器設(shè)備的具體工作原理和工作模式,節(jié)省了蜂鳴器設(shè)備管理的開發(fā)時(shí)間,降低了開發(fā)難度。
進(jìn)一步的是,所述日期及時(shí)間管理模塊包括滿足日期及時(shí)間的基本讀入和設(shè)置功能函數(shù);用于嵌入式系統(tǒng)的日期及時(shí)間模塊的管理;
所述日期及時(shí)間的基本讀入和設(shè)置功能函數(shù)包括:讀取日期及時(shí)間函數(shù);讀取日期函數(shù);讀取時(shí)間函數(shù);設(shè)置日期及時(shí)間函數(shù);設(shè)置日期函數(shù);設(shè)置時(shí)間函數(shù)。
用戶只需正確調(diào)用庫中的函數(shù),即可實(shí)現(xiàn)一般性嵌入式系統(tǒng)的日期及時(shí)間的讀取設(shè)置等功能,而不必關(guān)心該日期及時(shí)間模塊的具體工作原理和工作模式,節(jié)省了日期及時(shí)間管理功能的開發(fā)時(shí)間,降低了開發(fā)難度。
所述看門狗設(shè)備管理模塊滿足看門狗設(shè)備的輸入輸出功能函數(shù);
所述看門狗設(shè)備的輸入輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);使能看門狗設(shè)備函數(shù);禁用看門狗設(shè)備函數(shù);喂狗操作函數(shù)。
用戶只需正確調(diào)用庫中的函數(shù),即可實(shí)現(xiàn)一般性嵌入式系統(tǒng)的看門狗設(shè)備的打開、關(guān)閉和基本的使能操作等功能,而不必關(guān)心該看門狗設(shè)備的具體工作原理和工作模式,節(jié)省了看門狗設(shè)備管理的開發(fā)時(shí)間,降低了開發(fā)難度。
進(jìn)一步的是,所述PWM設(shè)備管理模塊包括滿足PWM脈沖寬度調(diào)制需要的基本功能函數(shù);用于嵌入式系統(tǒng)的PWM設(shè)備管理;
所述PWM脈沖寬度調(diào)制需要的基本功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);PWM設(shè)備配置函數(shù);獲取PWM設(shè)備當(dāng)前配置函數(shù)。
用戶只需正確調(diào)用庫中的函數(shù),即可實(shí)現(xiàn)一般性嵌入式系統(tǒng)的PWM設(shè)備的打開、關(guān)閉和基本的輸入輸出功能,而不必關(guān)心該P(yáng)WM設(shè)備的具體工作原理和工作模式,節(jié)省了PWM設(shè)備管理的開發(fā)時(shí)間,降低了開發(fā)難度。
所述高精度定時(shí)器設(shè)備管理模塊包括滿足高精度定時(shí)器需要的基本功能函數(shù);用于嵌入式系統(tǒng)的高精度定時(shí)器設(shè)備管理;
所述高精度定時(shí)器需要的基本功能函數(shù)包括創(chuàng)建高精度定時(shí)器函數(shù);刪除定時(shí)器函數(shù);高精度延時(shí)函數(shù)。
用戶只需正確調(diào)用庫中的函數(shù),即可實(shí)現(xiàn)一般性嵌入式系統(tǒng)的高精度定時(shí)器的基本功能,而不必關(guān)心該高精度定時(shí)器的具體工作原理和工作模式,節(jié)省了高精度設(shè)備管理的開發(fā)時(shí)間,降低了開發(fā)難度。
另一方面,本發(fā)明還提供了一種嵌入式軟件模塊化的構(gòu)建裝置,包括處理器、存儲(chǔ)器、調(diào)試接口和調(diào)用接口,所述處理器上分別連接存儲(chǔ)器、調(diào)試接口和調(diào)用接口;
所述處理器,用于在存儲(chǔ)器中調(diào)取相應(yīng)的管理模塊,并管理整個(gè)裝置運(yùn)行;
所述調(diào)試接口,用于開發(fā)人員向存儲(chǔ)器錄入更新代碼;
所述存儲(chǔ)器,用于存儲(chǔ)軟件數(shù)據(jù)庫;
所述調(diào)用接口,連接外部工控機(jī)處理器,用于工控機(jī)在裝置中調(diào)用所需管理模塊。
采用本技術(shù)方案的有益效果:
嵌入式軟件模塊化的構(gòu)建裝置形成了嵌入式系統(tǒng)的模塊化中間層,在系統(tǒng)底層實(shí)現(xiàn)了大多數(shù)用戶會(huì)用到的基本功能,向下與特定硬件平臺(tái)的驅(qū)動(dòng)程序接口,向上為用戶提供統(tǒng)一的編程接口,用戶進(jìn)行系統(tǒng)開發(fā)的時(shí)候只需通過標(biāo)準(zhǔn)接口調(diào)用模塊函數(shù)即可實(shí)現(xiàn)特定功能。為用戶統(tǒng)一了不同硬件平臺(tái)的差異性,從而實(shí)現(xiàn)嵌入式系統(tǒng)的快速開發(fā)。另外,模塊化的方式為系統(tǒng)的后期維護(hù)升級(jí)也帶來了便利,系統(tǒng)功能的調(diào)整可以在不修改用戶應(yīng)用程序的情況下更新模塊中的函數(shù)即可。
1.通過對(duì)嵌入式應(yīng)用進(jìn)行歸納與分類,抽象出不同領(lǐng)域嵌入式應(yīng)用系統(tǒng)的共性,開發(fā)涵蓋主流嵌入式微處理器及嵌入式操作系統(tǒng)、滿足絕大多數(shù)應(yīng)用的嵌入式系統(tǒng)硬件平臺(tái)。本發(fā)明提出的方法能夠滿足絕大多數(shù)應(yīng)用需求的嵌入式硬件系統(tǒng)開發(fā)平臺(tái),對(duì)加快用戶產(chǎn)品開發(fā),縮短產(chǎn)品上市時(shí)間,占領(lǐng)市場先機(jī),具有重要意義。
2.本發(fā)明通過將大多數(shù)嵌入式系統(tǒng)的基本應(yīng)用及常見的擴(kuò)展應(yīng)用設(shè)計(jì)成獨(dú)立的軟件模塊,并依據(jù)系統(tǒng)應(yīng)用的共性實(shí)現(xiàn)模塊的功能。這些軟件模塊基本涵蓋了嵌入式設(shè)計(jì)開發(fā)中常用的功能,為用戶提供標(biāo)準(zhǔn)的開發(fā)接口,為用戶進(jìn)行開發(fā)提供了便利的手段,用戶可以集中精力進(jìn)行系統(tǒng)整體邏輯功能的設(shè)計(jì)而不糾結(jié)于單個(gè)模塊功能的實(shí)現(xiàn)。并且能夠?qū)崿F(xiàn)在系統(tǒng)需求發(fā)生變化,用戶僅通過調(diào)整對(duì)軟件模塊的調(diào)用方式來調(diào)整自己的系統(tǒng)功能,使得用戶可以盡可能少地重新編寫代碼,提高了嵌入式系統(tǒng)的開發(fā)進(jìn)度,并保證了用戶可以快速完成系統(tǒng)開發(fā)。
3.本發(fā)明將軟件模塊化,還可以屏蔽掉驅(qū)動(dòng)程序的實(shí)現(xiàn)細(xì)節(jié),用戶僅需編寫應(yīng)用程序訪問統(tǒng)一的模塊函數(shù)接口,并通過事先定義好的軟件模塊達(dá)到訪問硬件的目的,使開發(fā)過程更加便捷。
4.本發(fā)明規(guī)范定義設(shè)備驅(qū)動(dòng)程序和模塊功能函數(shù)間的接口,無論是在那種嵌入式硬件平臺(tái)上,我們要求設(shè)備驅(qū)動(dòng)程序中針對(duì)設(shè)備的特有操作遵循固有約定,定義統(tǒng)一的返回變量;軟件模塊的功能函數(shù)也按照約定實(shí)現(xiàn)標(biāo)準(zhǔn)化的調(diào)用。因此,當(dāng)用戶程序調(diào)用軟件模塊中的函數(shù)功能時(shí),可以不關(guān)心設(shè)備硬件平臺(tái)的類型,不關(guān)心驅(qū)動(dòng)程序的編寫細(xì)節(jié),只需要完成對(duì)軟件模塊的功能調(diào)用就可以實(shí)現(xiàn)對(duì)實(shí)際設(shè)備的操作過程,這樣為用戶的應(yīng)用程序開發(fā)屏蔽了底層系統(tǒng)的差異性,實(shí)現(xiàn)應(yīng)用程序設(shè)計(jì)的跨平臺(tái)功能,做到程序的一次編寫處處可用,提高的軟件系統(tǒng)的開發(fā)效率,并節(jié)約了開發(fā)時(shí)間。
附圖說明
圖1為本發(fā)明的一種嵌入式軟件模塊化的構(gòu)建方法的結(jié)構(gòu)層次圖;
圖2為本發(fā)明的一種嵌入式軟件模塊化的構(gòu)建方法及裝置方法流程示意圖;;
圖3為本發(fā)明的一種嵌入式軟件模塊化的構(gòu)建裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步闡述。
在實(shí)施例一中,參見圖1和圖2所示,本發(fā)明提出了一種嵌入式軟件模塊化的構(gòu)建方法,包括步驟:
在嵌入式系統(tǒng)的嵌入式操作系統(tǒng)和用戶應(yīng)用程序之間構(gòu)建一個(gè)中間層軟件模塊;
在所述軟件模塊中構(gòu)建具有多個(gè)存儲(chǔ)空間的軟件數(shù)據(jù)庫;
將嵌入式系統(tǒng)的軟件進(jìn)行功能性分類;
對(duì)每一類的軟件構(gòu)建代碼,并將代碼構(gòu)成的管理模塊存儲(chǔ)在相應(yīng)的存儲(chǔ)空間內(nèi);
根據(jù)用戶需求調(diào)用相應(yīng)存儲(chǔ)空間中的軟件代碼;
輸出軟件代碼至相應(yīng)的硬件設(shè)備。
在實(shí)施例二中,在實(shí)施例一的基礎(chǔ)上,所述管理模塊包括相互獨(dú)立的工業(yè)總線通信管理模塊、網(wǎng)絡(luò)通信管理模塊、模擬IO設(shè)備管理模塊、數(shù)字IO設(shè)備管理模塊、LED設(shè)備管理模塊、蜂鳴器設(shè)備管理模塊、日期及時(shí)間管理模塊、看門狗設(shè)備管理模塊、PWM設(shè)備管理模塊和高精度定時(shí)器設(shè)備管理模塊。
這些軟件模塊基本涵蓋了嵌入式設(shè)計(jì)開發(fā)中常用的功能,為用戶提供標(biāo)準(zhǔn)的開發(fā)接口,為用戶進(jìn)行開發(fā)提供了便利的手段,用戶可以集中精力進(jìn)行系統(tǒng)整體邏輯功能的設(shè)計(jì)而不糾結(jié)于單個(gè)模塊功能的實(shí)現(xiàn)。
作為上述實(shí)施例的優(yōu)化方案,所述工業(yè)總線通信管理模塊封裝滿足串口通信功能的串口操作函數(shù);用于嵌入式系統(tǒng)的串行通信;
所述調(diào)用串口操作函數(shù)包括:打開并初始化串口操作函數(shù),此函數(shù)打開并初始化串口功能;從串口讀數(shù)據(jù)函數(shù);向串口寫數(shù)據(jù)函數(shù);串口關(guān)閉函數(shù)。
具體實(shí)施時(shí):
1)打開并初始化串口函數(shù):int OpenCom(char*dev,char*configs,int mode);
2)從串口讀數(shù)據(jù)函數(shù):ReadCom(int fd,char*buffer,unsigned int len,unsigned long timesout);
3)向串口寫數(shù)據(jù)函數(shù):WriteCom(int fd,char*buffer,unsigned int len,unsigned long timesout);
4)串口關(guān)閉函數(shù):int CloseCom(int fd)。
作為上述實(shí)施例的優(yōu)化方案,所述網(wǎng)絡(luò)通信管理模塊包括TCP動(dòng)態(tài)庫和UDP動(dòng)態(tài)庫,分別針對(duì)面向連接和非連接網(wǎng)絡(luò)通信需求;用于嵌入式系統(tǒng)的網(wǎng)絡(luò)通信;
所述TCP動(dòng)態(tài)庫包括:客戶機(jī)連接函數(shù):用于客戶機(jī)向服務(wù)器發(fā)出連接;發(fā)送數(shù)據(jù)函數(shù):用于向TCP套接口發(fā)送數(shù)據(jù);接收數(shù)據(jù)函數(shù):用于從TCP套接口接收數(shù)據(jù);設(shè)置服務(wù)器為監(jiān)聽模式函數(shù):用于將服務(wù)器端設(shè)為監(jiān)聽模式;服務(wù)器接收連接請(qǐng)求函數(shù):從服務(wù)器等待隊(duì)列取出客戶端連接請(qǐng)求;關(guān)閉套接字函數(shù);
具體實(shí)施時(shí):
1)客戶機(jī)連接函數(shù):int ConnectServce(char*addr);
2)發(fā)送數(shù)據(jù)函數(shù):int SendData(int fd,const void*buf,int len,int mode);
3)接收數(shù)據(jù)函數(shù):intRecvData(int fd,void*buf,int len,int mode);
4)設(shè)置服務(wù)器為監(jiān)聽模式函數(shù):int SetServce(int queulen,int port);
5)服務(wù)器接收連接請(qǐng)求函數(shù):int GetRequest(int fd,struct sockaddr_in client);
6)關(guān)閉套接字函數(shù):int CloseSock(int fd)。
所述UDP動(dòng)態(tài)庫包括:建立數(shù)據(jù)報(bào)套接字函數(shù);建立服務(wù)器端套接字函數(shù):初始化服務(wù)器套接字結(jié)構(gòu)地址,綁定服務(wù)器端口號(hào);初始化服務(wù)器地址結(jié)構(gòu)函數(shù):向服務(wù)器端發(fā)送數(shù)據(jù);初始化服務(wù)器地址結(jié)構(gòu)函數(shù):從服務(wù)器接收數(shù)據(jù);關(guān)閉套接字函數(shù);附帶的系統(tǒng)函數(shù)Ⅰ:用于發(fā)送數(shù)據(jù);附帶的系統(tǒng)函數(shù)Ⅱ:用于接收數(shù)據(jù)。
具體實(shí)施時(shí):
1)建立數(shù)據(jù)報(bào)套接字函數(shù):Socket();
2)建立服務(wù)器端套接字函數(shù):SetServce(int port);
3)初始化服務(wù)器地址結(jié)構(gòu)函數(shù):SendSer(char*addr,int sockfd,const void*buf,int len,int mode);
4)初始化服務(wù)器地址結(jié)構(gòu)函數(shù):RecvSer(char*addr,int sockfd,void*buf,int len,int mode);
5)關(guān)閉套接字函數(shù):CloseSock(int fd);
6)附帶的系統(tǒng)函數(shù)Ⅰ:sendto(int sockfd,const void*buf,size_t len,int f lags,const struct sockaddr*to,int addrlen);
7)附帶的系統(tǒng)函數(shù)Ⅱ:recvfrom(int sockfd,void*buf,size_t len,int f lags,struct sockaddr*from,size_t*addrlen)。
作為上述實(shí)施例的優(yōu)化方案,所述模擬IO設(shè)備管理模塊包括滿足模擬IO設(shè)備的輸入輸出功能函數(shù);包括ADC設(shè)備輸入輸出功能函數(shù)和DAC設(shè)備輸入輸出功能函數(shù);用于嵌入式系統(tǒng)的模擬IO設(shè)備管理;
所述ADC設(shè)備輸入輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);ADC設(shè)備配置函數(shù);獲取ADC設(shè)備當(dāng)前配置函數(shù);讀取ADC設(shè)備采樣值;轉(zhuǎn)換采樣值函數(shù);
具體實(shí)施時(shí):
1)設(shè)備打開函數(shù):int OpenAdc(char*dev,int mode);
2)設(shè)備關(guān)閉函數(shù):int CloseAdc(int fd);
3)ADC設(shè)備配置函數(shù):cyg_err_t SetAdcCfg(int fd,unsigned int cmd,char*buffer,unsigned int len);
4)獲取ADC設(shè)備當(dāng)前配置函數(shù):cyg_err_t GetAdcCfg(int fd,unsigned int cmd,char*buffer,unsigned int*len);
5)讀取ADC設(shè)備采樣值:cyg_err_t ReadAdcSampling(int fd,unsigned int channel,cyg_adc_sample*buffer,unsigned int*len,int timesout);
6)轉(zhuǎn)換采樣值函數(shù):cyg_err_t ConvAdcValue(cyg_adc_sample*buffer,unsigned int len,float*values,struct_sampl_to_float*keys)。
所述DAC設(shè)備輸入輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);向DAC輸出數(shù)據(jù)函數(shù)。
具體實(shí)施時(shí):
1)設(shè)備打開函數(shù):int OpenDac(char*dev,int mode);
2)設(shè)備關(guān)閉函數(shù):int CloseDac(int fd);
3)向DAC輸出數(shù)據(jù)函數(shù):cyg_err_t WriteDacVal(int fd,unsigned char chan,float value,struct_float_to_dacout*keys)。
作為上述實(shí)施例的優(yōu)化方案,所述數(shù)字IO設(shè)備管理模塊包括滿足數(shù)字IO設(shè)備的輸入輸出功能函數(shù);包括簡單數(shù)字IO設(shè)備的輸入輸出功能函數(shù)和外接鍵盤設(shè)備輸入輸出功能函數(shù);用于嵌入式系統(tǒng)的數(shù)字IO設(shè)備管理;
所述簡單數(shù)字IO設(shè)備的輸入輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);清空緩沖區(qū)函數(shù);讀取簡單數(shù)字IO值函數(shù);置簡單數(shù)字IO值函數(shù),此函數(shù)提供設(shè)置當(dāng)前數(shù)字IO設(shè)備值功能;
具體實(shí)施時(shí):
1)設(shè)備打開函數(shù):int OpenDio(char*dev,int mode);
2)設(shè)備關(guān)閉函數(shù):int CloseDio(int fd);
3)清空緩沖區(qū)函數(shù):cyg_err_t FlushDio(int fd);
4)讀取簡單數(shù)字IO值函數(shù):cyg_err_t GetDioValue(int fd,unsigned short*keyValue,unsigned char*status);
5)置簡單數(shù)字IO值函數(shù):cyg_err_t SetDioValue(int fd,unsigned short*keyValue)。
所述外接鍵盤設(shè)備輸入輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);清空緩沖區(qū)函數(shù);讀取鍵盤值函數(shù)。
具體實(shí)施時(shí):
1)設(shè)備打開函數(shù):int OpenKbd(char*dev,int mode);
2)設(shè)備關(guān)閉函數(shù):int CloseKbd(int fd);
3)清空緩沖區(qū)函數(shù):cyg_err_t FlushKbd(int fd);
4)讀取鍵盤值函數(shù):cyg_err_t GetKeyValue(int fd,unsigned short*keyValue,unsigned char*status)。
作為上述實(shí)施例的優(yōu)化方案,所述LED設(shè)備管理模塊包括滿足LED設(shè)備的輸出功能函數(shù);用于嵌入式系統(tǒng)的LED設(shè)備管理;
所述LED設(shè)備的輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);清空緩沖區(qū)函數(shù);置LED設(shè)備顯示值函數(shù);
具體實(shí)施時(shí):
1)設(shè)備打開函數(shù):int OpenDis(char*dev,int mode);
2)設(shè)備關(guān)閉函數(shù):int CloseDis(int fd);
3)清空緩沖區(qū)函數(shù):cyg_err_t FlushDis(int fd);
4)置LED設(shè)備顯示值函數(shù):cyg_err_t SetDisValue(int fd,unsigned short*disPosition,unsigned short*disValue)。
作為上述實(shí)施例的優(yōu)化方案,所述蜂鳴器設(shè)備管理模塊包括滿足蜂鳴器設(shè)備的輸出功能函數(shù);用于嵌入式系統(tǒng)的蜂鳴器類設(shè)備管理;
所述蜂鳴器設(shè)備的輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);置蜂鳴器設(shè)備值函數(shù)。
具體實(shí)施時(shí):
1)設(shè)備打開函數(shù):int OpenBuzzer(char*dev,int mode);
2)設(shè)備關(guān)閉函數(shù):int CloseBuzzer(int fd);
3)置蜂鳴器設(shè)備值函數(shù):int IocltBuzzer(int fd,unsigned int cmd,int during,int times)。
作為上述實(shí)施例的優(yōu)化方案,所述日期及時(shí)間管理模塊包括滿足日期及時(shí)間的基本讀入和設(shè)置功能函數(shù);用于嵌入式系統(tǒng)的日期及時(shí)間模塊的管理;
所述日期及時(shí)間的基本讀入和設(shè)置功能函數(shù)包括:讀取日期及時(shí)間函數(shù);讀取日期函數(shù);讀取時(shí)間函數(shù);設(shè)置日期及時(shí)間函數(shù);設(shè)置日期函數(shù);設(shè)置時(shí)間函數(shù)。
具體實(shí)施時(shí):
1)讀取日期及時(shí)間函數(shù):cyg_err_t GetDateTime(unsigned short data[]);
2)讀取日期函數(shù):cyg_err_t GetDate(unsigned short data[]);
3)讀取時(shí)間函數(shù):cyg_err_t GetTime(unsigned short data[]);
4)設(shè)置日期及時(shí)間函數(shù):cyg_err_t SetDateTime(unsigned short data[]);
5)設(shè)置日期函數(shù):cyg_err_t SetDate(unsigned short data[]);
6)設(shè)置時(shí)間函數(shù):cyg_err_t SetTime(unsigned short data[])。
作為上述實(shí)施例的優(yōu)化方案,所述看門狗設(shè)備管理模塊滿足看門狗設(shè)備的輸入輸出功能函數(shù);
所述看門狗設(shè)備的輸入輸出功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);使能看門狗設(shè)備函數(shù);禁用看門狗設(shè)備函數(shù);喂狗操作函數(shù)。
具體實(shí)施時(shí):
1)設(shè)備打開函數(shù):int OpenWtd(char*dev,int mode);
2)設(shè)備關(guān)閉函數(shù):int CloseWtd(int fd);
3)使能看門狗設(shè)備函數(shù):int EnableWtd(int fd,int TimeOut);
4)禁用看門狗設(shè)備函數(shù):int DisableWtd(void);
5)喂狗操作函數(shù):int FeedWtd(void)。
作為上述實(shí)施例的優(yōu)化方案,所述PWM設(shè)備管理模塊包括滿足PWM脈沖寬度調(diào)制需要的基本功能函數(shù);用于嵌入式系統(tǒng)的PWM設(shè)備管理;
所述PWM脈沖寬度調(diào)制需要的基本功能函數(shù)包括:設(shè)備打開函數(shù);設(shè)備關(guān)閉函數(shù);PWM設(shè)備配置函數(shù);獲取PWM設(shè)備當(dāng)前配置函數(shù)。
具體實(shí)施時(shí):
1)設(shè)備打開函數(shù):int OpenPWM(char*dev,int mode);
2)設(shè)備關(guān)閉函數(shù):int ClosePWM(int fd);
3)PWM設(shè)備配置函數(shù):cyg_err_t SetPWMCfg(int fd,unsigned int cmd,unsigned char chan,float data);
4)獲取PWM設(shè)備當(dāng)前配置函數(shù):cyg_err_t GetPWMCfg(int fd,unsigned int cmd,unsigned char chan,int*buffer)。
作為上述實(shí)施例的優(yōu)化方案,所述高精度定時(shí)器設(shè)備管理模塊包括滿足高精度定時(shí)器需要的基本功能函數(shù);用于嵌入式系統(tǒng)的高精度定時(shí)器設(shè)備管理;
所述高精度定時(shí)器需要的基本功能函數(shù)包括創(chuàng)建高精度定時(shí)器函數(shù);刪除定時(shí)器函數(shù);高精度延時(shí)函數(shù)。
1)創(chuàng)建高精度定時(shí)器函數(shù):int GreateHighResTimer(HFUNC handler,timer_t*timerid,unsigned int nsecs,unsigned char mode);
2)刪除定時(shí)器函數(shù):int DelHighResTimer(timer_t timerid);
3)高精度延時(shí)函數(shù):int Userusdelay(unsigned int usecs)。
為配合本發(fā)明方法的實(shí)現(xiàn),基于相同的發(fā)明構(gòu)思,如圖3所示,本發(fā)明還提供了一種嵌入式軟件模塊化的構(gòu)建裝置,包括處理器、存儲(chǔ)器、調(diào)試接口和調(diào)用接口,所述處理器上分別連接存儲(chǔ)器、調(diào)試接口和調(diào)用接口;
所述處理器,用于在存儲(chǔ)器中調(diào)取相應(yīng)的管理模塊,并管理整個(gè)裝置運(yùn)行;
所述調(diào)試接口,用于開發(fā)人員向存儲(chǔ)器錄入更新代碼;
所述存儲(chǔ)器,用于存儲(chǔ)軟件數(shù)據(jù)庫;
所述調(diào)用接口,連接外部工控機(jī)處理器,用于工控機(jī)在裝置中調(diào)用所需管理模塊。
以上顯示和描述了本發(fā)明的基本原理和主要特征和本發(fā)明的優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說明書中描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。本發(fā)明要求保護(hù)范圍由所附的權(quán)利要求書及其等效物界定。