展锐Android平台增加gadget 虚拟usb串口
方案一:需要修改展锐现有Windows端驱动,增加一组MI接口。由于无法推动展锐修改Windows驱动,该方案不推荐。
SL8541E/device/sprd/sharkle/common/rootdir/root/init.common.usb.rc
diff --git a/common/rootdir/root/init.common.usb.rc b/common/rootdir/root/init.common.usb.rc
index 316781b..6940929 100755
--- a/common/rootdir/root/init.common.usb.rc
+++ b/common/rootdir/root/init.common.usb.rc
@@ -127,6 +127,7 @@ on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && property:sys.u
symlink /config/usb_gadget/g1/functions/gser.gs0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/gser.gs1 /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/gser.gs2 /config/usb_gadget/g1/configs/b.1/f4
+ symlink /config/usb_gadget/g1/functions/gser.gs5 /config/usb_gadget/g1/configs/b.1/f5
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
方案二:不需要改Windows端驱动,增加一组MI接口,使用CDC ACM驱动。免驱,推荐。
SL8541E/device/sprd/sharkle/common/rootdir/root/init.common.usb.rc
diff --git a/common/rootdir/root/init.common.usb.rc b/common/rootdir/root/init.common.usb.rc
index 316781b..fcbdcf7 100755
--- a/common/rootdir/root/init.common.usb.rc
+++ b/common/rootdir/root/init.common.usb.rc
@@ -38,6 +38,7 @@ on init
mkdir /config/usb_gadget/g1/functions/gser.gs5 0770 shell shell
mkdir /config/usb_gadget/g1/functions/gser.gs6 0770 shell shell
mkdir /config/usb_gadget/g1/functions/gser.gs7 0770 shell shell
+ mkdir /config/usb_gadget/g1/functions/acm.gs0 0770 shell shell
setprop sys.usb.mode normal
@@ -127,6 +128,7 @@ on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && property:sys.u
symlink /config/usb_gadget/g1/functions/gser.gs0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/gser.gs1 /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/gser.gs2 /config/usb_gadget/g1/configs/b.1/f4
+ symlink /config/usb_gadget/g1/functions/acm.gs0 /config/usb_gadget/g1/configs/b.1/f5
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
SL8541E/bsp/kernel/kernel4.14/arch/arm/configs/sprd_sharkle_defconfig
diff --git a/arch/arm/configs/sprd_sharkle_defconfig b/arch/arm/configs/sprd_sharkle_defconfig
index 73208c8..0338f42 100644
--- a/arch/arm/configs/sprd_sharkle_defconfig
+++ b/arch/arm/configs/sprd_sharkle_defconfig
@@ -2990,6 +2990,7 @@ CONFIG_USB_LIBCOMPOSITE=y
CONFIG_USB_U_SERIAL=y
CONFIG_USB_U_ETHER=y
CONFIG_USB_F_SERIAL=y
+CONFIG_USB_F_ACM=y
CONFIG_USB_F_RNDIS=y
CONFIG_USB_F_MASS_STORAGE=y
CONFIG_USB_F_FS=y
@@ -3001,7 +3002,7 @@ CONFIG_USB_F_ACC=y
CONFIG_USB_F_VSERIAL=y
CONFIG_USB_CONFIGFS=y
CONFIG_USB_CONFIGFS_SERIAL=y
-# CONFIG_USB_CONFIGFS_ACM is not set
+CONFIG_USB_CONFIGFS_ACM=y
# CONFIG_USB_CONFIGFS_OBEX is not set
# CONFIG_USB_CONFIGFS_NCM is not set
# CONFIG_USB_CONFIGFS_ECM is not set
SL8541E/bsp/kernel/kernel4.14/drivers/usb/gadget/function/u_serial.h
diff --git a/drivers/usb/gadget/function/u_serial.h b/drivers/usb/gadget/function/u_serial.h
index a5dc553..62c6331 100644
--- a/drivers/usb/gadget/function/u_serial.h
+++ b/drivers/usb/gadget/function/u_serial.h
@@ -15,7 +15,7 @@
#include <linux/usb/composite.h>
#include <linux/usb/cdc.h>
-#define MAX_U_SERIAL_PORTS 8
+#define MAX_U_SERIAL_PORTS 9
struct f_serial_opts {
struct usb_function_instance func_inst;
如果要调换modem的调试串口,比如将SPRD_AT口从ttyGS0替换到ttyGS8,并释放ttyGS0端口,可以修改以下文件。注意以下文件的端口会被modem调试
进程占用,导致PC发送到开发板的数据被调试进程读取进而导致使用该端口的app收不到完整数据或漏收数据。
SL8541E/device/sprd/sharkle/common/rootdir/system/etc/engpc/dev/pc.conf
diff --git a/common/rootdir/system/etc/engpc/dev/pc.conf b/common/rootdir/system/etc/engpc/dev/pc.conf
index 3762e90..b38444a 100644
--- a/common/rootdir/system/etc/engpc/dev/pc.conf
+++ b/common/rootdir/system/etc/engpc/dev/pc.conf
@@ -3,12 +3,12 @@ cali COM_CP_DIAG DATA_DIAG vser /dev/vser NULL S
autotest COM_CP_DIAG DATA_DIAG vser /dev/vser NULL SPRD_LTE_DIAG
normal_lite COM_CP_AT DATA_AT gser /dev/ttyGS1 NULL SPRD_LTE_AT
normal_lite COM_WCN_AT DATA_WCN_AT gser /dev/ttyGS2 NULL SPRD_WCN_AT
-normal_lite COM_PPPD_AT DATA_AT gser /dev/ttyGS0 NULL SPRD_PPPD
+normal_lite COM_PPPD_AT DATA_AT gser /dev/ttyGS8 NULL SPRD_PPPD
normal COM_CP_DIAG DATA_DIAG gser /dev/ttyGS6 NULL SPRD_LTE_DIAG
normal COM_CP_AT DATA_AT gser /dev/ttyGS5 NULL SPRD_LTE_AT
normal COM_CP_LOG DATA_LOG gser /dev/ttyGS7 NULL SPRD_LTE_LOG
normal COM_WCN_AT DATA_WCN_AT gser /dev/ttyGS2 NULL SPRD_WCN_AT
normal COM_WCN_DIAG DATA_WCN_DIAG gser /dev/ttyGS3 NULL SPRD_WCN_DIAG
-normal COM_PPPD_AT DATA_AT gser /dev/ttyGS0 NULL SPRD_PPPD
+normal COM_PPPD_AT DATA_AT gser /dev/ttyGS8 NULL SPRD_PPPD
normal COM_SENSOR_LOG DATA_DIAG gser /dev/ttyGS1 NULL SPRD_DIAG
normal COM_AGDSP_MIX DATA_AGDSP_MIX gser /dev/ttyGS4 NULL SPRD_AGDSP
测试情况如下:

展锐Android平台增加gadget 虚拟usb串口的更多相关文章
- 如何在Android平台上使用USB Audio设备
http://blog.csdn.net/kevinx_xu/article/details/12951131 需求:USB Headset插上去后,声音要从本地CODEC切换到USB Headset ...
- 【分析笔记】展讯 RDA8810PL 平台 Camera 驱动分析和移植(Android 4.4 )
前言概述 因以下原因,导致不得不通过代码分析来学习如何在该平台下进行摄像头驱动移植 香橙派开发商(迅龙软件)仅提供能跑起来的源代码.固件,以及简单的编译文档,不提供其它技术支持 baidu.googl ...
- 基于Android 平台简易即时通讯的研究与设计[转]
摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的作用和功能以及实现方法.(复杂的通讯如引入视频音频等可以考虑AnyChat SDK~)关键词:An ...
- FFmpeg的Android平台移植—编译篇
摘要:本文主要介绍将FFmpeg音视频编解码库移植到Android平台上的编译和基本测试过程. 环境准备: ubuntu-12.04.5 android-ndk64-r10-linux-x86_64. ...
- android平台修改默认语言的那点事
转自:https://blog.csdn.net/qinghua0706/article/details/8243858 最近开始做智能机,用的是展讯6820平台,第一个需求就是改默认语言,一般碰到不 ...
- Java生鲜电商平台-电商虚拟币的充值与消费思考
Java生鲜电商平台-电商虚拟币的充值与消费思考 项目背景 最近由于项目业务原因,需要为系统设计虚拟币的充值及消费功能.公司内已经有成熟的支付网关服务,所以重点变成了如何设计项目内虚拟币的充值流程,让 ...
- (转)android平台phonegap框架实现原理
(原文)http://blog.csdn.net/wuruixn/article/details/7405175 android平台phonegap框架实现原理 分类: Android2012-03- ...
- Android平台免Root无侵入AOP框架Dexposed使用详解
Dexposed是基于久负盛名的开源Xposed框架实现的一个Android平台上功能强大的无侵入式运行时AOP框架. Dexposed的AOP实现是完全非侵入式的,没有使用任何注解处理器,编织器或者 ...
- Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解
作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...
- Cocos2d-x 3.0修改Android平台帧率fps - 解决游戏运行手机发热发烫问题
使用Cocos2d-x 3.0开发游戏之后,发现游戏在android手机上发热非常严重,在魅族2上,几乎担心手机会爆炸了~~~采取的一个措施就是降低帧率,因为游戏对于帧率要求不是非常高. 做过coco ...
随机推荐
- git知识点,常用命令
git理论知识 git的服务器端(remote)端包含多个repository,每个repository可以理解为一个项目. 而每个repository下有多个branch."origin& ...
- CentOS环境下OpenSSH9.8p1升级实践
安装Telnet服务 为了避免升级OpenSSH导致服务器不可连接.需要先下载安装Telnet组件.升级期间使用Telnet作为升级期间的服务器连接方式. 先查询telnet是否安装 rpm -qa ...
- ASN.1 DER证书私钥的提取
Java生成的证书在.Net里面无法导入.原因是Java导入的整个ASN.1格式的证书..Net需要设置的只是证书的密钥(公钥.私钥).无法直接使用,因此需要提取密钥. 1.查看密钥 使用lapo.i ...
- 鸿蒙Banner图一多适配不同屏幕
认识一多 随着终端设备形态日益多样化,分布式技术逐渐打破单一硬件边界,一个应用或服务,可以在不同的硬件设备之间随意调用.互助共享,让用户享受无缝的全场景体验.而作为应用开发者,广泛的设备类型也能为应用 ...
- STM32单片机 32.768Khz和8Khz晶振外部电容容值选取问题
一.前言 绘制STM32C8T6最小系统的晶振电路的时候,看到了并联在晶振两端的电容,就好奇具体的容值该怎么选取,故有了这篇博客. 二.外部晶振电路
- 定制jekins-slave-jnlp镜像封装docker和kebectl命令实现pipline
基于官方:jenkins/inbound-agent:latest DockerHub成品: docker pull svipghy/jenkins-jnlp-slave:v1 Dockerfile ...
- 基于Java+SpringBoot+Mysql实现的快递柜寄取快递系统功能实现三
一.前言介绍: 1.1 项目摘要 随着电子商务的迅猛发展和城市化进程的加快,快递业务量呈现出爆炸式增长的趋势.传统的快递寄取方式,如人工配送和定点领取,已经无法满足现代社会的快速.便捷需求.这些问题不 ...
- RK3568,字符设备框架:管理同主设备号、不同次设备号设备
字符设备框架:管理同主设备号.不同次设备号设备 以下代码针对迅为开发板RK3568,开发板系统是ubuntu20.04, 正文 以下是我写的字符设备框架,实现了管理同主设备号.不同次设备号的功能. 代 ...
- 定位模组LuatOS快速入门:源UART串口通信
合宙Air201资产定位模组--是一个集成超低功耗4G通信.语音通话.超低功耗定位.计步.震动.Type-C.充电.放音.录音等功能的超小PCBA. 内部集成高效.简单.可靠的LuatOS语言,旨在帮 ...
- NZOJ 模拟赛5
T1 逃离遗迹 根据外星人的回信,在遗迹中有分布着三样道具.当三样道具都拿走后,遗迹就很快自动毁灭,所以必须要在最短时间内离开.遗迹可以看作是由N个房间(编号1..N)和N-1条长度不等通道所组成,并 ...