打印
[嵌入式Linux]

RK3399 4G模块移远EC20移植调试

[复制链接]
1433|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CPU:RK3399
系统:Android 7.1
1、通过串口打印或者adb获取模块的 pid 和 vid,顺便可以看到生成 4 个虚拟串口 /dev/ttyUSB*
[   11.734379] usb 1-1.1: new high-speed USB device number 3 using ehci-platform
[   11.828247] usb 1-1.1: New USB devicefound, idVendor=2c7c, idProduct=0125
[   11.828386] usb 1-1.1: New USB devicestrings: Mfr=1, Product=2, SerialNumber=0
[   11.828413] usb 1-1.1: Product: Android
[   11.828436] usb 1-1.1: Manufacturer:Android
[   11.835480] option 1-1.1:1.0: GSM modem (1-port) converter detected
[   11.841217] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0
[   11.844988] option 1-1.1:1.1: GSM modem (1-port) converter detected
[   11.851892] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1
[   11.853964] option 1-1.1:1.2: GSM modem (1-port) converter detected
[   11.864677] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2
[   11.865658] option 1-1.1:1.3: GSM modem (1-port) converter detected
[   11.871387] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB3
2、在代码中添加模块的 pid 和 vid,原始代码中已经包含移远的几个模块,仿照现有的添加 EC20
diff --gita/kernel/drivers/usb/serial/option.c b/kernel/drivers/usb/serial/option.c
index1799aa0..f6c9e5d 100644
--- a/kernel/drivers/usb/serial/option.c
+++b/kernel/drivers/usb/serial/option.c
@@ -241,6 +241,7 @@ static voidoption_instat_callback(struct urb *urb);
#defineQUECTEL_VENDOR_ID                     0x2c7c
/* These Quectel products use Quectel's vendor ID */
+#define QUECTEL_PRODUCT_EC20                   0x0125
#defineQUECTEL_PRODUCT_EC21                  0x0121
#defineQUECTEL_PRODUCT_EC25                  0x0125
#defineQUECTEL_PRODUCT_BG96                  0x0296
@@ -1200,6 +1201,8 @@ static const struct usb_device_id option_ids[] = {
        { USB_DEVICE(QUALCOMM_VENDOR_ID,YUGA_PRODUCT_CLM920_NC5),
          .driver_info =(kernel_ulong_t)&yuga_clm920_nc5_blacklist },
        /* Quectel products using Quectel vendor ID*/
+       { USB_DEVICE(QUECTEL_VENDOR_ID,QUECTEL_PRODUCT_EC20),
+         .driver_info =(kernel_ulong_t)&net_intf4_blacklist },
        { USB_DEVICE(QUECTEL_VENDOR_ID,QUECTEL_PRODUCT_EC21),
          .driver_info =(kernel_ulong_t)&net_intf4_blacklist },
        { USB_DEVICE(QUECTEL_VENDOR_ID,QUECTEL_PRODUCT_EC25)
3、添加模块的 so 库,此库需要移远提供,so 支持的系统要匹配,将 so 库拷贝到下面的路径
vendor/rockchip/common/phone/lib/libreference-ril.so
4、打开device/rockchip/common/device.mk 文件,修改 rild.libpath 路径为rild.libpath=/system/lib64/libreference-ril.so
diff --gita/device/rockchip/common/device.mk b/device/rockchip/common/device.mk
indexbe2cb2c..69034a7 100755
---a/device/rockchip/common/device.mk
+++b/device/rockchip/common/device.mk
@@ -699,7 +699,7 @@ endif
ifeq ($(strip $(BOARD_HAVE_DONGLE)),true)
ifeq ($(strip $(TARGET_ARCH)), arm64)
PRODUCT_PROPERTY_OVERRIDES += \
-   rild.libpath=/system/lib64/libril-rk29-dataonly.so
+   rild.libpath=/system/lib64/libreference-ril.so
else
PRODUCT_PROPERTY_OVERRIDES += \
     rild.libpath=/system/lib/libril-rk29-dataonly.so
因为 rk3399 是64位 CPU,所以 ifeq ($(strip $(TARGET_ARCH)), arm64)条件成立。
但是前提都是 BOARD_HAVE_DONGLE变量值为 true
注:本人测试,修改下面两个文件中的 rild.libpath 不起作用
device/rockchip/rk3399/system.prop
device/rockchip/rk3399/rk3399_all/system.prop
5、编译时将 so 库拷贝到上面指定目录/system/lib64/libreference-ril.so
diff --gita/vendor/rockchip/common/phone/phone.mk b/vendor/rockchip/common/phone/phone.mk
index946aacd..f8fc6e7 100755
---a/vendor/rockchip/common/phone/phone.mk
+++b/vendor/rockchip/common/phone/phone.mk
@@ -8,7 +8,8 @@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
+   $(CUR_PATH)/phone/etc/operator_table:system/etc/operator_table \
+   $(CUR_PATH)/phone/lib/libreference-ril.so:system/lib64/libreference-ril.so
ifeq ($(strip $(PRODUCT_MODEM)), DTS4108C)
PRODUCT_COPY_FILES += \
6、设置 BOARD_HAVE_DONGLE变量
diff --gita/device/rockchip/rk3399/rk3399_all.mk b/device/rockchip/rk3399/rk3399_all.mk
index7a2d870..ce5060c 100755
---a/device/rockchip/rk3399/rk3399_all.mk
+++b/device/rockchip/rk3399/rk3399_all.mk
@@ -63,7 +63,7 @@BOARD_NFC_SUPPORT := false
BOARD_HAS_GPS := false
#for 3G/4G modemdongle support
-BOARD_HAVE_DONGLE:= false
+BOARD_HAVE_DONGLE:= true
BOARD_GRAVITY_SENSOR_SUPPORT := true
此时移植完成,只要 so 库没问题,就可以正常上网。
如果 radio log 中打印如下信息:
RIL_SAP_Init notdefined or exported in /system/lib64/libril-rk29-dataonly.so
检查 rild.libpath 的路径和名称是否正确。
No /proc/cmdlineexception=java.io.FileNotFoundException: /proc/cmdline (Permission denied)
此报错不影响联网,可以忽略

使用特权

评论回复

相关帖子

沙发
幽魂| | 2020-2-26 20:57 | 只看该作者
RK3399+EC20 支持移动 电信 联通吗 是不是全网通

使用特权

评论回复
板凳
qq7643066|  楼主 | 2020-5-5 15:56 | 只看该作者
点赞 点赞 点赞 点赞 点赞 点赞 点赞

使用特权

评论回复
地板
qq7643066|  楼主 | 2020-6-9 08:44 | 只看该作者
ARM、 GPU、 DDR频率修改
DVFS(Dynamic Voltage and Frequency Scaling)动态电压频率调节,是一种实时的电
压和频率调节技术。目前 4.4 内核中支持 DVFS 的模块有 CPU、 GPU、 DDR。
CPUFreq 是内核开发者定义的一套支持动态调整 CPU 频率和电压的框架模型。它能有效的降
低 CPU 的功耗,同时兼顾 CPU 的性能。
CPUFreq 通过不同的变频策略,选择一个合适的频率供 CPU 使用,目前的内核版本提供了以
下几种策略:
 interactive:根据 CPU 负载动态调频调压;
 conservative:保守策略,逐级调整频率和电压;
 ondemand:根据 CPU 负载动态调频调压,比 interactive 策略反应慢;
 userspace:用户自己设置电压和频率,系统不会自动调整;
 powersave:功耗优先,始终将频率设置在最低值;
 performance:性能优先,始终将频率设置为最高值;
详细的模块功能及配置,请参考 RKDocs/common/driver/目录下《Rockchip CPU-Freq 开
发指南 V1.0.1-20170213.pdf》 和《Rockchip DEVFreq 开发指南 V1.0-20160701.pdf》文
档。
A53/A72/GPU/DDR 分别有对应的调试接口,可以通过 ADB 命令进行操作,对应的接口目录如下:
A53: /sys/devices/system/cpu/cpu0/cpufreq/
A72: /sys/devices/system/cpu/cpu4/cpufreq/
GPU: /sys/class/devfreq/ff9a0000.gpu/
DDR: /sys/class/devfreq/dmc/
这些目录下有如下类似节点:
 available_frequencies:显示支持的频率
 available_governors:显示支持的变频策略
 cur_freq:显示当前频率

使用特权

评论回复
5
javon| | 2020-8-11 09:51 | 只看该作者
幽魂 发表于 2020-2-26 20:57
RK3399+EC20 支持移动 电信 联通吗 是不是全网通

是的,EC20是全网通,支持移动 联通 电信。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:承接MID、Android TV等项目定制 QQ:7643066

107

主题

422

帖子

5

粉丝