欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種嵌入式系統(tǒng)中串口分時(shí)復(fù)用方法

文檔序號(hào):6377051閱讀:1487來源:國(guó)知局
專利名稱:一種嵌入式系統(tǒng)中串口分時(shí)復(fù)用方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種串ロ分時(shí)復(fù)用方法。
背景技術(shù)
串ロ,即串行接ロ,廣泛應(yīng)用于通信終端設(shè)備和エ業(yè)控制中,如RS-232、RS-242、RS485等。串ロ多路復(fù)用是指在一條物理串行接口上實(shí)現(xiàn)多個(gè)數(shù)據(jù)鏈路連接(DLC),使得可以同時(shí)在一條串行接口上存在多個(gè)會(huì)話,比如語音、數(shù)據(jù)、USSD等。而分時(shí)復(fù)用(TDMA,TimeDivision Multiplex Access)則是在網(wǎng)絡(luò)中應(yīng)用于用一條線路傳輸多路數(shù)據(jù),基于分時(shí)段應(yīng)用線路的技木,簡(jiǎn)單點(diǎn)說,就是把多個(gè)工作的每個(gè)工作都分成多個(gè)時(shí)間段,然后各個(gè)工作的各個(gè)時(shí)間段交叉使用,這樣就好像多個(gè)工作同時(shí)運(yùn)行。 隨著數(shù)字化智能化的發(fā)展,嵌入式行業(yè)發(fā)展迅速,其中很大一部分應(yīng)用是自動(dòng)控制,串ロ無疑是設(shè)備控制的最佳選擇,如何實(shí)現(xiàn)高效、精確、實(shí)時(shí)的串ロ通信是嵌入式控制編程的一大任務(wù)。目前很多芯片的功能是多元化的,其外設(shè)也不會(huì)針對(duì)某個(gè)特殊應(yīng)用特別設(shè)計(jì),因此就可能出現(xiàn)串口數(shù)量不夠等問題,此時(shí),如何巧妙高效的復(fù)用串ロ是降低系統(tǒng)復(fù)雜程度、提升系統(tǒng)健壯性的關(guān)鍵。在一些應(yīng)用中,通過增加開關(guān)和設(shè)置軟件參數(shù),并對(duì)寄存器進(jìn)行控制的方式,解決在同一串口上驅(qū)動(dòng)功能與調(diào)試輸出功能分時(shí)復(fù)用的問題,以保證串ロ驅(qū)動(dòng)功能與調(diào)試輸出功能之間順暢地進(jìn)行切換。這種應(yīng)用中,匹配終端所需要執(zhí)行的功能設(shè)置ー個(gè)標(biāo)志位,并在如手機(jī)串ロ與功能模塊之間增加ー屏蔽開關(guān),使串ロ驅(qū)動(dòng)與調(diào)試輸出互斥,通過所述標(biāo)志位表示如串ロ驅(qū)動(dòng)的狀態(tài),調(diào)試輸出根據(jù)該狀態(tài)而呈現(xiàn)出另一種狀態(tài),據(jù)以實(shí)現(xiàn)串ロ驅(qū)動(dòng)功能與調(diào)試輸出功能之間的切換。這種方式只能分時(shí)段的進(jìn)行相關(guān)功能的切換,相互制約,串ロ并不能得到有效地使用。Linux系統(tǒng)為終端設(shè)備提供了豐富的接ロ,巧妙的運(yùn)用這些接ロ函數(shù)能解決ー些常規(guī)思路不能解決的問題,而且還不會(huì)影響當(dāng)前常規(guī)的應(yīng)用,其中ioctl ()函數(shù)能根據(jù)參數(shù)的不同回傳特定的數(shù)據(jù)或者參數(shù),發(fā)明人認(rèn)為對(duì)Linux提供的接ロ函數(shù)進(jìn)行探索來解決串ロ分時(shí)復(fù)用方面的問題尤其可行性。

