获取更多相关的【RK3576】【Android14】驱动开发,可收藏系列博文,持续更新中:
【RK3576】Android 14 驱动开发实战指南


硬件接口

RK3576支持两个USB3.0控制器

驱动开发

dts配置

在“Android14/kernel-6.1/arch/arm64/boot/dts/rockchip/rk3576.dtsi”中包含USB相关dts配置

        usb_drd0_dwc3: usb@23000000 {
                compatible = "rockchip,rk3576-dwc3", "snps,dwc3";
                reg = <0x0 0x23000000 0x0 0x400000>;
                clocks = <&cru CLK_REF_USB3OTG0>,
                         <&cru CLK_SUSPEND_USB3OTG0>,
                         <&cru ACLK_USB3OTG0>;
                clock-names = "ref", "suspend", "bus_clk";
                interrupts = <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>;
                power-domains = <&power RK3576_PD_USB>;
                resets = <&cru SRST_A_USB3OTG0>;
                reset-names = "usb3-otg";
                dr_mode = "otg";
                phys = <&u2phy0_otg>, <&usbdp_phy_u3>;
                phy-names = "usb2-phy", "usb3-phy";
                phy_type = "utmi_wide";
                snps,dis_enblslpm_quirk;
                snps,dis-u1-entry-quirk;
                snps,dis-u2-entry-quirk;
                snps,dis-u2-freeclk-exists-quirk;
                snps,dis-del-phy-power-chg-quirk;
                snps,dis-tx-ipgap-linecheck-quirk;
                snps,parkmode-disable-hs-quirk;
                snps,parkmode-disable-ss-quirk;
                status = "disabled";
        };

        usb_drd1_dwc3: usb@23400000 {
                compatible = "rockchip,rk3576-dwc3", "snps,dwc3";
                reg = <0x0 0x23400000 0x0 0x400000>;
                clocks = <&cru CLK_REF_USB3OTG1>,
                         <&cru CLK_SUSPEND_USB3OTG1>,
                         <&cru ACLK_USB3OTG1>;
                clock-names = "ref", "suspend", "bus_clk";
                interrupts = <GIC_SPI 260 IRQ_TYPE_LEVEL_HIGH>;
                power-domains = <&power RK3576_PD_PHP>;
                resets = <&cru SRST_A_USB3OTG1>;
                reset-names = "usb3-otg";
                dr_mode = "otg";
                phys = <&u2phy1_otg>, <&combphy1_psu PHY_TYPE_USB3>;
                phy-names = "usb2-phy", "usb3-phy";
                phy_type = "utmi_wide";
                snps,dis_enblslpm_quirk;
                snps,dis-u1-entry-quirk;
                snps,dis-u2-entry-quirk;
                snps,dis-u2-freeclk-exists-quirk;
                snps,dis-del-phy-power-chg-quirk;
                snps,dis-tx-ipgap-linecheck-quirk;
                snps,dis_rxdet_inp3_quirk;
                snps,parkmode-disable-hs-quirk;
                snps,parkmode-disable-ss-quirk;
                dma-coherent;
                status = "disabled";
        };

在“kernel-6.1/arch/arm64/boot/dts/rockchip/rk3576-evb1.dtsi”设备配置端又对USB的dts配置做了一次覆盖:

&usb_drd0_dwc3 {
        dr_mode = "otg";
        usb-role-switch;
        port {
                usb_drd0_role_switch: endpoint {
                        remote-endpoint = <&usbc0_role_sw>;
                };
        };
};

&usb_drd1_dwc3 {
        dr_mode = "host";  //强制将USB0配置为host
        status = "okay";
};

 USB 实现虚拟串口通信

在 Android 开发板上通过 USB 实现虚拟串口通信(CDC/ACM),两个 RK3576 开发板可以直接通过 USB 线连接不需要额外芯片

内核配置

(确保启用 USB Host 支持和 CDC ACM 驱动:)

CONFIG_USB=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_ACM=y

连接检测

# 查看连接的 USB 设备
lsusb
# 应显示:ID 2207:0410 Fuzhou Rockchip Electronics CDC ACM

# 查看生成的串口设备
ls /dev/ttyACM*
# 应显示:/dev/ttyACM0

USB实现UVC功能

在 RK3576 作为 USB Host 并连接 UVC 设备(如摄像头)的场景下,配置重点在于 内核驱动加载 和 V4L2 框架支持

内核配置

# USB Host 支持
CONFIG_USB=y
CONFIG_USB_XHCI_HCD=y          # XHCI 控制器驱动
CONFIG_USB_XHCI_PLATFORM=y     # 平台专用XHCI
CONFIG_USB_EHCI_HCD=y          # EHCI 兼容模式

