rk3568平台调试typec口实现uvc输出,网络共享等功能

news2024/10/7 4:22:40

一、修改kernel相关配置

注意:一定要知道主控接线,那个物理口是otg的,然后要找准与之所连接的phy和控制器。然后处理CC1 CC2识别芯片,fusb302。默认sdk自带有驱动,需要配上中断脚和提供VBUS 5V的脚。用来判断角色是DFP UFP。

查看rk3568规格书知道rk3568是不单独支持typec控制的硬件接口

RK3568 SDK 未提供 USB 3.0 OTG Type-C 接口的硬件参考电路。如果开发者要⽀持该接口,需要在

RK3568 USB 3.0 OTG 和 Type-C 接口中间增加⼀个 USB 3.1 Switch 芯⽚(如 FUSB340)和⼀个 CC 通信

芯⽚(如 FUSB302)。

我们硬件设计如下:

通过asw3410进行switch,fusb302进行通信并处理UFP DFP角色问题

具体代码修改:

1.添加fusb302驱动,fusb302的驱动在rk平台已经适配过很多,3568平台kernel4.19也是有的,打开即可,在driver/mfd目录。前期可以添加打印,看是否有成功通过i2c控制

2.需要修改usb的控制器和phy的配置

注意:rk3568默认就一个usb3.0的otg口,默认是使用gpio来控制vbus-5v,我们要使用typec需要去掉,使用fusb302去控制vbus-5v。还需要在usb3.0的otg口exton fusb302.具体修改如下:


	//vcc5v0_otg: vcc5v0-otg-regulator {
	//	compatible = "regulator-fixed";
	//	regulator-name = "vcc5v0_otg";
	//	regulator-min-microvolt = <5000000>;
	//	regulator-max-microvolt = <5000000>;
	//	enable-active-high;
	//	gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
	//	vin-supply = <&vcc5v0_usb>;
	//	pinctrl-names = "default";
	//	pinctrl-0 = <&vcc5v0_otg_en>;
	//};
 
 &usbdrd_dwc3 {
	extcon = <&fusb0>;
	status = "okay";
	snps,tx-fifo-resize;
	snps,dis-u1u2-quirk;
};

&usbdrd30 {
	status = "okay";
	//extcon = <&usb2phy0>;
	//extcon = <&fusb0>;
};

&usbhost_dwc3 {
	dr_mode = "host";
	status = "okay";
};

&usbhost30 {
	status = "okay";
};



&combphy0_us {
	status = "okay";
	extcon = <&fusb0>;
};

3.关于switch芯片,我们只需要在fusb302驱动里面的UFP或者DFP判断的时候去拉高拉低相应的gpip切换就行。

目前发现,不切换也能判断正反插,切速率达到high speed

修改前面是驱动部分,能够保证插入typec线接电脑,能被设备识别到。

二、添加configfs,配置uvc输出,uac输出,网络共享等功能

修改rkscript,使能uvc_en uac_en.这样会在S50usbdevice里面会自动配置uvc和uac功能

commit 29d9a2a002946044109967d8c17958bdf534e24e (HEAD -> miniiso, rk3568sdk/miniiso)
Author: huangxiang <“huangx@rgblink.com.cn”>
Date:   Wed Mar 22 10:45:51 2023 +0800

    Default support uac1 uvc output

diff --git a/package/rockchip/rkscript/rkscript.mk b/package/rockchip/rkscript/rkscript.mk
old mode 100644
new mode 100755
index 08406e8e..a2a2cd2e
--- a/package/rockchip/rkscript/rkscript.mk
+++ b/package/rockchip/rkscript/rkscript.mk
@@ -10,10 +10,11 @@ RKSCRIPT_LICENSE = Apache V2.0
 RKSCRIPT_LICENSE_FILES = NOTICE

 RKSCRIPT_USB_CONFIG=$(BR2_PACKAGE_RKSCRIPT_EXTRA_USB_CONFIG)
+RKSCRIPT_USB_CONFIG_FILE = $(TARGET_DIR)/etc/init.d/.usb_config
+#ifeq ($(BR2_PACKAGE_RKSCRIPT_ADBD),y)
+#RKSCRIPT_USB_CONFIG += usb_adb_en
+#endif

-ifeq ($(BR2_PACKAGE_RKSCRIPT_ADBD),y)
-RKSCRIPT_USB_CONFIG += usb_adb_en
-endif

 ifeq ($(BR2_PACKAGE_RKSCRIPT_MTP),y)
 RKSCRIPT_USB_CONFIG += usb_mtp_en
