專利名稱:實(shí)現(xiàn)Linux平臺(tái)下無需內(nèi)核添加驅(qū)動(dòng)的MUX協(xié)議的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種多路復(fù)用無線通信方法,具體地說,是在Linux軟件平 臺(tái)實(shí)現(xiàn)符合GSM 07.10多路復(fù)用協(xié)議的數(shù)據(jù)交換方法。
背景技術(shù):
隨著通信技術(shù)的發(fā)展,無線通信領(lǐng)域的影響日益廣泛,也建立了 GSM 07.10多路復(fù)用協(xié)議,使語音、傳真、數(shù)據(jù)、短信、小區(qū)廣播服務(wù)、電話本 維護(hù)、電池狀態(tài)、GPRS上網(wǎng)等多路同時(shí)進(jìn)行成為可能。雖然,在手機(jī)上網(wǎng)的同時(shí),用戶可以接聽或撥打電話;本發(fā)明人提出和 實(shí)現(xiàn)了該方案,而且實(shí)踐表明該方案能夠穩(wěn)定、快速地支持多路復(fù)用的場(chǎng)合。但是,在Liimx開發(fā)應(yīng)用領(lǐng)域,目前還沒有出現(xiàn)簡(jiǎn)便的、開發(fā)周期短的、 符合GSM 07.10多路復(fù)用協(xié)議的應(yīng)用方案。發(fā)明內(nèi)容綜上所述,如何在Linux軟件平臺(tái)下的控制GSM/GPRS模塊MS端實(shí)現(xiàn), 同時(shí)進(jìn)行語音、傳真、數(shù)據(jù)、短信、小區(qū)廣播服務(wù)、電話本維護(hù)、電池狀態(tài)、 GPRS上網(wǎng)等多路操作,乃是本發(fā)明所要解決的技術(shù)問題,為此,本發(fā)明的 目的在于,提供一種實(shí)現(xiàn)Linux軟件平臺(tái)下無需內(nèi)核添加驅(qū)動(dòng)的MUX協(xié)議 的方法。本發(fā)明的技術(shù)方案如下本發(fā)明使用Linux內(nèi)核自帶的偽串口對(duì)(如ttya0和ptya0為一對(duì)偽串 口, ttyaO為從偽串口, ptyaO為主偽串口。由從偽串口 (ttyai)寫入的數(shù)據(jù),)收到;反之也然。),在TE端和GSM/GPRS模塊(MS 端)間傳送符合GSM 07.10文件規(guī)定的多路復(fù)用協(xié)議數(shù)據(jù),這樣,解決了 Linux平臺(tái)下,單一物理串口實(shí)現(xiàn)GSM 07.10多路復(fù)用協(xié)議的難題,并適應(yīng) Linux 2.4以上內(nèi)核版本,具有所有功能開發(fā)均在應(yīng)用層實(shí)現(xiàn),無需涉及相 對(duì)繁瑣的驅(qū)動(dòng)級(jí)開發(fā)的解決思路。為此,本發(fā)明的技術(shù)方案的實(shí)現(xiàn)步驟如下-步驟l、配置Linux內(nèi)核,配置偽串口選項(xiàng);Linux控制臺(tái)下,輸入"make menuconfig"進(jìn)入Linux內(nèi)核配置,選中偽 串口選項(xiàng);步驟2、完成內(nèi)核偽串口配置后,先運(yùn)行多路復(fù)用后臺(tái)處理程序,打開主偽串口 ptyai (ptyai, ttyai標(biāo)識(shí)中最后的Y實(shí)際使用時(shí)為數(shù)字,后同, 如:,O,,T……);步驟3、然后,運(yùn)行應(yīng)用程序(如短信、GPRS上網(wǎng)或AT命令程序),打 開從偽串口 ttyai;步驟4、視應(yīng)用而定,應(yīng)用程序向從偽串口 ttyai寫入數(shù)據(jù);步驟5、對(duì)應(yīng)地,主偽串口(ptyai)收到數(shù)據(jù),多路復(fù)用后臺(tái)處理程序讀取該數(shù)據(jù),并對(duì)數(shù)據(jù)組幀后送物理串口(如ttySO,和移動(dòng)終端相連); (具體數(shù)據(jù)組幀格式參見GSM 07.10多路復(fù)用協(xié)議文件規(guī)定),步驟6、若物理串口(如ttySO)收到數(shù)據(jù),多路復(fù)用后臺(tái)處理程序讀取 該數(shù)據(jù)并進(jìn)行解幀;步驟7、然后,多路復(fù)用后臺(tái)處理程序?qū)⒔鈳髷?shù)據(jù)送對(duì)應(yīng)主偽串口 ptyah步驟8、最后應(yīng)用程序讀取、處理從偽串口 ttyai數(shù)據(jù)。 本發(fā)明的優(yōu)點(diǎn)①解決了Linux平臺(tái)下,單一物理串口實(shí)現(xiàn)GSM 07.10多路復(fù)用協(xié)議的難題;②具有所有功能開發(fā)均在應(yīng)用層實(shí)現(xiàn),無需涉及相對(duì)繁瑣的驅(qū)動(dòng)級(jí)開發(fā)的優(yōu)點(diǎn)。
圖1是本發(fā)明終端設(shè)備的實(shí)現(xiàn)架構(gòu)示意圖; 圖2是本發(fā)明中應(yīng)用程序數(shù)據(jù)收發(fā)流程示意圖;圖3是本發(fā)明中的實(shí)施例(多從偽終端讀寫程序,支持1 4路AT通道同時(shí)讀寫)的系統(tǒng)連接示意圖;圖4是本發(fā)明中圖3所示系統(tǒng)的多路復(fù)用后臺(tái)處理程序流程示意圖。 圖5是本發(fā)明中圖3所示系統(tǒng)的通信應(yīng)用程序打開一個(gè)從偽串口的運(yùn)行流程示意圖。
具體實(shí)施方式
結(jié)合圖1和圖2給出本發(fā)明一個(gè)具體實(shí)施例(如圖3~圖5所示)。 圖3為實(shí)施例的最小系統(tǒng)連接示意圖。 表l給出了系統(tǒng)的平臺(tái)配置類別配置開發(fā)環(huán)境硬件Mel 2GHz操作系統(tǒng)Linux-2.6.15集成開發(fā)環(huán)境Kdevelop3交叉編譯器gcc2.9.5.3目標(biāo)平臺(tái)TE端Atmel-RM9200操作系統(tǒng)Linux2.4.19移動(dòng)終端MS端SIM300模塊及配套EVB圖3中CPU1分別與閃存(Flash) 2,內(nèi)存(DRAM) 3成雙向電路聯(lián)結(jié),構(gòu)成了支持Linux的最小硬件系統(tǒng),CPU1與串口 (支持MUX協(xié)議Sim 模塊)4聯(lián)結(jié)。本實(shí)施例系統(tǒng)中,TE端運(yùn)行通信應(yīng)用程序ATTes如下t:(1) 打開和設(shè)置從偽串口 (比如ttyaO);(2) 監(jiān)視從偽串口接收數(shù)據(jù),有數(shù)據(jù),則根據(jù)特定應(yīng)用處理;(3) 因應(yīng)用而定,向從串口發(fā)送特定數(shù)據(jù);
(4) 重復(fù)(1)(2)(3)步驟,分別打開Uyal, ttya2, ttya3;
(5) 現(xiàn)在ttya0 ttya3,每個(gè)通道均相當(dāng)于連接了一個(gè)標(biāo)準(zhǔn)MODEM,可以 同時(shí)進(jìn)行特定應(yīng)用。
Linux控制臺(tái)下,以以下命令啟動(dòng)通信應(yīng)用程序(ttya0 ttya3均打開): #./ATTest0123
通信應(yīng)用程序打開一個(gè)從偽串口的運(yùn)行流程如圖4;類似地,多個(gè)偽串 口的處理可以通過fork進(jìn)程的辦法獲得多路并行收發(fā)的效果。
后臺(tái)程序MuxDaemon是直接在Linux Os應(yīng)用層運(yùn)行的守護(hù)進(jìn)程,通
過Linux下IO Select機(jī)制實(shí)習(xí)高效率的串口數(shù)據(jù)輪循,并對(duì)數(shù)據(jù)出/入進(jìn)行
GSM 0.70協(xié)議的轉(zhuǎn)換,從而達(dá)到本發(fā)明在應(yīng)用層進(jìn)行簡(jiǎn)單的設(shè)計(jì)實(shí)現(xiàn)所需
要的功能。
表2開發(fā)或使用的程序如表2所示,
名稱功能
MUXDaemon幵發(fā)的后臺(tái)處理程序 1) 完成偽串口數(shù)據(jù)分別接收打包,并送物理串口中; 2) 完成物理數(shù)據(jù)接收解幀,并送對(duì)應(yīng)偽串口
ATTest開發(fā)的多從偽終端讀寫程序,支持1~4路AT通道同時(shí)讀寫
實(shí)際使用時(shí),需先運(yùn)行多路復(fù)用后臺(tái)處理程序(MUXDaemcm),以建立
多路復(fù)用協(xié)議連接,并打開主偽終端后;再運(yùn)行特定通信應(yīng)用程序,完成特 定應(yīng)用功能(AT命令、GPRS數(shù)據(jù)等)。 關(guān)于運(yùn)行多路復(fù)用后臺(tái)處理程序
Limix控制臺(tái)下,以以下命令啟動(dòng)運(yùn)行多路復(fù)用后臺(tái)處理程序 tt. / MUXDaemon -d~~^
TE端運(yùn)行的多路復(fù)用后臺(tái)處理程序(MUXDaemon)步驟如下 (l)打開和設(shè)置與MS端連接的物理串口 (比如UyS0);(2) 打開和設(shè)置4個(gè)主偽串口;
(3) 通過打開的物理串口向MS端發(fā)送AT命令"AT+CMUX"啟動(dòng)多路復(fù) 用協(xié)議,并建立DLCI映射的4個(gè)AT通道;
(4) 監(jiān)視4個(gè)主偽串口接收數(shù)據(jù),有數(shù)據(jù),則送物理串口數(shù)據(jù)緩沖;
(5) 監(jiān)視物理串口數(shù)據(jù)緩沖,有數(shù)據(jù),則組幀后送物理串口;
(6) 監(jiān)視物理串口接收數(shù)據(jù),有數(shù)據(jù),則解幀后送對(duì)應(yīng)主偽串口。 多路復(fù)用后臺(tái)處理程序運(yùn)行流程如圖5所示。
權(quán)利要求
1.一種Linux平臺(tái)下無需內(nèi)核添加驅(qū)動(dòng)的MUX協(xié)議實(shí)現(xiàn)方法包括步驟1、配置Linux內(nèi)核和偽串口選項(xiàng);步驟2、完成內(nèi)核偽串口配置后,先運(yùn)行多路復(fù)用后臺(tái)處理程序,打開主偽串口ptyai;步驟3、再運(yùn)行應(yīng)用程序打開從偽串口ttyai;步驟4、視應(yīng)用情況,應(yīng)用程序向從偽串口ttyai寫入數(shù)據(jù);步驟5、對(duì)應(yīng)地,主偽串口收到數(shù)據(jù),多路復(fù)用后臺(tái)處理程序讀取該數(shù)據(jù),并對(duì)數(shù)據(jù)組幀后送物理串口;步驟6、如果物理串口收到數(shù)據(jù),多路復(fù)用后臺(tái)處理程序讀取該數(shù)據(jù)并進(jìn)行解幀;步驟7、然后,多路復(fù)用后臺(tái)處理程序?qū)⒔鈳髷?shù)據(jù)送對(duì)應(yīng)主偽串口ptyai;步驟8、最后,應(yīng)用程序讀取、處理從偽串口ttyai數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的Linux平臺(tái)下無需內(nèi)核添加驅(qū)動(dòng)的MUX協(xié)議 實(shí)現(xiàn)方法,其特征在于,步驟1中所述配置Linux內(nèi)核和偽串口選項(xiàng)是在 Linux控制臺(tái)下,輸入"makemenuconfig"進(jìn)入內(nèi)核配置,選中偽串口選項(xiàng)。
3. 根據(jù)權(quán)利要求1所述的Linux平臺(tái)下無需內(nèi)核添加驅(qū)動(dòng)的MUX協(xié)議 實(shí)現(xiàn)方法,其特征在于,步驟2中所述的打開偽串口 ptyai是指ptyai, ttyai 標(biāo)識(shí)中最后的實(shí)際使用時(shí)為數(shù)據(jù),如:'o','r……。
4. 根據(jù)權(quán)利要求1所述的Limix平臺(tái)下無需內(nèi)核添加驅(qū)動(dòng)的MUX協(xié)議 實(shí)現(xiàn)方法,其特征在于,步驟3所述的應(yīng)用程序,包括短信、GPRS上網(wǎng)或 AT命令程序。
5. 根據(jù)權(quán)利要求1所述的Linux平臺(tái)下無需內(nèi)核添加驅(qū)動(dòng)的MUX協(xié)議 實(shí)現(xiàn)方法,其特征在于,步驟5中所述的物理串口與移動(dòng)終端相連。
全文摘要
一種實(shí)現(xiàn)Linux平臺(tái)下無需內(nèi)核添加驅(qū)動(dòng)的MUX協(xié)議的方法,包括步驟S<sub>1</sub>、配置Linux內(nèi)核和偽串口選項(xiàng);S<sub>2</sub>、之后,先運(yùn)行多路復(fù)用后臺(tái)處理程序,打開主偽串口ptyai;S<sub>3</sub>、再運(yùn)行應(yīng)用程序,打開從偽串口ttyai;S<sub>4</sub>、根據(jù)使用情況,應(yīng)用程序向從偽串口ttyai寫入數(shù)據(jù);S<sub>5</sub>、相應(yīng)地,主偽串口收到數(shù)據(jù),多路復(fù)用后臺(tái)處理程序讀取該數(shù)據(jù),并對(duì)數(shù)據(jù)組幀后送物理串口;S<sub>6</sub>、若物理串口收到數(shù)據(jù),多路復(fù)用后臺(tái)處理程序讀取該數(shù)據(jù)并進(jìn)行解幀;S<sub>7</sub>、然后,多路復(fù)用后臺(tái)處理程序?qū)⒔鈳髷?shù)據(jù)送對(duì)應(yīng)主偽串口ptyai;S<sub>8</sub>、最后應(yīng)用程序讀取、處理從偽串口ttyai數(shù)據(jù)。本發(fā)明解決了Linux平臺(tái)下,單一物理串口實(shí)現(xiàn)GSM 07.10多路復(fù)用協(xié)議的難題;所有功能開發(fā)均在應(yīng)用層實(shí)現(xiàn),無需涉及繁瑣的驅(qū)動(dòng)級(jí)開發(fā)。
文檔編號(hào)H04L29/06GK101309121SQ200710040820
公開日2008年11月19日 申請(qǐng)日期2007年5月18日 優(yōu)先權(quán)日2007年5月18日
發(fā)明者華 李, 胡建英 申請(qǐng)人:希姆通信息技術(shù)(上海)有限公司