展锐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 ...
随机推荐
- c++11大括号初始化
C++11可以将{}初始化器用于任何类型(可以用等号,也可以不用) 数组.集合初始化 在C++11中,集合(列表)的初始化已经成为C++的一个基本功能,被称为"初始化列表": // ...
- IO体系
IO,即in和out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件.管道.网络连接. Java 中是通过流处理IO 的,那么什么是流? 流(Stream),是一个抽象的 ...
- att&ck学习笔记2
一.环境搭建 靶场下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/ DC IP:10.10.10.10OS:Windows 2012应用:A ...
- springboot 复杂邮件发送
application.yml配置 密码为邮箱开启smtp时邮箱服务商提供的密码
- Sqlsugar调用Oracle的存储过程
前段时间在搬迁项目的时候,遇到一个问题,就是用sqlsugar调用oracle的存储过程的时候调用不了: 当时卡了一整天,现在有空了把这个问题记录分享一下. 先去nuget上安装一下sqlsugar的 ...
- Vulhub Apache Httpd漏洞复现
目录 前言 多后缀解析漏洞 换行解析漏洞(CVE-2017-15715) 2.4.49 路径穿越漏洞(CVE-2021-41773) 2.4.50 路径穿越漏洞(CVE-2021-42013) SSR ...
- STATA数据统计软件学习记录
STATA是一个数据统计软件,正如它的名字一样,STATA=statistic+data.STATA软件的功能和matlab类似,也可以用代码实现数据的统计与可视化.但几乎只能进行整行整列的数据处理, ...
- Apache 门户项目组介绍
本文将快速浏览 Apache 门户项目组的所有项目,并着重介绍门户项目组中的核心项目-Jetspeed-2. 0 评论: 廖 健, 首席实施顾问 2006 年 11 月 02 日 内容 引言 JEE作 ...
- 分布式对象存储之FDFS
1.它是一个开源的分布式文件系统,它对文件进行管理. 功能有:文件存储.文件同步.文件访问(文件的上传下载)等.特别适合以文件为主的在线服务. 2.fastDFS服务端有两个角色:跟踪器(tracke ...
- Git commit注释规范
指定规范的提交格式, 方便后期版本的回滚与记录的查询 格式规范: <type>(<scope>): <subject> // 空一行 <body> 范例 ...