暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在hi3518ev300平台移植EC20

ta是一个搬运工 2021-07-29
892

1 说明

本文内容来源于调试hi3518ev300的过程中总结的经验。EC20及开发包购买自深圳市时讯捷通讯有限公司。

2 使用USB HOST功能

参考文档:Hi3516E V200R001C01SPC011\Hi3516E V200R001C01SPC011\ReleaseDoc\zh\01.software\board\OSDRV\外围设备驱动 操作指南.doc->2 USB 2.0 DRD操作指南

海思SDK包里面默认配置了大部分的USB HOST功能,内核配置时需要修改一个地方:

Device Drivers->USB support->DesignWare USB3 DRD Core Support->DWC3 Mode Selection选择”Host only mode”SDK默认配置为Dual Role mode(这个模式下不能自动识别USB设备)。

以下是自动识别USB设备,挂载USB设备的日志截图:

3 EC20/EC25驱动移植与调试

3.1 驱动编译进内核(kernel

参考文档:《Quectel_WCDMA<E_Linux_USB_Driver_User_Guide_V1.8.pdf->3.2. USB Serial Driver for UCxx/EC2x/EGxx/EP06/EM06/BG96/AG353.6. Configure Kernel to Support PPP4 Power Management5 Test the Module

按照参考文档更改内核文件,

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- menuconfig

选中Device Drivers->USB support->USB Serial Converter support及其子选项USB driver for GSM and CDMA modems为‘*

选中Device Drivers->Network device support->PPP (point-to-point protocol) support及其子选项为‘*’,如果缺少这个选中操作会出现类似如下错误,

make ARCH=arm CROSS_COMPILE=arm-himix100-linux-

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- uImage

生成的内核文件(uImage)已支持拨号上网功能。

烧入内核文件到板端,启动之后拔插EC20/EC25模块会出现打印信息,如下分别是EC20EC25的打印,

3.2 驱动编译成模块(ko

参考文档:《Quectel_WCDMA<E_Linux_USB_Driver_User_Guide_V1.8.pdf->3.2. USB Serial Driver for UCxx/EC2x/EGxx/EP06/EM06/BG96/AG353.6. Configure Kernel to Support PPP4.  Power Management5. Test the Module

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- menuconfig

选中Device Drivers->USB support->USB Serial Converter support*,其子选项USB driver for GSM and CDMA modems为‘M’,如果子选项USB driver for GSM and CDMA modems为‘*’则在加载ko文件时出现如下错误:

选中Device Drivers->Network device support->PPP (point-to-point protocol) support及其子选项为‘*’,如果缺少这个选中操作会出现类似如下错误,

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- M=`pwd`/drivers/usb/serial obj-m=option.o modules

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- M=`pwd`/drivers/usb/serial obj-m=usb_wwan.o modules,会输出如下警告,不会产生影响,

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- M=`pwd`/drivers/usb/serial obj-m=qcserial.o modules

在内核根目录\drivers\usb\serial目录下生成option.ko、usb_wwan.ko、qcserial.ko。

make ARCH=arm CROSS_COMPILE=arm-himix100-linux-

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- uImage

烧入内核,将生成的ko文件拷贝至板端,启动板端之后不会自动创建/dev/ttyUSB*设备文件,依次加载usb_wwan.ko、qcserial.ko、option.ko(后面两个ko依赖前面一个ko)会自动创建/dev/ttyUSB*设备文件,如下所示,

3.3 移植libcrypt

https://sourceforge.net/projects/libcrypt/files/latest/download

pppd可执行程序依赖crypt库文件,如果没有该文件执行时会报如下错误,

修改makefile中的相关变量(CC、CPP、AR),

由于板端/lib文件夹下有crypto共享库,所以先删除它们,rm -rf lib/libcrypt.so.0 /lib/libcrypt-0.9.33.2.so,libcrypt.so拷贝至板端/lib目录下,并创建链接文件libcrypt.so.0(ln -s libcrypt.so libcrypt.so.0)。

3.4 移植ppp

https://download.samba.org/pub/ppp/

解压之后进入目录,执行./configure、make CC=arm-himix100-linux-gcc之后即可生成pppd、chat可执行程序。

pppd、chat放入板端的/usr/sbin目录下,如果放入/bin/目录下可能会遇到如下错误:

这是因为板端/usr/sbin目录下已有chat可执行文件且环境PATH的值中/usr/sbin在/bin之前。

创建/etc/ppp(mkdir -m777 /etc/ppp)、/etc/ppp/peers(mkdir -m777 /etc/ppp/peers),将以下压缩包的文件放入/etc/ppp/peers中,

要保证这些文件为linux格式而非windows文件格式,否则可能会出错。

3.5 其他修改

执行拨号操作之前需要创建/var/lock目录(mkdir /var/lock -p),否则会遇到如下错误,

如果没有/var/run目录则也需要创建该目录(mkdir /var/run -p)。

3.6 拨号上网

在完成上述操作之后进入/etc/ppp/peers,执行pppd call quectel-ppp &,即可完成拨号入网,获取到IP地址,如下图所示,

此时还不能ping通www.baidu.com,需要在/etc/resolv.conf中追加域名解析才行(echo "nameserver 114.114.114.114" >> /etc/resolv.conf)。

如果想断开网络再重新拨号,执行/etc/ppp/peers/quectel-ppp-kill &,待网络断开之后即可重新执行pppd call quectel-ppp &拨号上网。

3.7 使用经验

网上有说不通运营商的SIM卡,拨号时使用的APN不一样,移动用cmnet,联通用3gnet,电信用ctnet。笔者使用移动SIM卡,使用cmnet3gnetctnet皆可拨号成功上网。

3.8 未插卡的表现

3.9 使用AT命令查看4G模块的IMEI

参考Quectel_WCDMA<E_Linux_USB_Driver_User_Guide_V1.8.pdf》->2 Products Overview,

可以看到/dev/ttyUSB2字符设备用来执行AT命令,可以将执行结果保存在临时文件中,cat /dev/ttyUSB2 > /tmp/IMEI &,echo -e "AT+GSN\r\n" > /dev/ttyUSB2,如下图所示,

查看SIM卡的ICCID(echo -e "AT+QCCID\r\n" > /dev/ttyUSB2),查看SIM卡的CNUM(echo -e "AT+CNUM\r\n" > /dev/ttyUSB2,物联网卡一般为空)。

文章转载自ta是一个搬运工,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论