發(fā)明內(nèi)容
因此,本發(fā)明從串ロ驅(qū)動(dòng)入手,提供ー種嵌入式系統(tǒng)中串ロ分時(shí)復(fù)用方法,在不影響原有線路規(guī)程的情況下,實(shí)現(xiàn)了直接獲取串口數(shù)據(jù)的目的,從而實(shí)現(xiàn)串ロ復(fù)用。本發(fā)明采用以下技術(shù)方案
該發(fā)明ー種嵌入式系統(tǒng)中串ロ分時(shí)復(fù)用方法,包括
1)在驅(qū)動(dòng)層根據(jù)接收到的數(shù)據(jù)的幀頭和幀尾篩選目標(biāo)數(shù)據(jù);
2)把篩選出的所述目標(biāo)數(shù)據(jù)送入數(shù)據(jù)緩沖區(qū);
3)調(diào)用ioctlO函數(shù)把數(shù)據(jù)緩沖區(qū)的所述目標(biāo)數(shù)據(jù)拷貝到應(yīng)用層;4)從應(yīng)用層獲取所述目標(biāo)數(shù)據(jù)。依據(jù)本發(fā)明的上述嵌入式系統(tǒng)中串ロ分時(shí)復(fù)用方法,從串ロ驅(qū)動(dòng)入手,從串ロ接收函數(shù)篩選目標(biāo)數(shù)據(jù),把篩選出來的目標(biāo)數(shù)據(jù)送入數(shù)據(jù)緩沖區(qū),利用ioctlO函數(shù)把數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)拷貝到應(yīng)用層,這樣既不影響原有的線路規(guī)程,還實(shí)現(xiàn)了直接獲取串口數(shù)據(jù)的目的,從而實(shí)現(xiàn)串ロ服用。上述嵌入式系統(tǒng)中串ロ分時(shí)復(fù)用方法,所述步驟I)中篩選目標(biāo)數(shù)據(jù)的過程是通過數(shù)據(jù)幀頭和幀尾來確定幀尾是否是所需要的數(shù)據(jù)幀,若是,則將對(duì)應(yīng)的目標(biāo)數(shù)據(jù)放入到數(shù)據(jù)緩沖區(qū),同時(shí),數(shù)據(jù)緩沖區(qū)標(biāo)志位置位;如果不是則不做處理。上述嵌入式系統(tǒng)中串ロ分時(shí)復(fù)用方法,串ロ建立連接后,接收函數(shù)按字節(jié)開始接收數(shù)據(jù),在接收到幀頭ー計(jì)數(shù)器開始計(jì)數(shù),并在接收到幀尾后停止計(jì)數(shù),通過計(jì)數(shù)器的計(jì)數(shù)判斷數(shù)據(jù)的類型。上述嵌入式系統(tǒng)中串ロ分時(shí)復(fù)用方法,如果收到應(yīng)用層獲取所述目標(biāo)數(shù)據(jù)的命令 后,首先判斷該命令與數(shù)據(jù)緩沖區(qū)所存放數(shù)據(jù)是否對(duì)應(yīng),若對(duì)應(yīng),則讀取緩沖區(qū)標(biāo)志,如果是標(biāo)志位置位,則使用copy_to_user O函數(shù)把對(duì)應(yīng)的命令巾貞拷貝到itctl O函數(shù)傳輸?shù)牡刂?,并返回約定好的返回值,確認(rèn)返回值后緩沖區(qū)標(biāo)志清零。


