zoukankan      html  css  js  c++  java
  • 《EC20 — 海思3521d添加EC20驱动》

    如果lsusb没有看到VID和PID,需要查看一下硬件是否有问题。我这边是要把复位引脚拉低。

    1.移植EC20 R2.0(注意是R2.0,是两个不同版本,对应着两个不同的VID和PID)

    1.1将模块插上后:

     可以看到第一个就是已经识别模块。

    1.2/home/hisi3531D/Hi3531DV100_SDK_V1.0.4.0/osdrv/opensource/kernel/linux-3.18.y/drivers/usb/serial/option.c中添加

    1.3删除掉[KERNEL]/drivers/usb/serial/qcserial.c 中的

    删除掉[KERNEL]/drivers/net/usb/qmi_wwan.c

    1.4添加零数据包处理机制:

    [KERNEL]/drivers/usb/serial/usb_wwan.c 中添加

    #if 1
    if (dir == USB_DIR_OUT) { 
     struct usb_device_descriptor *desc = &serial->dev->descriptor; 
     if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9090)) 
     urb->transfer_flags |= URB_ZERO_PACKET; 
     if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9003)) 
     urb->transfer_flags |= URB_ZERO_PACKET; 
     if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9215)) 
     urb->transfer_flags |= URB_ZERO_PACKET; 
     if (desc->idVendor == cpu_to_le16(0x2C7C)) 
     urb->transfer_flags |= URB_ZERO_PACKET; 
    } 
    #endif

    到urb *usb_wwan_setup_urb函数。

    1.5添加复位唤醒

    在kernel/linux-3.18.y/drivers/usb/serial/option.c中

    1.6 Use GobiNet or QMI WWAN

    kernel/linux-3.18.y/drivers/usb/serial/option.c中添加以下代码到static int option_probe

    #if 1
    if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && 
    serial->dev->descriptor.idProduct == cpu_to_le16(0x9003) 
     && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4) 
    return -ENODEV; 
    if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && 
    serial->dev->descriptor.idProduct == cpu_to_le16(0x9215) 
     && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4) 
     return -ENODEV; 
     if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C) 
     && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4) 
     return -ENODEV; 
    #endif

    1.7做完这些,就可以进行内核的配置了

     Make ARCH=arm CROSS_COMPILE=arm-hisiv600-linux- menuconfig,确认以下选项:
    Device Drivers->USB Support-> USB Serial Converter support-> USB driver for GSM and CDMA modems       选择为M或*

    2.移植GObiNet drivers

    2.1 将驱动源码移到[KERNEL]/drivers/net/usb/” 中(里面驱动的makefile不要加进去)

    2.2 配置

    2.3在[KERNEL]/drivers/net/usb/Makefile

    obj-y += GobiNet.o

    GobiNet-objs := GobiUSBNet.o QMIDevice.o QMI.o

    2.4运行编译

    重新编译内核

    3.编译运行quectel-CM

    将源码放在linux中,然后编译。得到输出文件quectel-CM

    放到开发板运行:./quectel-CM -s 3gnet &

    [01-01_00:07:33:691] WCDMA&LTE_QConnectManager_Linux&Android_V1.1.33
    [01-01_00:07:33:692] ./quectel-CM profile[1] = 3gnet///0, pincode = (null)
    [01-01_00:07:33:692] Find /sys/bus/usb/devices/1-1 idVendor=2c7c idProduct=0125
    [01-01_00:07:33:692] Find /sys/bus/usb/devices/1-1:1.4/net/eth1
    [01-01_00:07:33:692] Find usbnet_adapter = eth1
    [01-01_00:07:33:692] Find /sys/bus/usb/devices/1-1:1.4/GobiQMI/qcqmi1
    [01-01_00:07:33:692] Find qmichannel = /dev/qcqmi1
    [01-01_00:07:33:713] Get clientWDS = 7
    [01-01_00:07:33:744] Get clientDMS = 8
    [01-01_00:07:33:776] Get clientNAS = 9
    [01-01_00:07:33:810] Get clientUIM = 10
    [01-01_00:07:33:841] Get clientWDA = 11
    [01-01_00:07:33:873] requestBaseBandVersion EC20CEFAGR06A10M4G
    [01-01_00:07:33:937] requestGetSIMStatus SIMStatus: SIM_READY
    [01-01_00:07:33:937] requestSetProfile[1] 3gnet///0
    [01-01_00:07:34:001] requestGetProfile[1] 3gnet///0
    [01-01_00:07:34:033] requestRegistrationState2 MCC: 460, MNC: 1, PS: Attached, DataCap: LTE
    [01-01_00:07:34:065] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
    [01-01_00:07:34:129] requestRegistrationState2 MCC: 460, MNC: 1, PS: Attached, DataCap: LTE
    [01-01_00:07:34:193] requestSetupDataCall WdsConnectionIPv4Handle: 0x872b2430
    [01-01_00:07:34:289] requestQueryDataCall IPv4ConnectionStatus: CONNECTED
    [01-01_00:07:34:321] ifconfig eth1 up
    GobiNet 1-1:1.4 eth1: kevent 12 may have been dropped
    GobiNet 1-1:1.4 eth1: kevent 12 may have been dropped
    [01-01_00:07:34:335] busybox udhcpc -f -n -q -t 5 -i eth1
    [01-01_00:07:34:339] udhcpc (v1.20.2) started
    [01-01_00:07:34:340] Setting IP address 0.0.0.0 on eth1
    [01-01_00:07:34:368] Sending discover...
    [01-01_00:07:34:428] Sending select for 10.235.222.232...
    [01-01_00:07:34:488] Lease of 10.235.222.232 obtained, lease time 7200
    [01-01_00:07:34:490] Setting IP address 10.235.222.232 on eth1
    [01-01_00:07:34:492] Deleting routers
    route: SIOCDELRT: No such process
    [01-01_00:07:34:494] Adding router 10.235.222.233
    [01-01_00:07:34:496] Recreating /etc/resolv.conf
    [01-01_00:07:34:497]  Adding DNS server 120.80.80.80
    [01-01_00:07:34:497]  Adding DNS server 221.5.88.88

    4.4G模块调试

    将4G复位引脚拉低

     即把GPIO5_3拉低。

    G:海思资料Hi3521D社区硬件SDKHi3521D V100R001C02SPC040ReleaseDoczh0.hardwarechipHi3521DV100

    有一个xlsx文档,里面说明了海思各种引脚的定义。

    还有一个编译器用户指南,里面说明了相关寄存器的定义和地址。

     himm 0x120F00D0  0  (修改管脚复用)

     

     himm 0x121A4000 4096

    有个问题就是用himm修改后,再用himm看,奇怪的时候没有数值没有改变。但是实际上有效果。

     

  • 相关阅读:
    Advanced Sort Algorithms
    Bash Excercises
    分布式Java应用与实践 (一)
    Configure HttpClient correctly
    Automated Front End Test
    linux 判断一个用户是否存在 _fei
    linux 系统扩容 VMware Centos---VMware ESXi
    ESX 基本使用 _fei
    centos jira wiki 开机自启
    svn 添加子目录后检出失败 _fei
  • 原文地址:https://www.cnblogs.com/zhuangquan/p/11889216.html
Copyright © 2011-2022 走看看