rk3568平台调试typec口实现uvc输出,网络共享等功能
一、修改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 +0800Default support uac1 uvc outputdiff --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.0RKSCRIPT_LICENSE_FILES = NOTICERKSCRIPT_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
-endififeq ($(BR2_PACKAGE_RKSCRIPT_MTP),y)RKSCRIPT_USB_CONFIG += usb_mtp_en
@@ -53,8 +54,18 @@ define RKSCRIPT_INSTALL_TARGET_CMDSendefdefine 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相关应用功能,去送图像和音频给到电脑,出现下面两个节点即可送图像和声音


相关文章:
rk3568平台调试typec口实现uvc输出,网络共享等功能
一、修改kernel相关配置 注意:一定要知道主控接线,那个物理口是otg的,然后要找准与之所连接的phy和控制器。然后处理CC1 CC2识别芯片,fusb302。默认sdk自带有驱动,需要配上中断脚和提供VBUS 5V的脚。用来判断角色是DF…...
java基础知识——26.反射
这篇文章我们来讲一下java的代理与反射,这是很重要的一部分内容。 目录 1.什么是反射 2.获取class对象的三种方式 3.反射获取构造方法 4.利用反射来获取成员变量 5.利用反射来获取成员方法 6.反射的作用 7.反射小结 1.什么是反射 首先,我们来看…...
【容器化】Docker 简介和安装
【容器化】Docker 简介和安装 DockerDocker的应用场景Docker 的优点1、快速,一致地交付您的应用程序2、响应式部署和扩展3、在同一硬件上运行更多工作负载 Docker 架构Docker 安装Ubuntu Docker 、Debian Docker 安装使用官方安装脚本自动安装手动安装使用 Shell 脚…...
性能测试场景分析并设计?超细案例讲解,看这篇就够了
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 性能测试场景&…...
JAVA9新特性
JAVA9新特性 概述 经过4次推迟,历经曲折的Java9最终在2017年9月21日发布。因为里面加入的模块化系统,在最初设想的时候并没有想过那么复杂,花费的时间超出预估时间。距离java8大约三年时间。 Java 9提供了超过150项新功能特性&#x…...
( 数组和矩阵) 645. 错误的集合 ——【Leetcode每日一题】
❓645. 错误的集合 难度:简单 集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。 给定一个数组 nums 代表了…...
2023年全国最新道路运输从业人员精选真题及答案63
百分百题库提供道路运输安全员考试试题、道路运输从业人员考试预测题、道路安全员考试真题、道路运输从业人员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 119.在危险货物道路运输过程中,(&#x…...
Kettle安装与使用
一、Kettle简介 Kettle最早是一个开源的ETL(Extract-Transform-Load的缩写)工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment。后来Kettle重命名为Pentaho Data Integration 。它由Java开发,…...
C51 - DS18B20
Thermometer 1> 实验概述2> 硬件设计3> DS18B203.1> 原理框图3.2> 数据格式 4> 单总线(1-Wire)通讯协议4.1> 初始化(复位)时序4.2> 写-DS18B20时序4.3> 读-DS18B20时序4.4> 命令 5> 程序设计5.1…...
手把手教你使用vue2搭建微前端micro-app
简述 本文主要讲述新手小白怎么搭建micro-app,几乎是每一步都有截图说明。上手应该很简单。 研究背景 这段时间在网上找了很多有关微前端相关的知识,起初本来是想着先搭建一个single-spa,但是奈何网上能找到的内容都是千篇一律。我也是…...
DDR3(MIG核配置官方demoFPGA代码实现及仿真)
由于直接对 DDR3 进行控制很复杂,因此一般使用 MIG IP 来实现,同时为了更简单地使用 MIG IP,我们采用 AXI4 总线协议进行控制。下面首先介绍 MIG IP 的配置,然后看看官方 demo (里面包含一个仿真要用到的 DDR3 模型&am…...
传奇人物《周兴和》书连载之67 不辱神圣的使命
不辱神圣的使命 这里,先前还是一个十分神秘的地方。 外人和车辆要想进入这片区域,那是绝对不允许的。这片区域隐于群山之中,且戒备森严,外人若想进入,那是要经过好几道政治审查和随身检查的。近年来,随着…...
Spring框架中的单例Beans是线程安全的么?
在Spring框架中,单例Beans默认是线程安全的。 当你在Spring框架中声明一个单例Bean并配置为默认的单例作用域时,Spring会确保对该Bean的并发访问是线程安全的。以下是一个简单的代码演示: 假设我们有一个名为 SingletonBean 的单例 Bean 类…...
AI脚本插件开发-链接图自动建立档名-插件制作源码-illustrator插件开发
文章目录 1.illustrator1.1.app.activeDocument1.2.selection2.模块分析3.源码工程4.功能描述5.作者答疑本文主要分析一款插件的源码,链接图自动建立档名,代码一般较长,读者耐心阅读,对于学习插件开发具有不小的帮助。先介绍了一下基础资料,如有不懂的地方,就去这些资料里…...
rust智能指针
智能指针 智能指针虽然也号称指针,但是它是一个复杂的家伙:通过比引用更复杂的数据结构,包含比引用更多的信息,例如元数据,当前长度,最大可用长度等。引用和智能指针的另一个不同在于前者仅仅是借用了数据…...
Git、Gitee、Github、Gitlab区别与联系
Git:本地软件,无需联网即可使用,实现本地代码的管理。 分布式版本控制系统,是一种工具,用于代码的存储和版本控制。 将本地文件通过一定的操作将其同步上传到Github或Gitee Gitee:是一家中…...
接口优化的策略
1.批处理 批量思想:批量操作数据库,这个很好理解,我们在循环插入场景的接口中,可以在批处理执行完成后一次性插入或更新数据库,避免多次IO。 //批量入库 batchInsert();List的安全操作有以下几种方式: 使…...
android 隐藏底部虚拟按键
方法一 滑动屏幕 可重新显示出来 protected void hideBottomUIMenu() { //隐藏虚拟按键,并且全屏 if (Build.VERSION.SDK_INT <11 && Build.VERSION.SDK_INT < 19) { // lower api View v this.getWindow().getDecorView(); v.setSyst…...
基于电流控制的并网逆变器(Simulink)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
learn_C_deep_9 (汇编角度理解return的含义、const 的各种应用场景)
return 关键字 不知道我们大家是否有一个疑惑:我们下载一个大型游戏软件(王者荣耀),都要花几个小时去下载,但是一旦我们游戏连输,想要删除这个软件的时候,它仅仅只需要十几秒,这是为…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
