3568 4G EC25调试

2023-11-24 01:01
文章标签 调试 4g 3568 ec25

本文主要是介绍3568 4G EC25调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 

//DTS配置
kernel\arch\arm64\boot\dts\rockchip\rk3568-evb1-ddr4-v10.dtsi
+    rk_modem: rk-modem {
+        compatible="4g-modem-platdata";
+        4G,power-gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_LOW>; //4G/5G_EN-MODEM_ON-GPIO4_D2
+        4G,reset-gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;//4G/5G_RST-MODEM_RST-GPIO0_D5
+        status = "okay";
+    };

2. 


RK3568\kernel\drivers\usb\serial\option.c
+static const struct usb_device_id option_ids[] = {
+		#if 1 //Added by Quectel
+		{ USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC20 R2.0/EC20 R2.1/EC25/EG25-G/EM05 */
+		{ USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21/EG21-G */
+		{ USB_DEVICE(0x2C7C, 0x0191) }, /* Quectel EG91 */
+		{ USB_DEVICE(0x2C7C, 0x0195) }, /* Quectel EG95 */
+		{ USB_DEVICE(0x2C7C, 0x0306) }, /* Quectel EG06/EP06/EM06 */
+		{ USB_DEVICE(0x2C7C, 0x0512) }, /* Quectel EG12/EM12/EG18 */
+		{ USB_DEVICE(0x2C7C, 0x0296) }, /* Quectel BG96 */
+		{ USB_DEVICE(0x2C7C, 0x0700) }, /* Quectel BG95/BG77/BG600L-M3/BC69 */
+		{ USB_DEVICE(0x2C7C, 0x0435) }, /* Quectel AG35 */
+		{ USB_DEVICE(0x2C7C, 0x0415) }, /* Quectel AG15 */
+		{ USB_DEVICE(0x2C7C, 0x0452) }, /* Quectel AG520R */
+		{ USB_DEVICE(0x2C7C, 0x0455) }, /* Quectel AG550R */
+		{ USB_DEVICE(0x2C7C, 0x0620) }, /* Quectel EG20 */
+		{ USB_DEVICE(0x2C7C, 0x0800) }, /* Quectel RG500Q/RM500Q/RG510Q/RM510Q */	
+		{ USB_DEVICE(0x1E0E,0x9001),//SIM8200EAM2
+		 .driver_info = RSVD(4) | RSVD(5) | RSVD(6) | RSVD(6)},
+	#endif

3. Makefile添加qmi_wwan_q.c(特别注意要放在qmi_wwan.o的前面),资源见附件EC25资料


RK3568\kernel\drivers\net\usb\Makefile
+obj-$(CONFIG_USB_NET_QMI_WWAN)	+= qmi_wwan_q.o
obj-$(CONFIG_USB_NET_QMI_WWAN)	+= qmi_wwan.o

4.menuconfig 确保如下使能

CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_USBNET=y
CONFIG_NETDEVICES=y
CONFIG_USB_NET_CDCETHER=y
CONFIG_USB_NET_QMI_WWAN=y
CONFIG_USB_WDM=y

5.添加cdc-wdm0节点:

RK3568\system\core\init\devices.cpp
void DeviceHandler::HandleUevent(const Uevent& uevent) {if (uevent.action == "add" || uevent.action == "change" || uevent.action == "online") {FixupSysPermissions(uevent.path, uevent.subsystem);}// if it's not a /dev device, nothing to doif (uevent.major < 0 || uevent.minor < 0) return;std::string devpath;std::vector<std::string> links;bool block = false;if (uevent.subsystem == "block") {block = true;devpath = "/dev/block/" + Basename(uevent.path);if (StartsWith(uevent.path, "/devices")) {links = GetBlockDeviceSymlinks(uevent);}} else if (const auto subsystem =std::find(subsystems_.cbegin(), subsystems_.cend(), uevent.subsystem);subsystem != subsystems_.cend()) {devpath = subsystem->ParseDevPath(uevent);} else if (uevent.subsystem == "usb") {if (!uevent.device_name.empty()) {devpath = "/dev/" + uevent.device_name;} else {// This imitates the file system that would be created// if we were using devfs instead.// Minors are broken up into groups of 128, starting at "001"int bus_id = uevent.minor / 128 + 1;int device_id = uevent.minor % 128 + 1;devpath = StringPrintf("/dev/bus/usb/%03d/%03d", bus_id, device_id);}
+				#if 1 //add by quectel for mknod /dev/cdc-wdmo
+					} else if (uevent.subsystem == "usbmisc" && !uevent.device_name.empty()) {
+							   devpath = "/dev/" + uevent.device_name;
+				#endif		} else if (StartsWith(uevent.subsystem, "usb")) {// ignore other USB eventsreturn;} else {devpath = "/dev/" + Basename(uevent.path);}mkdir_recursive(Dirname(devpath), 0755);HandleDevice(uevent.action, devpath, block, uevent.major, uevent.minor, links);// Duplicate /dev/ashmem device and name it /dev/ashmem<boot_id>.// TODO(b/111903542): remove once all users of /dev/ashmem are migrated to libcutils API.HandleAshmemUevent(uevent);
}

6.重新编译boot.img,确保有如下节点
console:/ $ su                                                                 
console:/ # 
console:/ # ls -l dev/ttyUSB*
crw-rw-rw- 1 radio radio 188,   0 2022-01-27 12:33 dev/ttyUSB0
crw-rw-rw- 1 radio radio 188,   1 2022-01-27 12:33 dev/ttyUSB1
crw-rw-rw- 1 radio radio 188,   2 2022-01-27 14:02 dev/ttyUSB2
crw-rw-rw- 1 radio radio 188,   3 2022-01-27 12:33 dev/ttyUSB3
console:/ # 
console:/ # ls -l dev/cdc-wdm0                                                 
crw-rw---- 1 radio radio 180, 176 2022-01-27 12:33 dev/cdc-wdm
 

7.将厂家给的文件放到\vendor\rockchip\common\phone下,


rk3568\vendor\rockchip\common\phone\phone.mk
#########################################################
#   3G Dongle SUPPORT
#########################################################
-#PRODUCT_COPY_FILES += \
-#    $(CUR_PATH)/phone/etc/ppp/ip-down:system/etc/ppp/ip-down \
-#    $(CUR_PATH)/phone/etc/ppp/ip-up:system/etc/ppp/ip-up \
-#    $(CUR_PATH)/phone/etc/ppp/call-pppd:system/etc/ppp/call-pppd \
-#    $(CUR_PATH)/phone/etc/operator_table:system/etc/operator_table+PRODUCT_COPY_FILES += \
+    $(CUR_PATH)/phone/etc/ppp/ip-down:system/etc/ppp/ip-down \
+    $(CUR_PATH)/phone/etc/ppp/ip-up:system/etc/ppp/ip-up \
+    $(CUR_PATH)/phone/bin/chat:system/bin/chat \
+    $(CUR_PATH)/phone/lib/libreference-ril-ec25.so:vendor/lib64/libreference-ril-ec25.so \
+    $(CUR_PATH)/phone/etc/ppp/ql-ril.conf:system/etc/ql-ril.conf \ 
+	$(CUR_PATH)/etc/spn-conf.xml:system/etc/spn-conf.xml

8 关闭selinux或者天界rild.te 


RK3568\device\rockchip\common\BoardConfig.mk
-BOARD_SELINUX_ENFORCING ?= true
+BOARD_SELINUX_ENFORCING ?= false
+++ generic/goldfish/sepolicy/common/rild.te    (working copy)
@@ -5,6 +5,7 @@# IPv6 router advertisement detectionallow rild self:packet_socket { bind create ioctl read setopt };
+allow rild self:packet_socket { create bind write read };allowxperm rild self:packet_socket ioctl { SIOCGIFFLAGSSIOCSIFFLAGSSIOCGIFHWADDR };

9.device下做如下修改

+++ generic/goldfish/sepolicy/common/rild.te    (working copy)
@@ -5,6 +5,7 @@# IPv6 router advertisement detectionallow rild self:packet_socket { bind create ioctl read setopt };
+allow rild self:packet_socket { create bind write read };allowxperm rild self:packet_socket ioctl { SIOCGIFFLAGSSIOCSIFFLAGSSIOCGIFHWADDR };
simon@android:~/at5v5_1013/AT5_V5_android11/rk3568_sdk_11/device$ svn diff
Index: generic/goldfish/sepolicy/common/rild.te
===================================================================
--- generic/goldfish/sepolicy/common/rild.te    (revision 410)
+++ generic/goldfish/sepolicy/common/rild.te    (working copy)
@@ -5,6 +5,7 @@# IPv6 router advertisement detectionallow rild self:packet_socket { bind create ioctl read setopt };
+allow rild self:packet_socket { create bind write read };allowxperm rild self:packet_socket ioctl { SIOCGIFFLAGSSIOCSIFFLAGSSIOCGIFHWADDR };
Index: rockchip/common/4g_modem/manifest.xml
===================================================================
--- rockchip/common/4g_modem/manifest.xml       (revision 410)
+++ rockchip/common/4g_modem/manifest.xml       (working copy)
@@ -24,5 +24,14 @@<instance>default</instance></interface></hal>
+    <hal format="hidl">
+       <name>android.hardware.radio</name>
+       <transport>hwbinder</transport>
+       <version>1.0</version>
+       <interface>
+               <name>IRadio</name>
+               <instance>slot1</instance>
+       </interface>
+    </hal></manifest>Index: rockchip/common/BoardConfig.mk
===================================================================
--- rockchip/common/BoardConfig.mk      (revision 410)
+++ rockchip/common/BoardConfig.mk      (working copy)
@@ -437,7 +437,7 @@BOARD_WIFI_SUPPORT ?= true#for rk 4g modem
-BOARD_HAS_RK_4G_MODEM ?= false
+BOARD_HAS_RK_4G_MODEM ?= trueifeq ($(strip $(BOARD_HAS_RK_4G_MODEM)),true)DEVICE_MANIFEST_FILE += device/rockchip/common/4g_modem/manifest.xml
Index: rockchip/common/device.mk
===================================================================
--- rockchip/common/device.mk   (revision 410)
+++ rockchip/common/device.mk   (working copy)
@@ -259,7 +259,7 @@CarrierDefaultApp \CarrierConfig \rild \
-    librk-ril \
+    libreference-ril-ec25 \dhcpcdPRODUCT_COPY_FILES += vendor/rockchip/common/phone/etc/apns-full-conf.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/apns-conf.xml
Index: rockchip/common/sepolicy/vendor/file_contexts
===================================================================
--- rockchip/common/sepolicy/vendor/file_contexts       (revision 410)
+++ rockchip/common/sepolicy/vendor/file_contexts       (working copy)
@@ -34,6 +34,20 @@/vendor/bin/akmd        u:object_r:akmd_exec:s0/data/vendor/akmd(/.*)? u:object_r:akmd_vendor_data_file:s0+#quectel port
+/dev/ttyUSB[0-9] u:object_r:radio_device:s0
+/dev/ttyACM[0-9] u:object_r:radio_device:s0
+/dev/cdc-wdm[0-9]  u:object_r:radio_device:s0
+/dev/qcqmi[0-9]  u:object_r:radio_device:s0
+/vendor/bin/hw/rild  u:object_r:rild_exec:s0
+/dev/socket/rildOemHook u:object_r:rild_socket:s0
+#PCIe
+/dev/mhi_DUN  u:object_r:radio_device:s0
+/dev/mhi_DIAG  u:object_r:radio_device:s0
+/dev/mhi_BHI  u:object_r:radio_device:s0
+/dev/mhi_LOOPBACK u:object_r:radio_device:s0
+/dev/mhi_QMI0  u:object_r:radio_device:s0
+# camera/dev/media[0-9]      u:object_r:camera_device:s0/dev/v4l-subdev[0-9] u:object_r:camera_device:s0
Index: rockchip/common/ueventd.rockchip.rc
===================================================================
--- rockchip/common/ueventd.rockchip.rc (revision 410)
+++ rockchip/common/ueventd.rockchip.rc (working copy)
@@ -53,9 +53,22 @@/dev/compassirq           0660   system     system# for GPS
-#/dev/ttyS3                0600   gps        gps
+/dev/ttyS8                0600   gps        gps/dev/gps                  0660   gps        gps+#quectel port
+/dev/ttyUSB* 0660  radio  radio
+/dev/ttyACM* 0660  radio  radio
+/dev/cdc-wdm*  0660  radio  radio
+/dev/qcqmi* 0660  radio  radio
+/dev/cdc-acm*  0660  radio  radio
+#PCIe
+/dev/mhi_DUN  0660  radio  radio
+/dev/mhi_DIAG  0660  radio  radio
+/dev/mhi_BHI  0660  radio  radio
+/dev/mhi_LOOPBACK 0660  radio  radio
+/dev/mhi_QMI0  0660  radio  radio
+# for BT/dev/vflash               0660   bluetooth  net_bt/dev/ttyS0                0660   bluetooth  net_bt
Index: rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml
===================================================================
--- rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml      (revision 410)
+++ rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml      (working copy)
@@ -31,6 +31,14 @@<!-- the 6th element indicates boot-time dependency-met value. --><string-array translatable="false" name="networkAttributes"><item>"wifi,1,1,2,-1,true"</item>
+       <item>"mobile,0,0,0,-1,true"</item>
+       <item>"mobile_mms,2,0,2,60000,true"</item>
+       <item>"mobile_supl,3,0,2,60000,true"</item>
+       <item>"mobile_dun,4,0,2,60000,true"</item>
+       <item>"mobile_hipri,5,0,3,60000,true"</item>
+       <item>"mobile_fota,10,0,2,60000,true"</item>
+       <item>"mobile_ims,11,0,2,60000,true"</item>
+       <item>"mobile_cbs,12,0,2,60000,true"</item><item>"bluetooth,7,7,0,-1,true"</item><item>"ethernet,9,9,9,-1,true"</item></string-array>

 10 hardware/ril/rild/rild.rc做如下修改

+++ ril/rild/rild.rc    (working copy)
@@ -1,5 +1,12 @@
-service vendor.ril-daemon /vendor/bin/hw/rild
+#service vendor.ril-daemon /vendor/bin/hw/rild
+#    class main
+#    user radio
+#    group radio cache inet misc audio log readproc wakelock
+#    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
+service ril-daemon /vendor/bin/hw/rild -l /vendor/lib64/libreference-ril-ec25.so -- -d /dev/ttyUSB2class main
+    #socket rild stream 660 root radio
+    #socket rild-debug stream 660 radio systemuser radio
-    group radio cache inet misc audio log readproc wakelock
-    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
+    group radio cache inet misc audio sdcard_rw log
+       capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW

参考

RK3568-ANDROID11-4G-EC20-(详细步骤)_rk3568 ec20_旋风旋风的博客-CSDN博客

【RK356X Android11】开发之4G模块(广和通模块NL668)_广和通4g模块_小小码农121的博客-CSDN博客

这篇关于3568 4G EC25调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/421003

相关文章

使用C/C++调用libcurl调试消息的方式

《使用C/C++调用libcurl调试消息的方式》在使用C/C++调用libcurl进行HTTP请求时,有时我们需要查看请求的/应答消息的内容(包括请求头和请求体)以方便调试,libcurl提供了多种... 目录1. libcurl 调试工具简介2. 输出请求消息使用 CURLOPT_VERBOSE使用 C

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

起点中文网防止网页调试的代码展示

起点中文网对爬虫非常敏感。如图,想在页面启用调试后会显示“已在调试程序中暂停”。 选择停用断点并继续运行后会造成cpu占用率升高电脑卡顿。 经简单分析网站使用了js代码用于防止调试并在强制继续运行后造成电脑卡顿,代码如下: function A(A, B) {if (null != B && "undefined" != typeof Symbol && B[Symbol.hasInstan

php 7之PhpStorm + Nginx + Xdebug运行调试

操作环境: windows PHP 7.1.10 PhpStorm-2017.2.4 Xdebug 2.5.4 Xdebug helper 1.6.1 nginx-1.12.2 注意查看端口占用情况 netstat -ano //查看所以端口netstat -aon|findstr "80" //查看指定端口占用情况 比如80端口查询情况 TCP 0.0.0.0:8

【2025】基于Python的空气质量综合分析系统的设计与实现(源码+文档+调试+答疑)

博主介绍:     ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生完成毕业项目和技术提升。 技术范围:     我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT