zoukankan      html  css  js  c++  java
  • 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

      

    未完待续....

  • 相关阅读:
    6-2 铁轨 uva 514
    并查集基础
    周练7
    周练5
    周练4
    二分查找
    周练3
    2-7 使用不同方式进行定位.py
    2-6 使用title_contains检查页面是否正确
    启用不同浏览器.py
  • 原文地址:https://www.cnblogs.com/pokerface/p/5783120.html
Copyright © 2011-2022 走看看