基于海思3519dv500调试合宙AIR780eg

本次调试还是踩了不少坑,在此记录一下。

总的来说这个模块不需要太多的支持,linux系统的自身驱动已经足够,只是可能嵌入式端的某些配置未开放出来导致模块工作不正常。

本项目硬件连接为合宙AIR780eg的USB口,其主要加载两个驱动一个是CDC - ACM  一个是RNDIS。

CDC - ACM用于将USB设备驱动的实现视为tty驱动,该设备会虚拟出3个ttl端口用于进行串口通讯。

RNDIS是指Remote NDIS,基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡。

海思默认是没有将两个驱动打开的,需要进入内核进行配置

在Linux内核界面输入make menuconfig 进行配置

我们首先使能 cdc-acm支持

在下图所示路径下可以找到该驱动选项,直接编译进内核。

再来使能rndis支持

输入/ 查找rndis

将其中 USB_CONFIGFS_RNDIS 、USB_ETH_RNDIS 、USB_FUNCTIONFS_RNDIS 、USB_F_RNDIS 、USB_G_MULTI_RNDIS 、USB_ETH_RNDIS_HOST 均设置为y编译进内核。HOST选项刚开始这边是编译的模块,单独加载还会报错鼓捣了半天也没个结果,后面就统一编译进内核进行操作,一下子就成功了。

此时linux内核可以支持两种驱动能力,但还需为其添加air780eg设备支持。

可在官网或者linux系统使用lsusb查看设备VID和PID 查询值应同官方说明一致。

在.\drivers\usb\serial\option.c

1.添加两个宏

#define AIR780E_PRODUCT_01          0x0001

#define AIR780E_VENDOR_ID           0x19d1

2.在usb_device_id option_ids[]中增加

{ USB_DEVICE(AIR780E_VENDOR_ID, AIR780E_PRODUCT_01)},

3.在 option_probe函数中增加

struct usb_device_descriptor *dev_desc = & serial->dev->descriptor;

/* ADD for air 780e */

    /* Never bind to the CD-Rom emulation interface */

    if (iface_desc->bInterfaceClass == USB_CLASS_MASS_STORAGE)

        return -ENODEV;

/* ADD for air 780e */

    if(dev_desc->idVendor == cpu_to_le16(AIR780E_VENDOR_ID) && dev_desc->idProduct == cpu_to_le16(AIR780E_PRODUCT_01) && iface_desc->bInterfaceNumber <= 1)

    return -ENODEV;

/* ADD for air 780e */

在.\drivers\usb\serial\usb_wwan.c

1.同样新增vid和pid数值的两个宏

#define AIR780E_PRODUCT_01          0x0001

#define AIR780E_VENDOR_ID           0x19d1

2.在usb_wwan_setup_urb函数中新增

/* ADD for air 780e */  

    if(dir == USB_DIR_OUT)

    {

        struct usb_device_descriptor *desc = &serial->dev->descriptor;

        if((desc->idVendor == cpu_to_le16(AIR780E_VENDOR_ID) && desc->idProduct == cpu_to_le16(AIR780E_PRODUCT_01)))

        urb->transfer_flags |= URB_ZERO_PACKET;

    }

/* ADD for air 780e */

此时内核部分均已修改完成

编译内核,烧录进板卡。

不出意外可以看到如下打印信息

说明网卡已经注册并联网成功,其中rndis_host 1-1:1.0 eth0 便是将网卡挂载到了eth0上面。ttyACM0-2就是虚拟出的三个串口。

可以在网上查找串口测试程序对三个串口进行测试,其中ttyACM0可进行AT指令操作对设备进行相关配置。

后续其他功能调试再更吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值