亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Linux下TDM模塊的USB主機端驅動的開發(fā)

        2011-08-09 05:04:22輝,向濤,張
        電視技術 2011年19期
        關鍵詞:驅動程序命令串口

        劉 輝,向 濤,張 杰

        (1.重慶郵電大學重慶信科設計有限公司,重慶 400065;2.重慶郵電大學通信新技術應用研究所,重慶 400065)

        責任編輯:孫 卓

        0 引言

        TDM330是重郵信科通信技術有限公司研發(fā)的TDSCDMA無線模塊。模塊提供了100PIN或者MINIPCI接口,為語音傳輸、短消息和數據業(yè)務的開發(fā)提供了接口,支持2.8 Mbit/s的HSDPA數據和2.2 Mbit/s的HSUPA傳輸速率。TDM330在硬件上不僅提供了RS-232串口,也提供一種易于使用的高速率數據傳輸的USB接口。全速USB的速率理論值能達到12 Mbit/s,而RS-232串口速率的理論值只能達到幾百kbit/s。相對于 USB而言,RS-232串口傳輸的速度受到很大的限制,會導致在傳輸過程出現嚴重的數據丟包現象,因此本文通過開發(fā)USB的主機端驅動來使之開發(fā)板子DM6467與TD無線上網TDM330之間通過USB接口進行傳輸數據。同時,TDM芯片主機端的USB驅動將成為TD無線傳輸項目開發(fā)的必要環(huán)節(jié)。

        1 TDM330適配的USB驅動分析

        TDM330設備支持USB接口連接,應用層的數據需要通過USB接口與TDM330模塊設備進行交互。根據USB主機端驅動[1-2]結構圖(見圖1)可以了解到用戶只能和TTY層、字符設備等層之間進行數據的交流,而不能直接與USB驅動層進行數據的交流。由于TDM330在開發(fā)中僅僅用于數據業(yè)務通信,因此可以把USB設備驅動的上層看成TTY層。用戶可以通過TTY層與USB設備驅動層進行通信。所以Linux的用戶需要針對TDM330模塊開發(fā)USB主機端驅動,使之能夠枚舉多個ttyUSB串口(至少2個),使其在使用TDM330模塊設備時,1個串口用于數據的傳輸,1個串口用于命令的傳輸。例如1個C口,可以用來進行AT命令交互,如啟動協(xié)議棧(AT^SPSS=0)。C口一般對應設備描述名為/dev/ttyUSB1。1個是D口,用來撥號。D口一般對應設備描述名為/dev/ttyUSB0。

        圖1 Linux主機端的驅動

        由于USB驅動程序綁定在USB接口而不是USB設備,所以TDM330模塊USB驅動只需要實現接口驅動。其針對TDM330模塊開發(fā)USB接口驅動,至少要滿足能夠枚舉出用于命令和數據傳輸的2個tty串口的需要,所以TDM330模塊USB主機端的驅動還要負責將USB轉成串口,生成tty串口。

        2 USB轉tty串口分析

        對于本次開發(fā),由于USB設備驅動上層可看成tty設備,不屬于任何USB設備類型,一般USB都可以使用這個usbserial模塊驅動來作為主機端USB設備驅動。因此,TDM330的主機端驅動就以usbserial模塊作為設備驅動程序。根據圖1可知,由于和應用層交互數據的是TTY層,因此,必須用usbserial模塊把USB設備映射成一個tty設備(即在/dev/目錄下為該USB設備創(chuàng)建一個tty設備文件),然后才能用串口與tty設備交互數據[3],并通過USB接口與設備端的設備(TDM330)通信。

        2.1 分析usbserial模塊

        分析內核 Linux 2.6.10 的./drivers/usb/serial/makefile為:

        通過以上的makefile可以得出usbserial模塊主要由usb -serial.c,generic.c 和 bus.c 三部分組成:

        1)usb-serial.c就是usbserial模塊的核心,主要用來接收設備端發(fā)來的數據并傳送到上層,同時也是接收來自上層應用的數據,并組裝成urb包發(fā)送發(fā)給設備。

        2)generic.c是對某一設備的單獨操作,相當于設備自己的驅動程序,由于很多設備具有通用性,所以對于沒有特殊要求的設備都可以使用這個驅動作為自己的設備驅動程序。

        3)bus.c每個USB驅動和設備都必須要歸入某一條總線上,即都是歸屬于某條總線的,只有這樣系統(tǒng)才能從特定的某一條總線開始找每個驅動和設備并為之匹配,這個文件是用來模擬一條總線,而usbserial的每個驅動和總線都會注冊到這條總線上來。

        2.2 數據在usbserial模塊的通信過程[4]

        對于發(fā)送過程。tty設備文件在獲取了用戶數據要求之后傳遞到下層usbserial模塊的核心層,而該模塊核心層就是將數據打包成USB格式的數據,并通過USB主機控制器發(fā)送到USB設備端去。

        對于接收過程。usbserial模塊會在該設備打開時啟動一個URB等待設備發(fā)送數據過來,收到數據后就調用push函數把數據推到上層的tty設備的緩沖區(qū)去,tty設備收到數據以后就直接發(fā)給用戶,或者直接顯示在串口工具上。

        3 內核模塊的加載

        Linux操作系統(tǒng)為了擴展其功能,使用可動態(tài)加載和卸載的內核模塊LKM[5]。Linux 使用insmod/modprobe 來加載內核模塊,使用rmmod命令來卸載內核模塊。LKM的優(yōu)點是可以通過動態(tài)加載和卸載內核模塊來使內核保持很小的尺寸并非常靈活,無須重構整個內核來運行新的內核代碼。

        根據Linux 2.6的makefile寫法[6]寫 USB轉 serial的usbserial內核模塊的makefile,再進行make編譯生成usbserial.ko,由于開發(fā)板上的usb轉serial芯片被該內核識別為通用芯片,即該內核下的Documentationusbusb-serial文檔沒有提到的一些USB轉串口芯片,并且由于TDM330的vendorID為0x1234,productID為0X0033,因此只需用命令modprobe usbserial vendor=0x1234 product=0x0033動態(tài)加載usbserial.ko時即可,不用加載USB轉serial具體芯片的驅動,卸載模塊命令為rmmod usbserial。

        4 運行結果

        開發(fā)板子上電并通過USB接口插上TDM330模塊,運行加載usbserial模塊命令,命令為modprobe usbserial vendor=0x1234 product=0x0033,加載這個模塊以后,詳細信息如圖2所示。

        圖2 加載模塊后的詳細信息(截圖)

        根據此結果可以得出,generic converter芯片被檢測到,并且該芯片的驅動掛載到ttyUSB的3個設備文件上,然后用戶就可以像操作tty串口文件一樣的操作該設備文件。運行查看USB設備所映射的串口ttyUSB設備文件的命令ls/dev/ttyUSB*[7],具體如圖3所示。

        圖3 運行命令圖(截圖)

        根據以上結果可以得出USB設備映射成ttyUSB0,tty-USB1,ttyUSB2三個設備文件。應用程序通過這些文件可對實際的USB進行操作。用串行通信調試工具(SCT)進行串口通信調試。調試步驟為:1)運行命令sct啟動協(xié)議棧;2)通過命令setbuf 1 hex設置buf1的數據;3)通過命令port/dev/ttyUSB0指定使用的端口;4)通過命令open打開指定的端口;5)通過命令sendrecv 10向打開的端口發(fā)送buf 1的數據,并把接收的數據存到buf 0,同時在終端顯示接收到的數據。如圖4所示。

        圖4 顯示結果(截圖)

        根據以上結果的分析得出,已經把USB設備映射為串口設備,相應的驅動已經掛載在相應的接口上,并且可以通過串口ttyUSB*來操作USB設備。這樣就可以通過PPP撥號與無線網絡連接在一起,然后應用于TD網絡的無線傳輸。

        [1]夏傳凱,吳乃陵.基于AT91RM9200的USB主機端的linux驅動[J].現代電子技術,2008(12):49-50.

        [2]孫天澤,袁文菊,張海峰,等.嵌入式設計及Linux驅動開發(fā)指南-基于ARM9處理器[M].北京:電子工業(yè)出版社,2007.

        [3]宋寶華.Linux設備驅動開發(fā)詳解[M].北京:人民郵電出版社,2008.

        [4]徐維迪,石紹應,喬建軍.Linux環(huán)境USB轉串口設備的驅動程序開發(fā)[J].空軍雷達學院學報,2008,22(1):65 -67.

        [5]羅苑棠.嵌入式Linux驅動程序和系統(tǒng)開發(fā)實例講解[M].北京:電子工業(yè)出版社,2009.

        [6]陳剛,盧顯斌.基于linux-2.6內核模塊程序設計[J].福建電腦,2004(6):15-16.

        [7]周金和,劉泉華.基于ISP1161的USB攝像頭嵌入式Linux設備驅動[J].電視技術,2006,30(3):81 -84.

        猜你喜歡
        驅動程序命令串口
        只聽主人的命令
        淺談AB PLC串口跟RFID傳感器的通訊應用
        移防命令下達后
        USB接口的多串口數據并行接收方法探索
        這是人民的命令
        基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
        地礦測繪(2015年3期)2015-12-22 06:27:26
        基于并行控制的FPGA多串口拓展實現
        藍色命令
        驅動程序更新與推薦
        驅動程序更新與推薦
        一区二区三区激情免费视频| 久久男人av资源网站无码| 国产成人无码免费网站| 曰韩精品无码一区二区三区| 热门精品一区二区三区| 国产乱理伦在线观看美腿丝袜| 亚洲精品无码久久久| 亚洲依依成人综合在线网址| 日本一区二区国产高清在线播放 | 日本免费精品一区二区三区视频| 亚洲综合网国产精品一区| 欧美亚洲国产片在线播放| 调教在线播放黄| 亚洲一区二区三区18| 中文人妻av久久人妻水蜜桃| 国产成人麻豆精品午夜福利在线| 久久天天躁狠狠躁夜夜中文字幕| 亚洲hd高清在线一区二区| 欧美黑人又大又粗xxxxx| 欧美国产日本高清不卡| 国产亚洲女人久久久久久| 一区二区三区亚洲视频 | 蜜桃免费一区二区三区| 国产欧美日韩综合精品一区二区| 亚洲自拍另类制服在线| 青青草伊人视频在线观看| 在线精品国产亚洲av蜜桃| 亚洲欧洲精品无码av| 亚洲AV永久天堂在线观看| 国产一区精品二区三区四区| 日本成本人片视频免费| 国产av国片精品| 绿帽人妻被插出白浆免费观看| 日韩精品极品免费视频观看| 天天夜碰日日摸日日澡| 全部免费国产潢色一级| 美女被内射中出在线观看| 国产免费一区二区三区免费视频 | 一区二区三区在线视频观看| 国产亚洲2021成人乱码| 国产午夜亚洲精品理论片不卡|