圖I為依據(jù)本發(fā)明的一種驅(qū)動(dòng)層篩選數(shù)據(jù)的流程圖。圖2為依據(jù)本發(fā)明的一種應(yīng)用層獲取數(shù)據(jù)的流程圖。圖3為內(nèi)核層ioctl O函數(shù)處理流程圖。
具體實(shí)施例方式應(yīng)用于控制領(lǐng)域的數(shù)據(jù)一般都是約定好的具有幀頭和幀尾的命令幀,但由于依據(jù)本發(fā)明的方法顯然也可以應(yīng)用于其他數(shù)據(jù)的篩選和應(yīng)用,針對(duì)不同的數(shù)據(jù),其幀長(zhǎng)和幀頭都有規(guī)范定義,因此,應(yīng)用本發(fā)明的方法,匹配不同的數(shù)據(jù)類型,可以獲得所需要的目標(biāo)數(shù)據(jù)。在以下的內(nèi)容中,以命令幀為例進(jìn)行說明,也在于在控制領(lǐng)域的數(shù)據(jù)一般都是約定好的具有幀頭和幀尾的命令幀,且也相對(duì)最為重要。應(yīng)當(dāng)理解的是,在如圖I至3所示的流程中,針對(duì)命令幀數(shù)據(jù)的獲得,其他數(shù)據(jù)的排除可知,數(shù)據(jù)類型多樣同樣存在于控制領(lǐng)域,且也據(jù)此可知相應(yīng)不同的目標(biāo)數(shù)據(jù)的獲得,可以針對(duì)不同的數(shù)據(jù),最終獲取所需要的數(shù)據(jù)類型。針對(duì)其他類型的數(shù)據(jù),概括的表現(xiàn)在與如說明書附圖I至3所示的命令幀相同的處理流程中。參照說明書附圖1,針對(duì)以命令幀為目標(biāo)數(shù)據(jù),串ロ接收函數(shù)按字節(jié)開始接受數(shù)據(jù),依據(jù)幀頭特征,接收到幀頭,分配一個(gè)計(jì)數(shù)器,在接收到幀頭后開始計(jì)數(shù),依據(jù)命令幀的字節(jié)數(shù),接收到既定的字節(jié)數(shù)后通過判斷是否接收到對(duì)應(yīng)的幀尾,從而依據(jù)命令真的長(zhǎng)度確定接收到的數(shù)據(jù)是否為命令幀。在此過程中,如果在既定的字節(jié)數(shù)后的字節(jié)并非幀尾,丟掉該數(shù)據(jù),或者轉(zhuǎn)由Linux終端設(shè)備線路規(guī)程處理,減少運(yùn)算量。在一些應(yīng)用中,某些幀頭會(huì)有命令幀標(biāo)識(shí),同通過該標(biāo)識(shí)確定數(shù)據(jù)類型,可以據(jù)此省略命令幀獲取的后續(xù)步驟。
在圖I所示的流程中,在計(jì)數(shù)器累積的數(shù)值等于命令幀字節(jié)數(shù)時(shí),通過判斷幀尾確定是否為命令幀,若非,則對(duì)下ー幀數(shù)據(jù)進(jìn)行判斷;若是,則將該幀數(shù)據(jù)拷貝到數(shù)據(jù)緩沖區(qū),同時(shí)該數(shù)據(jù)緩沖區(qū)標(biāo)志置位,以備調(diào)用。如圖2所示,是應(yīng)用層調(diào)用ioctl O函數(shù)獲取數(shù)據(jù)的流程,串ロ驅(qū)動(dòng)的ioctl O函數(shù)在被調(diào)用后,如果是應(yīng)用層獲取數(shù)據(jù)的命令,則判斷數(shù)據(jù)緩沖區(qū)的標(biāo)志,如果標(biāo)志置位,則使用C0py_t0_User()函數(shù)把數(shù)據(jù)緩沖區(qū)的命令幀拷貝到itctl O函數(shù)傳入的地址,并返回約定好的特定的返回值。進(jìn)而,依據(jù)說明書附圖3,應(yīng)用層獲取數(shù)據(jù)的步驟為應(yīng)用層獲取數(shù)據(jù)的函數(shù)接ロ是ioctl O函數(shù),調(diào)用該函數(shù)時(shí)需要兩個(gè)參數(shù)獲取數(shù)據(jù)的命令和數(shù)據(jù)返回地址。調(diào)用函數(shù)后,如果返回值為所述的約定好的特定的返回值,則返回地址中就是需要的命令幀。在前述的內(nèi)容中,在數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)被應(yīng)用層調(diào)取后,緩沖區(qū)的標(biāo)志清零。
經(jīng)過大量的長(zhǎng)時(shí)間實(shí)驗(yàn),依據(jù)本發(fā)明的在嵌入式系統(tǒng)中應(yīng)用的串ロ分時(shí)復(fù)用方法能夠相對(duì)高效的接收串口數(shù)據(jù),復(fù)用的串ロ能完成兩個(gè)獨(dú)立的功能,互不影響。
權(quán)利要求
1.一種嵌入式系統(tǒng)中串口分時(shí)復(fù)用方法,其特征在于,包括 1)在驅(qū)動(dòng)層根據(jù)接收到的數(shù)據(jù)的幀頭和幀尾篩選目標(biāo)數(shù)據(jù); 2)把篩選出的所述目標(biāo)數(shù)據(jù)送入數(shù)據(jù)緩沖區(qū); 3)調(diào)用ioctlO函數(shù)把數(shù)據(jù)緩沖區(qū)的所述目標(biāo)數(shù)據(jù)拷貝到應(yīng)用層; 4)從應(yīng)用層獲取所述目標(biāo)數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的嵌入式系統(tǒng)中串口分時(shí)復(fù)用方法,其特征在于,所述步驟I)中篩選目標(biāo)數(shù)據(jù)的過程是通過數(shù)據(jù)幀頭和幀尾來確定幀尾是否是所需要的數(shù)據(jù)幀,若是, 則將對(duì)應(yīng)的目標(biāo)數(shù)據(jù)放入到數(shù)據(jù)緩沖區(qū),同時(shí),數(shù)據(jù)緩沖區(qū)標(biāo)志位置位;如果不是則不做處理。
3.根據(jù)權(quán)利要求2所述的嵌入式系統(tǒng)中串口分時(shí)復(fù)用方法,其特征在于,串口建立連接后,接收函數(shù)按字節(jié)開始接收數(shù)據(jù),在接收到幀頭一計(jì)數(shù)器開始計(jì)數(shù),并在接收到幀尾后停止計(jì)數(shù),通過計(jì)數(shù)器的計(jì)數(shù)判斷數(shù)據(jù)的類型。
4.根據(jù)權(quán)利要求2或3所述的嵌入式系統(tǒng)中串口分時(shí)復(fù)用方法,其特征在于,如果收到應(yīng)用層獲取所述目標(biāo)數(shù)據(jù)的命令后,首先判斷該命令與數(shù)據(jù)緩沖區(qū)所存放數(shù)據(jù)是否對(duì)應(yīng),若對(duì)應(yīng),則讀取緩沖區(qū)標(biāo)志,如果是標(biāo)志位置位,則使用copy_to_user O函數(shù)把對(duì)應(yīng)的命令幀拷貝到itctlO函數(shù)傳輸?shù)牡刂罚⒎祷丶s定好的返回值,確認(rèn)返回值后緩沖區(qū)標(biāo)志清零。
全文摘要
本發(fā)明公開了一種嵌入式系統(tǒng)中串口分時(shí)復(fù)用方法,包括1)在驅(qū)動(dòng)層根據(jù)接收到的數(shù)據(jù)的幀頭和幀尾篩選目標(biāo)數(shù)據(jù);2)把篩選出的所述目標(biāo)數(shù)據(jù)送入數(shù)據(jù)緩沖區(qū);3)調(diào)用ioctl()函數(shù)把數(shù)據(jù)緩沖區(qū)的所述目標(biāo)數(shù)據(jù)拷貝到應(yīng)用層;4)從應(yīng)用層獲取所述目標(biāo)數(shù)據(jù)。依據(jù)本發(fā)明的串口分時(shí)復(fù)用方法不影響原有線路規(guī)程的情況下,實(shí)現(xiàn)了直接獲取串口數(shù)據(jù)的目的,從而實(shí)現(xiàn)串口復(fù)用。
文檔編號(hào)G06F13/38GK102866976SQ20121034366
公開日2013年1月9日 申請(qǐng)日期2012年9月17日 優(yōu)先權(quán)日2012年9月17日
發(fā)明者劉國(guó)興, 李同磊, 魏光旭, 徐勤浦 申請(qǐng)人:山東神戎電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
和林格尔县| 游戏| 伊金霍洛旗| 孙吴县| 且末县| 蒙山县| 方山县| 崇礼县| 通城县| 海口市| 达州市| 永川市| 芦溪县| 永福县| 报价| 永春县| 腾冲县| 牡丹江市| 酉阳| 龙游县| 奈曼旗| 济宁市| 东乌珠穆沁旗| 虹口区| 灵武市| 连山| 武山县| 玉山县| 宁陵县| 建瓯市| 莲花县| 山西省| 迁安市| 吴桥县| 海原县| 财经| 特克斯县| 福鼎市| 宜川县| 佛山市| 巨野县|