0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ipkvm之RK3568 usb gadget

jf_30051736 来源:jf_30051736 作者:jf_30051736 2023-06-09 18:01 次阅读

PiKVM - Open and inexpensive DIY IP-KVM on Raspberry Pi

开源项目:https://github.com/pikvm

目的:在 rk3568上实现 pikvm所有功能 ,本篇主要实现 rk3568 usb Gadget (hid,ums)

硬件

  • rk3568 / rk3399 / rk3588
  • usb otg接口

开发板既要当USB OTG口既要当键盘,又要当鼠标使用。则要生成两个hid:,一个键盘hidg0,一个鼠标hidg1。

1. 功能实现

1.1 kernel 配置

rockchip_linux_defconfig中添加

CONFIG_USB_CONFIGFS_F_HID = y
CONFIG_USB_CONFIGFS_MASS_STORAGE=y

./build.sh 编译kernel

./build.sh kernel

确认kernel/drivers/usb/gadget/function/f_hid.c被编译 f_hid.o

烧录固件boot.img 切换到loader模式

pYYBAGSC9zWAA9FMAAI7qi2lZ48170.png

1.2 使能HID配置

进入系统后执行

echo usb_hid_en > /tmp/.usb_config & /etc/init.d/S50usbdevice restart

USB功能配置成功会有如下log,表明进入USB Ready:

[ 5662.081549] android_work: sent uevent USB_STATE=CONNECTED
[ 5662.085903] configfs-gadget gadget: high-speed config #1: b
[ 5662.086881] android_work: sent uevent USB_STATE=CONFIGURED

查看 ls -l /dev/hid*

pYYBAGSC90KALHeaAAA93ugNVVI866.png

如果需要添加两个hid,分别做keyboard,mouse

diff --git a/external/rkscript/S50usbdevice b/external/rkscript/S50usbdevice
index 1162f296f..0ad102150 100644
--- a/external/rkscript/S50usbdevice
+++ b/external/rkscript/S50usbdevice
@@ -64,6 +64,7 @@ function_init()
    mkdir ${USB_FUNCTIONS_DIR}/mass_storage.0
    mkdir ${USB_FUNCTIONS_DIR}/uvc.gs6
    mkdir ${USB_FUNCTIONS_DIR}/hid.usb0
+   mkdir ${USB_FUNCTIONS_DIR}/hid.usb1
 }
 configfs_init()
@@ -342,11 +343,19 @@ bind_functions()
    test $RNDIS_EN = on && syslink_function rndis.gs0
    if [ $HID_EN = on ]; then
+       # Keyboard
        echo 1 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb0/protocol
        echo 1 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb0/subclass
        echo 8 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb0/report_length
        echo -ne x05x01x09x06xa1x01x05x07x19xe0x29xe7x15x00x25x01x75x01x95x08x81x02x95x01x75x08x81x03x95x05x75x01x05x08x19x01x29x05x91x02x95x01x75x03x91x03x95x06x75x08x15x00x25x65x05x07x19x00x29x65x81x00xc0 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb0/report_desc
        syslink_function hid.usb0
+       
+       # Mouse 
+       echo 2 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb1/protocol
+       echo 1 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb1/subclass
+       echo 3 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb1/report_length
+       echo -ne x05x01x09x02xa1x01x09x01xa1x00x05x09x19x01x29x03x15x00x25x01x95x03x75x01x81x02x95x01x75x05x81x03x05x01x09x30x09x31x15x81x25x7fx75x08x95x02x81x06xc0xc0 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb1/report_desc
+       syslink_function hid.usb1
    fi
    if [ $UMS_EN = on ];then


改完后需要删除 buildroot/output/rockchip_rk3568,重新编译。

验证功能的话,直接改 buildroot/output/rockchip_rk3568/target/etc/init.d/S50usbdevice

buildroot/output/rockchip_rk3568/target/etc/init.d/.usb_config

usb_adb_en
usb_hid_en
usb_ums_en
ums_block=/dev/block/by-name/userdata
ums_block_auto_mount=on

./build.sh rootfs 烧录即可看到

pYYBAGSC92SAKPH8AAA1rCOk0ZI290.pngpoYBAGSC92mAHPHoAAF_DmJc8So919.png

2. 测试功能

github仓库:https://github.com/aagallag/hid_gadget_test

The HID Gadget driver provides emulation of USB Human Interface
Devices (HID). The basic HID handling is done in the kernel,
and HID reports can be sent/received through I/O on the
/dev/hidgX character devices.

复制hid_gadget_test.c 到sdk,执行

rk3568-sdk/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc hid_gadget_test.c -o hid_gadget_test -static

生成 hid_gadget_test 使用adb push 到开发板

poYBAGSC95OAeip8AACd0DWMsG8100.png

即可开始测试,输入 g i s t r --left-shift 按下回车将发送数据

3. 开发板介绍

3.1 基本参数

基本参数
微处理器 CPU RK3568 /3568J/3568M
内存 2GB/4GB/8GB 默认 4G
存储 8GB/16GB/32GB/64GB/128GB/256GB 默认 32GB
系统 linux、安卓、debian、银河麒麟操作系统
接口参数
USB 接口 4 路 USB2.0、2 路 USB3.0
以太网 2 路 1000M 网口
串口接口 4 路 232 接口,1 路 RS232/485 转换(默认 RS232),通过贴片切换
音视频信号输入 支持 Mic in/Line in 支持 HDMI 输入
支持 Line out
音视频信号输出 支持功放左右声道输出(8Ω,5W)
支持 3.5MM 耳机左右声道输出
支持 3 路显示输出。HDMI,LVDS,MIPI,EDP,其中 LVDS 和 MIPI 二选一
WIFI/蓝牙 WIFI 2.4G/5G 及蓝牙 V4.0/4.2
TF 支持支持外部存储卡扩展
RTC 实时时钟 支持
SATA 供电接口 提供 12V/5v 电源;(SATA 5V/12V)
I2C/SPI/GPIO 8 路 GPIO、2 路 I2C,1 路 SPI
TP I2C 支持
SATA 3.0 接口 支持
PCIE 接口 1 路 PCIE-2X 接口,可依据需求外加扩展卡

