当前位置:   article > 正文

Android10.0 高通平台移植移远4G模块调试方法

android10.0 高通平台移植移远4g模块调试方法

最近在调试Quectel(移远)的4G 模块 ,刚开始真是毫无头绪,毕竟第一次搞。

使用的是  EG25-G 的模,我的系统是64 位的系统

了解了这个是通过USB设备进行工作的,知道了这个,是个关键。那就在USB 的对应驱动里搞事情。

首先看框架图

从框架图可知,这需要添加 USB 的驱动,也需要添加网卡驱动。

移远会提供一些资料,指导性文档以及 .c文件。

 

1、参考《Quectel_LTE&5G_Linux_USB_Driver_User_Guide_V2.0.pdf》 该指导文件,修改USB 中的代码的内容。

(1)在kernel/msm-4.19/drivers/usb/serial/option.c  文件中添加 VID 、PID 等

(2)在kernel/msm-4.19/drivers/usb/serial/option.c  以及 kernel/msm-4.19/drivers/usb/serial/usb_wwan.c 文件中添加零包机制

(3)在kernel/msm-4.19/drivers/usb/serial/option.c 文件中添加重置恢复机制

        在kernel/msm-4.19/drivers/usb/serial/usb-serial.c 中添加 .reset_resume = usb_serial_resume,

(4)看是否需要  Use MBIM, GobiNet or QMI_WWAN Driver ,根据文档中的提示按需处理

2、参考《Quectel_LTE&5G_Linux_USB_Driver_User_Guide_V2.0.pdf》 该指导文件,修改usb网卡的内容

移远会提供一个 qmi_wwan_q.c 的文件,将该文件复制到 kernel/msm-4.19/drivers/net/usb/ 该目录下,然后修改 该目录下的Makefile 文件。

 然后 make bootimage 看是否报错,有报错就修改错误。

无误后,进行全编译看是否会报错。能全编译过后,将软件烧录。

3、然后根据《Quectel_Android_RIL_Driver_User_Guide_V1.9.pdf》指导文件,将移远提供的库文件 libreference-ril.so   adb push到 /vendor/lib64/目录下,然后试试看能否上网或者拨打电话了(得看你所使用的模块是否能够支持打电话或者使用数据)。

 如果是拨号的方式,应该还会使用到提供的库文件中的 chat  ip-down   ip-up 这几个,也根据指导文件,push到对应的目录下。然后重启设备。

4、如果在第三步中,验证可以上网了,也就说明改模块可用了。那就将第三步中的手动操作的部分,写成代码,然后编译的时候就会自动打包进安装包中了。

首先在 system/core/roodir/init.rc 文件中 添加以下代码

  1. #此处的是Android10 的,低于 Android 8 版本的有另外的指令
  2. service flash_recovery /system/bin/install-recovery.sh
  3. class main
  4. oneshot
  5. #Android 10
  6. service ril-daemon /vendor/bin/hw/rild -l /vendor/lib64/libreference-ril.so
  7. class main
  8. user root
  9. group radio cache inet misc audio sdcard_rw log
  10. capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
  11. #低于Android 8,则写入以下代码
  12. service ril-daemon /vendor/bin/hw/rild -l /vendor/lib64/libreference-ril.so
  13. class main
  14. socket rild stream 660 root radio
  15. socket rild-debug stream 660 radio system

如果找不到该文件,可以使用  godir  init.rc 命令试试看。如果存在多个,可以都看看,以确保做了无效的代码输入。

然后将 移远提供的库文件 libreference-ril.so  复制  hardware/ril/extr_reference-ril/  该目录下。然后进行全编译。

可能会发现,全编译之后,hardware/ril/extr_reference-ril/ 的文件并没有打包安装包中,因为刷机之后并不能上网。那可能是原先存在的文件,没有被编译进去,使用以下命令删除,再重新全编译。

  1. find out/target/product/ -name *ril* | xargs rm -rf
  2. rm -rf out/target/product/kona/system*
  3. rm -rf out/target/product/kona/vendor*
  4. rm -rf out/target/product/kona/super*
  5. rm -rf out/target/product/kona/product*
  6. rm -rf out/target/product/qssi/ve*
  7. rm -rf out/target/product/qssi/system*

然后刷机,是不可以在系统设置中看到了运营商名称?看到了IP 地址?看到了网络的图标?恭喜你,该模块功能调通了。

总结:

1、移植USB 部分的代码,添加VID 、PID 

2、移植网卡驱动代码

3、移植 libreference-ril.so  到指令路径

4、全编译,刷机

调试方法:

在开发过程当中,需要知道自己的调试步骤到哪了,哪一步是否OK 

一、在第1部的调试过程中,如何知道 USB 设备已经找到?

开机完成后,adb shell 进设备, 输入 dmesg (消息太多的话,也可以 dmesg | grep usb)

 其中框红的地方,就是你所添加模块的 VID 、PID 部分

如果有这个打印了,说明USB 设备是找到的。接下来就可以进行 AT 指令的测试

打开一个命令行窗口

  1. xxxx# adb shell
  2. root# cat /dev/ttyUSB2

然后多开一个命令行窗口

  1. xxx # adb shell
  2. root# echo "AT+ GMI \r\n" > /dev/ttyUSB2

在cat的窗口上有对应的回应,那就说明是OK

二、怎样知道网卡添加成功了?

通过 dmesg 命令查看 有 qmi_wwan_q 这样的关键字 打印,那就说明网卡也是添加成功的类。

三、adb push 文件的是否,返回失败,没法push  文件进系统,咋搞?

执行这几行命令后,再push 试试

  1. adb disable-verity
  2. adb reboot
  3. adb remount

 所需的几个文件,在我的博客下载页中  Quectel4GFiles.tar.gz

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/275306
推荐阅读
相关标签
  

闽ICP备14008679号