@@ -53,8 +54,18 @@ define RKSCRIPT_INSTALL_TARGET_CMDS
 endef

 define RKSCRIPT_INSTALL_TARGET_USB_CONFIG
-       echo $(RKSCRIPT_USB_CONFIG) | xargs -n 1 > \
-               $(TARGET_DIR)/etc/init.d/.usb_config
+
+       if test ! `grep usb_uac1_en $(RKSCRIPT_USB_CONFIG_FILE)` ; then \
+               echo usb_uac1_en >> $(RKSCRIPT_USB_CONFIG_FILE) ; \
+       fi
+
+       if test ! `grep usb_uvc_en $(RKSCRIPT_USB_CONFIG_FILE)` ; then \
+               echo usb_uvc_en >> $(RKSCRIPT_USB_CONFIG_FILE) ; \
+       fi
+
+       #if test ! `grep usb_uac1_en $(RKSCRIPT_USB_CONFIG_FILE)` ; then \
+       #       echo usb_uac1_en >> $(RKSCRIPT_USB_CONFIG_FILE) ; \
+       #fi
:

2.修改uvc_app和uac_app相关应用功能,去送图像和音频给到电脑,出现下面两个节点即可送图像和声音

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/496162.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

( “ 图 “ 之 拓扑排序 ) 210. 课程表 II ——【Leetcode每日一题】

❓210. 课程表 II 难度&#xff1a;中等 现在你总共有 numCourses 门课需要选&#xff0c;记为 0 到 numCourses - 1。给你一个数组 prerequisites &#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示在选修课程 ai 前 必须 先选修 bi 。 例如&#xff0c;想要学…

使用 docker 搭建 mysql 主从配置

真正的配置文件是docker中 /etc/my.cnf 拉取镜像 docker pull mysql:5.7启动主数据库和从数据库 docker run -p 3306:3306 --restartalways --name mysql_v1 -v /var/mysql/mysql_v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORDroot -d mysql:5.7 docker run -p 3307:3306 --res…

Neural Network笔记2

