以下以HI3516DV300 + ME909S-821 为例演示如何在海思平台上移植4G模块。
本文参考了:linux4.1.4上移植ME909s-821,MU609 4G模块驱动

4G模块的移植分为两部分,一是USB网络驱动的移植,二是USB模拟串口驱动移植。
很幸运,这些驱动在arm linux里面都有集成,我们只需要开启和稍微修改下原有的驱动就可以实现。

一.开启USB模拟串口支持

进入menuconfig,并开启USB模拟串口的支持

make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
依次选择:
       Device Drivers  --->
               USB support  --->
                     <*>   USB Serial Converter support  --->
                            <*>USB driver for GSM and CDMA modems

在这里插入图片描述

二.开启USB网络的支持

make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
依次选择:
       Device Drivers  --->
               Network device support  --->
					<*>   PPP (point-to-point protocol) support                                                 
					<*>     PPP BSD-Compress compression                                                   
	                <*>     PPP Deflate compression                                                         
	                [*]     PPP filtering                                                             
	                <*>     PPP MPPE compression (encryption)                                             
	                [*]     PPP multilink support                                                         
	                <*>     PPP over Ethernet                                                               
	                <*>     PPP support for async serial ports                                             
	                <*>     PPP support for sync tty ports 
                    USB Network Adapters  --->
                            <*> Multi-purpose USB NetworkingFramework
                                   <*>  CDC Ethernet support (smart devices such ascable modems) (NEW)
                                   -*-   CDC NCM support
                                   <*>   Huawei NCM embedded AT channel support
                                   <*>   Simple USB Network Links (CDC Ethernetsubset) (NEW)

在这里插入图片描述
在这里插入图片描述
然后保存,并且退出。
但是现在还不能够编译,还需要修改kernel的代码,让USB能够匹配模块的vid pid。
编辑 drivers/usb/serial/option.c,添加对应的代码即可

vim drivers/usb/serial/option.c

在对应的地方添加以下代码

 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0x02, 0x06, 0x10) },
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0x0a, 0x06, 0x11) },
 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0xff, 0x06, 0x10) },
 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0xff, 0x06, 0x13) },
 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0xff, 0x06, 0x12) },
 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0xff, 0x06, 0x06) },
 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0xff, 0x06, 0x1b) },

在这里插入图片描述
保存之后再执行编译

make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage -j32

最后将编译好的uImage烧录进设备即可

三.测试

执行ifconfig -a
在这里插入图片描述
执行ls /dev/ttyUSB*
在这里插入图片描述
这里说明下这几个ttyUSB的作用

USB0: MODEM:MODEM串口,用于拨号上网
USB1: DIAG:普通串口,用于调试和收集日志信息
USB2:PCUI:用于应用程序进行AT指令通信
USB3:Ctrl:用于eCall业务
USB4:Serial B:用于配合Diag端口用于模块log收集

简单的测试下
发送“AT”到ttyUSB2 查询上电状态
在这里插入图片描述
这里会返回OK,表示上电完成
发送"AT^RESET"会复位模块
在这里插入图片描述
复位之后会重新识别模块。

移植到这里就结束了,有什么问题的话可以在下方留言,我看到会尽量回复

PS:
使用这个命令进行拨号上网,但是我没有验证过。。。
echo -e “AT^NDISDUP=1,1,“CMNET”\r” > /dev/ttyUSB0
echo -e “AT+CGDCONT?” > /dev/ttyUSB2
echo -e “AT^NDISDUP?” > /dev/ttyUSB2
echo -e “AT^NDISDUP=1,1” > /dev/ttyUSB2
udhcpc -i usb0

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