【外设调试笔记】4G模块调试流程:基于灵眸科技EAl1126-Core-T 1.简介1.1声明本文档仅为嵌入式驱动工程师提供大致的排查思路参考以便提高开发效率但并不能涵盖嵌入式底层开发的所有甚至大部分问题。1.2概念介绍开发环境编辑、编译等开发工具所在的终端后台通常指性能较强的x86_x64架构的PC主机Linux系统运行环境正在对其进行嵌入式底层开发的板卡终端后台(通常指在我司核心板上运行的Linux系统)1.3查看系统打印工具dmesg 此工具会输出系统从启动到输入命令前一时刻的所有系统打印。我们可以从中找出一些出错信息。通常可搭配grep来过滤用户主要关注的信息如dmesg | grep -i usb。 -i忽略大小写。2.驱动修改指南2.1驱动代码说明通常4G模块走的都是USB接口非USB接口不适用此方法。 执行以下命令进入usb/serical文件夹查看跟以太网驱动程序相关的源码。cd ~/EASY-EAI-kernel/kernel/drivers/usb/serial/option.c ls2.2驱动代码修改先用lsusb查看一下4G模块的VID和PID以Air600E为例lsusb再在option.c文件内补充新增4G模块的VID和PIDvim option.c修改的位置如下再找到struct usb_device_id option_ids[]结构体数组定义位置在其内部添加刚才新增的VID和PID如下所示static const struct usb_device_id option_ids[] { ... { USB_DEVICE(LUAT_VENDOR_ID, LUAT_PRODUCT_AIR600E) }, ... };有一些USB接口号不能被option驱动给占用了因此需要用.driver_info来把这些接口号(如接口1)排除如下所示static const struct usb_device_id option_ids[] { ... { USB_DEVICE(XXXXX_VENDOR_ID, XXXXX_PRODUCT_XXXX), .driver_info RSVD(1) }, ... };问怎么确定【哪些接口】需要被option【排除】答用lsusb -t查看。lsusb -t2.3驱动配置无须特别修改。3.设备树修改指南无须特别修改4.编译及验证设计4.1编译编译及烧录见《嵌入式底层开发/内核驱动/内核开发流程说明》。4.2拨号测试合宙无须拨号直接插卡后修改netplan即可上网。enx2089846a96ab: optional: true dhcp4: true nameservers: addresses: [8.8.8.8, 8.8.4.4] dhcp4-overrides: route-metric: 250 移远拨号指令4.3联网测试指令如下ping www.baidu.com -I enx****