torch.nn: Containers: 神经网络骨架 Convolution Layers 卷积层 Pooling Layers 池化层 Normalization Layers 正则化层 Non-linear Activations (weighted sum, nonlinearity) 非线性激活 Convolution Layers Conv2d torch.nn.Conv2d(in_channels, out_channels, ke…

java版企业电子招投标系统源码 spring boot+mybatis+前后端分离

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及…

一体化管理系统如何使企业受益?

在当今世界&#xff0c;大多数企业使用管理系统来制定政策和程序&#xff0c;以帮助实现其业务目标。管理体系是用于确保企业能够管理实现其目标所需的所有任务的流程和程序的结构。 公司或企业会有支持客户、采购、项目、考勤、财务等管理系统&#xff0c;这些管理系统通常在…

OBCP部分考点总结

备份恢复&#xff1a; 恢复的最小力度&#xff1a;租户级 分布式事务&#xff1a; 参与者或者协调者宕机&#xff0c;全部参与者发送prepare ok&#xff0c;客户端会commit sql引擎&#xff1a; 不能使用常量的场景&#xff1a;between and 应该可以使用常量&#xff0c;被…

菁染料CY3标记氨Cyanine3-amine合成方式2247688-56-6

CY3-amine是一种荧光染料&#xff0c;其分子式为C36H52Cl2N4O ,分子质量616.745&#xff0c;具有良好的荧光性能和化学稳定性。 产品名称&#xff1a;菁染料CY3标记氨基&#xff1b;三甲川花菁染料标记氨基 英文名称&#xff1a;Cy3-amine&#xff1b;Cyanine3-amine 品牌商&a…

论文ai生成-一键生成论文的软件

ChatGPT自动写论文 ChatGPT可以使用生成的文本来帮助撰写学术论文&#xff0c;其中包括文章的大纲、段落和句子。但是&#xff0c;它并不会像一个完全替代人的写作工具一样让你“自动”写作。 虽然ChatGPT可以生成相当准确的语言&#xff0c;但它并不完美&#xff0c;它并不能…

Websocket的基本认识、使用与封装

目录 一、Websocket是什么 二、Websocket的基本使用 使用介绍 第一步 第二步 第三步 第四步 常用API介绍 WebSocket(url[, protocols]) WebSocket.readyState WebSocket.send(data) WebSocket.close([code[, reason]]) WebSocket.bufferedAmount WebSocket.exten…

顺序表功能实现(入手版详解)

&#x1f349;博客主页&#xff1a;阿博历练记 &#x1f4d6;文章专栏&#xff1a;数据结构与算法 &#x1f69a;代码仓库&#xff1a;阿博编程日记 &#x1f339;欢迎关注&#xff1a;欢迎友友们点赞收藏关注哦 文章目录 &#x1f353;前言✨顺序表&#x1f50d;1.顺序表的整体…

【SpringBoot】SpringBoot 优雅地校验参数

1、为什么要校验参数&#xff1f; 在日常的开发中&#xff0c;为了防止非法参数对业务造成影响&#xff0c;需要对接口的参数进行校验&#xff0c;以便正确性地入库。 例如&#xff1a;登录时&#xff0c;就需要判断用户名、密码等信息是否为空。虽然前端也有校验&#xff0c;…

剑指offer 栈习题训练经验总结(未完)

第一题 定义栈的数据结构&#xff0c;请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中&#xff0c;调用 min、push 及 pop 的时间复杂度都是 O(1)。 class MinStack {private:stack<int> s;stack<int> min_s;public:void push(int x) {s.push(x);if…

xxl-job 集成 SpringBoot 使用

文章目录 前言xxl-job 集成 SpringBoot 使用1. xxl-job 安装部署超链接2. 启动xxl-job3. 集成 SpringBoot 使用3.1. 添加依赖3.2. 执行器 配置3.3. 执行器组件配置3.4. XxlJob 开发步骤 4. &#xff08;BEAN模式&#xff09;示例5. GLUE(Java) 示例6. 注意 前言 如果您觉得有用…

视觉震撼的数据可视化示例

众所周知&#xff0c;数据可以非常强大——当你真正理解它告诉你什么时。 数据和信息可视化(数据可视化或信息可视化)是对大量复杂的定量、定性数据、信息进行设计和创建易于沟通、易于理解的图形或视觉表示的实践&#xff0c;在静态、动态或交互式视觉项目的帮助下&#xff0…

Java对象的创建方式以及对象的引用

日子就是这么的庸常&#xff0c;却有细碎的事物&#xff0c;如太阳碎碎的光芒&#xff0c;洒落其上 Java创建对象有几种方式 new创建新对象 new创建我们就很熟悉了&#xff0c;像Person p new Person();等等 通过反射机制 这种创建对象的方式就是当我们编译时不知道要创…

java面试,redis面试,java面试大全

LEARNING_CONTENT 一个分布式锁的解决方案&#xff0c;另一个是分布式事务的解决方案 -2 flink 链接&#xff1a;flink参考文章 -1 linux of view 参考链接&#xff1a; linux常见面试题 linux查看占用cup最高的10个进程的命令&#xff1b; 参考文章&#xff1a;linux查看…

uboot 启动内核代码分析

0、uboot和内核区别 uboot的本质就是一个复杂点的裸机程序。内核本身也是一个"裸机程序“&#xff0c;和uboot、和其他裸机程序并没有本质区别。 区别就是操作系统运行起来后在软件上分为内核层和应用层&#xff0c;分层后两层的权限不同&#xff0c;在内存访问和设备操作…

iptables 防火墙进出控制

iptables 防火墙进出控制 iptables简介 iptables 是集成在 Linux 内核中的包过滤防火墙系统。使用 iptables 可以添加、删除具体的过滤规则&#xff0c;iptables 默认维护着 4 个表和 5 个链&#xff0c;所有的防火墙策略规则都被分别写入这些表与链中。 “四表”是指 iptab…

ES是如何解决高可用

https://www.cnblogs.com/crazymakercircle/p/15433680.html ES是一个分布式全文检索框架&#xff0c;隐藏了复杂的处理机制&#xff0c;核心数据分片机制、集群发现、分片负载均衡请求路由。 ES的高可用架构&#xff0c;总体如下图&#xff1a; 说明&#xff1a;本文会以pdf…

SQL 招聘网站岗位数据分析

数据清洗 1.删除包含空字段的行 create view v_data_clean_null as select * from data d where job_href is not null and job_href ! and job_name is not null and job_name ! and company_href is not null and company_href ! and company_name is not null and com…