# UVC 设备支持
CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=y       # UVC 驱动核心
CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y  # 支持事件上报

# 视频格式(根据实际需求选择)
CONFIG_V4L2_JPEG_HELPER=y
CONFIG_VIDEO_H264=y

USB复合设备功能

在 RK3576 上实现 单路 USB Host 同时支持 UVC 摄像头、USB CDC-ACM 串口和 USB 网卡(RNDIS/ECM) 需要通过 USB Multifunction Composite Gadget 技术实现。

内核配置

# USB Gadget 基础
CONFIG_USB_CONFIGFS=y
CONFIG_USB_LIBCOMPOSITE=y  //支持USB复合设备

# 功能模块
CONFIG_USB_CONFIGFS_F_UVC=y      # UVC摄像头
CONFIG_USB_CONFIGFS_ACM=y      # CDC-ACM串口
CONFIG_USB_CONFIGFS_RNDIS=y    # RNDIS网卡
# 或 CONFIG_USB_CONFIGFS_ECM   # ECM网卡(二选一)

# 视频/网络支持
CONFIG_USB_VIDEO_CLASS=y
CONFIG_USB_NET_DRIVERS=y

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20. TaskExecutor与ResourceManager心跳

20. TaskExecutor与ResourceManager心跳 现在&#xff0c;需要回过头看 ResourceManager是如何产生心跳管理服务的。cluster.initializeServices 方法的 heartbeatServices createHeartbeatServices(configuration);产生一个 HeartbeatServicesImpljobmanager的 resourceManag…

OS19.【Linux】进程状态(上)

目录 1.情景引入 2.操作系统学科对进程状态的分类 运行状态 基于时间片的轮转调度算法 阻塞状态 等待IO设备的例子 等待其他进程中需要获取的数据 进程唤醒 挂起状态(全称为阻塞挂起状态) 简单谈谈虚拟内存管理 就绪状态 笔面试题 3.Linux对进程状态的分类 R和S状…

如何优雅地修改项目的 Android 版本(API 级别)

引言 在 Android 开发的日常迭代中&#xff0c;我们经常需要升级或降级项目的 minSdkVersion、targetSdkVersion 与 compileSdkVersion。升级可以解锁新特性和性能优化&#xff1b;降级则可能为了兼容旧机型或快速验证问题。本文将手把手演示在 Android Studio 里修改 Android …

GNU Radio多类信号多种参数数据集生成技巧

参考我的这篇博客&#xff0c;我想自制一个多信号数据集&#xff1a; 【多雷达信号硬件模拟】 3台USRP1台VSG信号发生器模拟多雷达信号&#xff0c;1台USRP产生高斯噪声模拟更多信道环境&#xff0c;1台USRP采集信号 需要在多个波段对四种信号进行参数设置&#xff0c;带宽有…

Ansible + Shell 服务器巡检脚本

脚本概述这是一个用于服务器日常巡检的 Shell 脚本&#xff0c;主要功能包括&#xff1a;检查多台主机的网络连通性 监控CPU、内存和磁盘使用率 生成详细的巡检报告 通过企业微信发送告警通知核心技术点1. 主机批量管理使用Ansible工具远程执行命令和脚本 通过主机…

Linux-rpm和yum

一、RPMRPM&#xff08;Red Hat Package Manager&#xff09;是一个用于管理 Red Hat 系列 Linux 发行版&#xff08;如 RHEL、CentOS、Fedora&#xff09;软件包的工具。RPM 允许用户以统一的格式来安装、卸载、升级和查询软件包。它是 .rpm 文件的主要工具&#xff0c;后缀名…

手推OpenGL相机的正交投影矩阵和透视投影矩阵(附源码)

概述计算OpenGL的正交投影矩阵和透视投影矩阵是有现成函数的。自己手推不是为了重复造轮子。手推一遍&#xff0c;可以极大的加强对这两个矩阵的理解。同时也可以满足一下自己求知欲。正交投影矩阵手推正交投影矩阵源码 WGMatrix4x4 WGMatrix4x4::BuildOrtho(double l, double …

【跨国数仓迁移最佳实践2】MaxCompute SQL执行引擎对复杂类型处理全面重构,保障客户从BigQuery平滑迁移

本系列文章将围绕东南亚头部科技集团的真实迁移历程展开&#xff0c;逐步拆解 BigQuery 迁移至 MaxCompute 过程中的关键挑战与技术创新。本篇为第二篇&#xff0c;跨国数仓迁移背后 MaxCompute 的统一存储格式创新。 注&#xff1a;客户背景为东南亚头部科技集团&#xff0c;…

react(基础篇)