3.2 实物图

pYYBAGSC97KAUePUABhbbIJ7c3M895.png

3.3 结构图

pYYBAGSC98KASQ_tAAaNnE8AIWY435.png

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8241

    浏览量

    149911
  • usb
    usb
    +关注

    关注

    60

    文章

    7767

    浏览量

    262289
  • 线路板
    +关注

    关注

    23

    文章

    1172

    浏览量

    46758
  • HID
    HID
    +关注

    关注

    2

    文章

    125

    浏览量

    46443
  • RK3568
    +关注

    关注

    4

    文章

    479

    浏览量

    4706
收藏 人收藏

    评论

    相关推荐

    RK3568开发板数据手册

    RK3568 支持 SATA/PCIE/USB3.0 等各类型外围接口,内置独立的 NPU,可用于轻量级人工智能应用。
    发表于 08-30 11:56 24次下载

    rk3568处理器属于什么档次 rk3568性能怎么样

     rk3568处理器属于中高端通用型SOC,RK3568兼具CPU、GPU、NPU、VPU于一身,是一款高性能低功耗四核应用的处理器。
    发表于 08-26 17:05 1.8w次阅读
    <b class='flag-5'>rk3568</b>处理器属于什么档次 <b class='flag-5'>rk3568</b>性能怎么样

    ROC RK3568 PC源代码RK3568/RK3588 RKNN SDK

    电子发烧友网站提供《ROC RK3568 PC源代码RK3568/RK3588 RKNN SDK.txt》资料免费下载
    发表于 09-20 09:55 40次下载
    ROC <b class='flag-5'>RK3568</b> PC源代码<b class='flag-5'>RK3568</b>/<b class='flag-5'>RK</b>3588 RKNN SDK

    RK3568核心板数据手册

    RK3568 系列处理器还集成了 USB2.0,USB3.0 千兆以太网,CAN-BUS,HDMI,LVDS 等接口。
    发表于 04-18 14:17 40次下载

    RK3568 SDK 的编译

    RK3568 SDK 的编译
    的头像 发表于 12-13 11:46 1432次阅读
    <b class='flag-5'>RK3568</b> SDK 的编译

    迅为基于RK3568开发板的嵌入式学习Linux驱动视频

    迅为基于RK3568开发板的嵌入式学习Linux驱动视频
    的头像 发表于 05-19 16:30 804次阅读
    迅为基于<b class='flag-5'>RK3568</b>开发板的嵌入式学习<b class='flag-5'>之</b>Linux驱动视频

    瑞芯微RK3568主板开发板PET_RK3568_P01简述

    瑞芯微RK3568主板开发板PET_RK3568_P01简述
    的头像 发表于 08-08 11:41 2598次阅读
    瑞芯微<b class='flag-5'>RK3568</b>主板开发板PET_<b class='flag-5'>RK3568</b>_P01简述

    瑞芯微RK3568核心板PET_RK3568_CORE简述

    瑞芯微RK3568核心板PET_RK3568_CORE简述
    的头像 发表于 08-08 11:44 3231次阅读
    瑞芯微<b class='flag-5'>RK3568</b>核心板PET_<b class='flag-5'>RK3568</b>_CORE简述

    RK3568RK3566的区别

    RK3568RK3566的区别 RK3568RK3566是两种不同的芯片,都是由Rockchip公司推出的。它们都是面向高性能应用市场的芯片,具有相似的性能规格和功能特点。但是在某
    的头像 发表于 08-15 17:25 1.5w次阅读

    RK35683568J的区别

    RK35683568J的区别 在当前处理器市场中,以小而美形象闻名的瑞克微电子旗下产品RK3568/J也引起了广泛关注,其中RK35683568
    的头像 发表于 08-15 17:25 7812次阅读

    rk3568有多少引脚?

    rk3568有多少引脚? 首先,让我们来了解一下什么是rk3568rk3568是由瑞芯微推出的一款高性能、低功耗的嵌入式处理器,它是rk3566的升级版本,采用了更加先进的技术和架构
    的头像 发表于 08-15 17:25 1411次阅读

    rk3568是什么架构的?

    RK3568是什么架构的? 中国领先的无晶圆厂半导体公司Rockchip Electronics推出了一款专门为人工智能应用设计的新型片上系统(SoC)。这种新型SoC被称为RK3568,构建
    的头像 发表于 08-15 17:25 2533次阅读

    迅为RK3568开发板外接模块HX711 称重模块

    迅为RK3568开发板外接模块HX711 称重模块
    的头像 发表于 08-30 15:24 1303次阅读
    迅为<b class='flag-5'>RK3568</b>开发板外接模块<b class='flag-5'>之</b>HX711 称重模块

    瑞芯微RK3568亮点介绍

    RK3568支持SATA/PCIE/USB3.0等多种外设接口,内置独立NPU,可用于轻量级AI应用。RK3568同时支持Android11和Debian10系统,主要面向物联网网关、NVR存储、工业板、工业设
    发表于 12-20 09:48 28次下载

    RK3568-视频开发案例

    RK3568-视频开发案例
    的头像 发表于 01-18 15:51 595次阅读
    <b class='flag-5'>RK3568</b>-视频开发案例