linux下EC20 4G模块驱动移植
之前有移植过ME909s MU609,主要工作就是把4G模块当做USB设备,挂载在linux上,驱动移植主要是能够让板子识别到模块,并产生SUB多个虚拟的节点,用于操作模块,拨号上网
关于内核的配置,请参考:https://www.cnblogs.com/ChenChangXiong/p/10852177.html
内核配置:
Device Drivers --->
[*] USB support --->
<*> USB Serial Converter support --->
<*> USB driver for GSM and CDMA modems //选上
Device Drivers --->
[*] Network device support --->
// 将这里面所有的ppp 的支持多选上
匹配列表:
宏定义添加支持:
//----add for EC20----add by chencx 20190513
#define QUECTEL_VENDOR_ID 0x2C7C
#define QUECTEL_PRODUCT_EC20 0x0125
usbdevice列表添加:
在kernel目录下:
vim drivers/usb/serial/option.c
在: static const struct usb_device_id option_ids[] 中添加
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC20)}, /* QUECTEL EC20 */
最后:
在: static int option_probe 匹配函数中添加
if (dev_desc->idVendor ==cpu_to_le16(0x2c7c) &&
dev_desc->idProduct ==cpu_to_le16(0x0125) &&
iface_desc->bInterfaceNumber ==0x04)
return -ENODEV;
接下来:make -j20
等待内核编译完成。
插入模块会生成usb0~usb3的usb节点,说明驱动已经移植成功。
比如ME909s MU609模块。直接是用pppd拨号就可以上网,但是EC20我试了很久不行,非常郁闷,无奈之下,只用移远官方提供的usb驱动作为.ko加载进去,然后使用APN工具。
Quectel_Linux_GobiNet_SR01A02V13.zip下载:http://bbs.21ic.com/forum.php?mod=attachment&aid=MTA1NjgwNHxkYmMwMDdjNHwxNTU3NzE4NDk2fDB8MTcwMDMxNg%3D%3D
Quectel_Linux_ConnectManager_SR01A01V21.zip 下载: http://dev.t-firefly.com/thread-52743-1-1.html
注意以下开发板的交叉编译器就行
编译得到GobiNet.ko
解压 Quectel_Linux_ConnectManager_SR01A01V21.zip,并交叉编译,只需要修改makefile适应自己的开发板即可
我是把解压后文件放到drivers/net/usb/ 中 新建一个文件夹来保存,在里面编译,
其实放在哪都行,当做模块加载,只需要编译makefile的时候指定kernel即可,就像平时编译模块一样。
修改makefile 直接作为模块加载进入
编译后生成 GobiNet.ko 复制到开发板 insmod
编译拨号工具:
解压:
unzip -x Quectel_Linux_ConnectManager_SR01A01V21.zip
直接编译:
make CROSS_COMPILE=arm-linux-gnueabihf-
得到quectel-CM
接着就大功告成了
在开发板中,首先加载GobiNet.ko 然后后在运行quectel-CM
insdmo GobiNet.ko
./quectel-CM &
运行./quectel-CM & 后会提示找到eth2 有的是eth1 接着可以ifconfig看一下ip 有了ip就可以直接pingl了。
注意是先加载模块 在执行 quectel-CM 就可以ifconfig查看到产生了ip,然后ping 8.8.8.8 我这里直接来65500包
算是比较完整的移植EC20的过程,记录一下
参考文献: https://blog.csdn.net/yuzhou_zang/article/details/78286875