React由Meta公司研发&#xff0c;用于构建Web和原生交互界面的库。 React 官方中文文档 查看JSX &#xff08;一&#xff09;React组件 用户界面的一部分&#xff0c;通俗的来讲&#xff0c;最小的元素组成的单元&#xff0c;可以实现部分逻辑与功能 房子的门就可以看成一个…

数据结构-哈希表(一)哈希函数、哈希表介绍、优缺点

哈希表 哈希函数哈希表使用了哈希函数来完成key到地址的快速映射&#xff0c;所以在了解哈希表之前&#xff0c;需要先明白哈希函数的概念和特点。 哈希函数的定义 哈希函数 哈希函数是一种将任意长度输入的数据&#xff0c;转换成固定长度输出的算法哈希函数H可以表示为yH(x) …

Shader开发(一)什么是渲染

前言在现代游戏开发和计算机图形学领域&#xff0c;渲染技术是连接虚拟世界与视觉呈现的关键桥梁。无论你是刚接触图形编程的新手&#xff0c;还是希望深入理解渲染原理的开发者&#xff0c;掌握渲染的核心概念都是必不可少的第一步。什么是渲染&#xff1f;渲染&#xff08;Re…

策略模式+工厂模式(案例实践易懂版)

最近,可以说这2025年度,自己更文的次数都大大减少,主要最近大环境不景气,自己职业也受到波及,学习的东西也是因为AI而变得更多, 没办法,你不学,总有人会学,关于AI的我也准备出个专辑,相信绝对帮助到大家 额,好像说多了,言归正传,我们看一下今天的主题:策略模式工厂模式 本文主要…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - snowNLP库实现中文情感分析

大家好&#xff0c;我是java1234_小锋老师&#xff0c;最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程&#xff0c;持续更新中&#xff0c;计划月底更新完&#xff0c;感谢支持。今天讲解snowNLP库实现中文情感分析 视频在线地址&…

大根堆,小根堆,双指针

码蹄集OJ-大约 #include<bits/stdc.h> using namespace std; priority_queue<int>max2,maxDel; priority_queue<int,vector<int>,std::greater<int>>min2,minDel; const int N1e51; int n,result0,a[N]; int main( ) {cin>>n;for(int i1…

RS485和Modbus

UART协议中&#xff0c;空闲状态为高电平&#xff0c;也就是1,R25和R27&#xff0c;485收发器特性MAX485 (美信)SSP485 (国产替代)AZRS3080 (安格)供电电压5V5V3.3V ~ 5.5V静态电流300μA (接收模式)120μA (接收模式)150μA (接收模式)传输速率2.5Mbps10Mbps20Mbps总线负载能力…

【Android】交叉编译faiss库 | 问题解决

目录 一 解决 FAISS 交叉编译到 Android 时的 BLAS/MKL 依赖问题 二 交叉编译faiss ■禁用 BLAS并交叉编译faiss ■使用 OpenBLAS 的 Android 移植版本并交叉编译faiss 三 报错处理 ■报错 ■SWIG 一 解决 FAISS 交叉编译到 Android 时的 BLAS/MKL 依赖问题

《使用 IDEA 部署 Docker 应用指南》

使用 IDEA 部署 Docker 应用的详细步骤 一、创建 Dockerfile 配置文件 在项目根目录下创建Dockerfile文件&#xff0c;配置内容如下&#xff1a; # 使用官方的OpenJDK镜像作为基础镜像 FROM openjdk:17-jdk-slim# 设置维护者信息(可选) LABEL maintainer"三木豪"# 设…

【Docker#3】Window 和 Linux 上 docker安装 相关知识

前置了解&#xff1a; X86 高并发&#xff1a;基于 x86 架构的处理器&#xff0c;在高负载下处理大量并发请求的能力。ARM &#xff1a;使用 ARM 架构处理器的移动设备&#xff0c;具有低功耗和高性能的特点。 操作系统&#xff1a; CentOS&#xff1a;基于 Red Hat Enterprise…

一次 POI 版本升级踩坑记录

前言 结论先行。 开发过程中由于可能涉及到二次开发&#xff0c;若原系统开发时间久远&#xff0c;没有达成一致规范设计&#xff0c;导致风格各异&#xff0c;确实满足当时开发场景&#xff0c;但增大了后续的更新的难度&#xff0c;容易出现俄罗斯套娃现象&#xff0c;新的更…

硬件设计学习DAY13——电源缓冲电路设计全解

每日更新教程&#xff0c;评论区答疑解惑&#xff0c;小白也能变大神&#xff01;" 目录 一.缓冲电路介绍 1.1缓冲电路的作用 1.2寄生参数的来源 1.3缓冲电路的类型 1.4常见缓冲电路设计 1.5设计原则 二.吸收与缓冲 2.1吸收与缓冲的核心作用 2.2电压尖峰与吸收措…