<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 詳解嵌入式Linux的USB驅(qū)動(dòng)設(shè)計(jì)

          詳解嵌入式Linux的USB驅(qū)動(dòng)設(shè)計(jì)

          作者: 時(shí)間:2014-01-22 來(lái)源:網(wǎng)絡(luò) 收藏

          詳解嵌入式Linux的USB驅(qū)動(dòng)設(shè)計(jì)

            1.3.4 設(shè)備注銷

            skel_disconnect()函數(shù)在注銷設(shè)備時(shí)被調(diào)用,定義如下:

          詳解嵌入式Linux的USB驅(qū)動(dòng)設(shè)計(jì)

          2 USB串口驅(qū)動(dòng)

            2. 1 驅(qū)動(dòng)初始化函數(shù)

            usb_serial_init()函數(shù)是一個(gè)典型的USB設(shè)備驅(qū)動(dòng)初始化函數(shù),定義如下:

          詳解嵌入式Linux的USB驅(qū)動(dòng)設(shè)計(jì)

            函數(shù)首先調(diào)用alloc_tty_driver()函數(shù)分配一個(gè)串口驅(qū)動(dòng)描述符;然后設(shè)置串口驅(qū)動(dòng)的屬性,包括驅(qū)動(dòng)的主從設(shè)備號(hào)、設(shè)備類型、串口初始化參數(shù)等;串口驅(qū)動(dòng)描述符設(shè)置完畢后,調(diào)用usb_register()函數(shù)注冊(cè)USB串口設(shè)備。

            2. 2 驅(qū)動(dòng)釋放函數(shù)

          詳解嵌入式Linux的USB驅(qū)動(dòng)設(shè)計(jì)

            2.3 串口操作函數(shù)

            USB串口設(shè)備驅(qū)動(dòng)使用了一個(gè)tty_operations類型的結(jié)構(gòu),該結(jié)構(gòu)包含了串口的所有操作,定義如下:

          詳解嵌入式Linux的USB驅(qū)動(dòng)設(shè)計(jì)

            按上述的步驟和方法通過(guò)lnsmod命令成功實(shí)現(xiàn)了程序的加載,成功的通過(guò)USB串口進(jìn)行了數(shù)據(jù)的讀寫(xiě)。

            3 結(jié)論

            新出的2.6內(nèi)核加入了對(duì)USB2.0的支持,重新定義了usb_class_driver結(jié)構(gòu)體。同時(shí)對(duì)探測(cè)函數(shù)probe和usb_submit_urb做了修改,包含了advanced linux sound Archiecture可以更安全的使用USB設(shè)備。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();