展锐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 ...
随机推荐
- 相机系统 GLFW OPENGL
目录 0. 前言 1. 世界坐标系 2. GLFW 窗口坐标系 与 坐标系变换 3. 相机是什么东西 4. 相机的平面位移(上下左右) 5. 相机的聚焦点环绕(球形环绕 ArcBall Orbit) ...
- 什么是 Nodejs
这集来聊什么是 Nodejs ,看看 Node.js 是为了解决什么样的痛点而生的,为啥说它是一个 JS 的运行环境,以及 npm 是什么,为何能引发了 Web 开发的革命. Node.js 的诞生 ...
- 一文彻底弄懂MySQL的优化
在企业级 Web 开发中,MySQL 优化是至关重要的,它直接影响系统的响应速度.可扩展性和整体性能.下面从不同角度,列出详细的 MySQL 优化技巧,涵盖查询优化.索引设计.表结构设计.配置调整等方 ...
- 题解:洛谷P1119 灾后重建
题解:洛谷P1119 灾后重建 题目传送门 前言:没有掌握floyed求最短路的精髓是每次增加选一个中转点,导致写了2h才勉强卡过 法1:最暴力的想法就是开个三维数组把前i个点的dis状态全部存下来, ...
- 细说MySql索引原理
MySQL索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 可以类比字典,如果要查"mysql"这个单词,我们肯定需要定位 ...
- jmeter如何产生批量数据?
在使用jmeter时,若需要产生批量数据,可以通过连接数据库--执行相关sql进行操作,例如添加20条数据 步骤: 1.添加jdbc 数据库配置信息 2.添加循环控制器(循环次数20) 3.循环控制器 ...
- java内存区域——daicy
Java虚拟机 运行时数据区 主要分为五部分:方法区,堆(这两块是所有线程共享的区域),程序计数器,本地方法栈,虚拟机栈(vm stack)(这三块为线程隔离区域) 程序计数器(Program Cou ...
- 基于surging的木舟平台如何分布式接入设备
一.概述 上篇文章介绍了木舟通过基于木舟平台浅谈surging 的热点KEY的解决方法,那么此篇文章将介绍基于surging的木舟平台如何分布式接入设备. 木舟 (Kayak) 是什么? 木舟(Kay ...
- 揭秘UGO SQL审核功能4大特性,让业务平滑迁移至GaussDB
业务挑战 数据库是企业应用系统的核心,SQL作为数据库查询.更新等操作的标准语言,重要性不言而喻.然而在实际的SQL开发过程中,也面临着诸多挑战: 数据库应用开发人员的SQL能力良莠不齐,经常写出不符 ...
- 【kernel】从 /proc/sys/net/ipv4/ip_forward 参数看如何玩转 procfs 内核参数
本文的开篇,我们先从 sysctl 这个命令开始. sysctl 使用 sysctl 是一个 Linux 系统工具,后台实际上是 syscall,它允许用户查看和动态修改内核参数. # 查看当前设置的 ...