4G上網卡NIDS撥號之Rmnet驅動


  4G上網卡一般為雙對外通訊口,一個是串口、一個是USB。

  但是基於串口的常用波特率為115200,速度過於底下,所以大多使用USB。

   1)一般來說常用ppp撥號方式,ppp撥號方式分為應用層pppd與驅動層pppk。

    驅動層pppk通訊主要接口為ppp_async_send與tty->ldisc->receive_buf,並調用tty驅動,而tty驅動轉為USB則需要針對GSM/CDMA的usb_wwan、option驅動,而usb_wwan驅動又依賴於usb-serial基礎轉換。此時驅動已經將通訊轉換為USB。

    應用層pppd主要以option腳本、chat腳本、ppp應用,進行發送AT命令,撥號上網。

  2)當不使用ppp撥號方式,而是使用NDIS撥號,那么ppp軟件沒有了,就需要替代他的東西,這時候,需要三樣東西:Rmnet驅動 + dhclient + minicom/echo命令。當然Rmnet驅動也是USB總線驅動。而由於發送AT命令是以串口發送,所以依舊需要usb-serial、usb_wwan、option驅動進行串口USB轉換。

  值此特別聲明:USB設備驅動架構:分為HID、CDC、mass storage,而Rmnet是非標准的Rmnet驅動。NDIS是windows提出的網絡驅動接口規范,linux下並沒有。

  以下就是USB總線方式的Rmnet驅動流程:

  • 注冊驅動  :module_init(NDIS_Init);
  • 創建類   :Rmnet_class= class_create( THIS_MODULE, "Rmnet_class" );
  • 注冊USB設備:usb_register(&usb_drv_Rmnet);
  • 定義    :static struct usb_driver usb_drv_Rmnet{...};
  • 探針函數

    int Rmnet_Probe( struct usb_interface * usb_interf, const struct usb_device_id * usb_devid)

    •   獲取端點信息
      • cur_altsetting->desc.bInterfaceNumber
      • cur_altsetting->desc.bNumEndpoints
      • cur_altsetting->endpoint

  

未完待續....


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM