跳到主要内容

16 篇博文 含有标签「RK3576」

查看所有标签

DshanPI-A1 测评一:构建 buildroot 系统调试 IMX415 摄像头

· 阅读需 7 分钟
世玉轩
100askTeam yuxuan.

板子介绍

DshanPi-A1是深圳百问网(韦东山团队)开发的一款高性能AI嵌入式开发板,基于瑞芯微RK3576芯片设计,专为AI教育、边缘计算和智能设备开发打造。

img

核心参数

参数项规格
主控芯片瑞芯微RK3576,8nm工艺,八核64位4×Cortex-A72(2.2GHz)+4×Cortex-A53(1.8GHz)瑞芯微电子股份有限公司
AI算力内置独立NPU,6TOPS计算能力,支持INT4/INT8/INT16混合运算
内存/存储板载LPDDR4/4X内存支持eMMC、UFS存储扩展SD卡插槽
显示接口HDMIv2.1/eDPv1.3组合接口MIPIDSI(4通道)瑞芯微电子股份有限公司
视频解码支持8K@30fps、4K@120fps高清视频
网络连接支持WiFi6/BLE5.2(需外接模块)千兆网口(部分版本)
USB接口多个USB3.0/2.0(Type-C和A型)瑞芯微电子股份有限公司
其他接口UART、I2C、SPI、GPIO、音频接口、CAN总线(部分版本)
电源支持30WPD快充(Type-C接口)
尺寸紧凑型设计(具体尺寸未公开)

产品特点

1️⃣ 强大的AI处理能力

· 6TOPS独立NPU可流畅运行DeepSeek、Qwen等轻量级大语言模型

· 支持主流AI框架(TensorFlow、PyTorch、MXNet等)

· 适用于图像识别、语音处理、智能监控等AI应用开发

2️⃣ 丰富的多媒体性能

· 支持8K视频解码,可作为高清媒体中心

· HDMIIN功能可将开发板作为电脑副屏使用

· 内置音频编解码器,支持3.5mm音频输出

3️⃣ 完善的开发支持

· 搭载DShanOS系统(百问网自研Linux发行版)

· 配套免费教学课程和文档,降低学习门槛

· 支持Armbian系统,提供官方镜像下载

· 提供完整SDK和示例代码,便于二次开发

4️⃣ 灵活的扩展能力

· 引出全部GPIO接口,方便连接各类传感器和执行器

· 支持多种通信协议,适合IoT应用开发

· 可外接摄像头、显示屏、WiFi/4G模块等扩展功能

应用场景

· AI教育与学习:适合嵌入式AI课程教学和实验

· 边缘计算设备:可部署轻量级AI模型,实现本地智能决策

· 智能家居中控:构建高性能、低功耗的智能家居控制中心

· 工业自动化:适用于智能设备监控和数据采集

· 商业显示:支持8K显示,可用于广告机和信息发布系统

· AI视觉系统:可用于人脸识别、物体检测等场景

配套资源

· 官方文档站点:https://wiki.dshanpi.org/docs/dshanpi-a1/

· 开发社区:韦东山嵌入式开发者社区(100ask.org)

· QQ技术交流群:798273638

· 免费教程:提供从基础到高级的AI开发课程

buildroot SDK安装

1. 官方虚拟机获取

https://pan.baidu.com/s/15M8zuHOwl_SITl6cSk_7Vg?pwd=eaax提取码:eaax

2. 安装打开vmware,运行虚拟机

进去ubuntu系统,账号密码为ubuntu

img

3. 编译SDK

打开虚拟机,执行以下命令,进入SDK根目录:

cd ~/100ask-rk3576_SDK/

img

选择好配置文件:

./build.sh lunch

img

4. 编译

运行下列命令

./build.sh

img

等待编译结束

img

设备树修改打开摄像头节点

进入

/home/ubuntu/100ask-rk3576_SDK/kernel/arch/arm64/boot/dts/rockchip

修改图片中的文件

img

img

改为if1

回到sdk目录使用

./build.sh kernel

img

img

最后再

./build.sh updateimg

img

img

最后上传烧录(记得进入MASKROM)

img

成果展示

img

但是依然有bug但是屏幕摄像头色彩还是显示不对。

问题解决

最开始我是怀疑是摄像头的.xml(.json)没有加载出来,通过调试了好久仍没有结果但是没有结果

经过了多方面的调试最终我找到了解决方案:

第一步:从media-ctl输出发现关键线索

media-ctl -p -d /dev/media0输出中,我注意到了这个关键信息:

entity 63: m00_b_rk628-csi9-0051 (1 pad, 1 link)
type V4L2 subdev subtype Sensor flags 0
device node name /dev/v4l-subdev2
pad 0: Source
[fmt:UYVY8_2X8/64x64@10000/600000 field:none]
-> "rockchip-csi2-dphy0":0 [ENABLED] ←注意这里的[ENABLED]

img

分析点

· 系统中存在一个rk628-csi传感器实体

· 它的链路状态是[ENABLED],意味着它正在占用CSI硬件资源

· 但分辨率只有64x64,这显然不是正常的摄像头输出

第二步:从dmesg日志发现IMX415驱动正常

dmesg | grep -i imx415输出中:

[3.459474] imx415 3-0037: Detected imx415 id 0000e0
[3.515523] imx415 3-0037: Consider updating driver imx415 to match on endpoints
[3.515557] rockchip-csi2-dphy csi2-dphy3: dphy3 matches m01_f_imx415 3-0037: bustype 5

分析点

· IMX415传感器被正确检测到(ID:0000e0)

· 驱动加载成功,甚至建立了与CSI-DPHY的匹配关系

· 但没有出现V4L2子设备创建成功的消息

第三步:从设备树结构推断硬件连接

从设备树片段:

&csi2_dphy3 {
port@0 {
mipi_in_ucam3: endpoint@1 {
remote-endpoint = <&imx415_out0>; ←IMX415连接到这里
data-lanes = <1 2 3 4>;
};
};
port@1 {
csidphy3_out: endpoint@0 {
remote-endpoint = <&mipi3_csi2_input>;
};
};
};

分析点

· IMX415通过CSI-DPHY3连接到系统

· 但实际的media-ctl输出显示的是rockchip-csi2-dphy0被占用

· 这表明可能存在多个CSI接口的资源分配问题

第四步:从V4L2子设备缺失推断注册失败

运行检查命令时:

ls /sys/bus/i2c/devices/3-0037/v4l-subdev*/media_device/
# 输出:No such file or directory

img

分析点

· I2C设备3-0037存在且驱动绑定正常

· 但没有创建对应的V4L2子设备

· 这通常意味着驱动探测成功,但后续的V4L2注册失败

第五步:连接所有线索形成完整画面

把以上线索串联起来:

1. 现象:IMX415驱动加载但无V4L2设备

2. 证据1:rk628-csi占用着CSI链路且状态为[ENABLED]

3. 证据2:IMX415 I2C通信正常但媒体设备缺失

4. 证据3:设备树显示两者可能共享CSI硬件资源

逻辑推理

· 如果IMX415硬件故障→I2C探测应该失败

· 如果IMX415驱动问题→dmesg应该有错误日志

· 如果设备树配置错误→CSI匹配不会成功

· 唯一合理的解释:硬件资源被其他设备占用

第六步:开始实践

img

重新编译设备树烧录开发板完美运行!

img

img

总结

  1. 嵌入式设备中硬件资源冲突是常见隐性问题,尤其多设备共享 CSI、I2C 等链路时,需重点排查设备占用状态。

  2. 开发过程中应充分利用media-ctl、dmesg等工具,结合设备树配置分析,快速定位资源分配问题,避免盲目调试。

  3. 对于驱动加载正常但功能异常的场景,优先排查硬件资源占用、V4L2 子设备注册等关键环节,缩小问题范围。

  4. DshanPi-A1 开发板的 CSI 接口资源分配需通过设备树精准配置,修改后需严格遵循 Buildroot 编译流程重新生成镜像,确保配置生效。

DshanPI-A1 Weston 多屏配置

· 阅读需 11 分钟
世玉轩
100askTeam yuxuan.

在嵌入式系统开发中,显示配置是用户界面实现的基础环节。Weston作为Wayland合成器的参考实现,广泛应用于嵌入式设备和桌面环境。面对不同的硬件配置和应用场景,需要精确控制显示输出。下面基于DShanPi-A1的buildroot固件版本,提供Weston在单屏独占、双屏同显和双屏异显三种典型场景下的配置方法,提供详细的操作指南。

Weston基础架构与配置原理

在进行配置之前,有比较简单了解一下基本原理。

Weston显示系统架构

Weston采用模块化设计,其核心组件包括:

  • 后端(Backend):负责与底层图形系统交互,如DRM、X11、Wayland等
  • 合成器(Compositor):管理窗口合成、渲染和输出
  • Shell:提供用户界面框架,如桌面、面板等

在嵌入式系统中,通常使用DRM后端drm-backend.so,它直接与Linux内核的Direct Rendering Manager交互,提供了高效的硬件加速支持。

配置文件结构解析

Weston的主要配置文件位于/etc/xdg/weston/weston.ini,采用INI格式组织。关键的配置段包括:

  • [core]:核心配置,定义后端行为和全局参数
  • [output]:显示输出配置,控制每个物理接口的属性
  • [shell]:桌面环境相关设置
  • [libinput]:输入设备配置
  • [device]:特定设备的高级配置

HDMI独占显示配置

在某些嵌入式应用场景中,设备需要强制使用HDMI接口作为唯一显示输出,同时禁用内置屏幕(如DSI接口的LCD)。这种配置常见于:

  • 工业控制台固定连接外接显示器
  • 数字标牌系统使用大屏显示
  • 需要高分辨率输出的专业应用

以下为详细的配置

首先需要配置环境变量

export WESTON_DRM_MIRROR=false
export WESTON_DRM_PREFER_EXTERNAL=0
export WESTON_DRM_SINGLE_HEAD=0
export WESTON_DRM_MASTER_OUTPUT="HDMI-A-1"

再写入:/etc/xdg/weston/weston.ini

[core]
backend=drm-backend.so
require-input=true # 必须连接输入设备才能启动
require-outputs=true # 必须检测到输出设备
idle-time=0 # 禁用屏幕休眠
repaint-window=16 # 重绘窗口,约60Hz刷新率

# 禁用自动检测
use-udev=false # 关闭udev自动检测,手动控制输出

[output]
name=HDMI-A-1 # 指定HDMI-A-1接口
mode=1920x1080@60 # 分辨率1080p,60Hz刷新率
transform=normal # 无旋转变换
scale=1.5 # 150%缩放,适应高DPI

# 禁用DSI接口
[output]
name=DSI-1
mode=off # 关闭该输出

[shell]
panel-scale=2 # 面板元素200%缩放
cursor-size=32 # 鼠标指针大小
locking=false # 禁用屏幕锁定
startup-animation=none # 禁用启动动画

[keyboard]
vt-switching=true # 允许虚拟终端切换

[libinput]
touchscreen_calibrator=true # 启用触摸屏校准
enable-tap=true # 启用点击手势
natural-scroll=true # 自然滚动方向

[device]
name=wch.cn USB2IIC_CTP_CONTROL # 特定触摸设备
rotation=normal # 正常方向

测试

启动

77539c1e9693010348396a61507bc998

运行3D测试

5a4bfe7f0ea355b57326d99d83906fa7

在实际应用中,应关闭DSI的驱动输出

7ddd67907df30eb5a1e9e2512861974e

tips:注意了,这里有一个坑,导致我一开始hdmi屏幕无法启动

看这个weston启动输出日志

root@rk3576-buildroot:/# weston
Date: 2025-12-03 UTC
..........
[03:20:26.528] Output HDMI-A-1 (crtc 72) video modes:
1024x600@59.8, preferred, 50.2 MHz
1920x1080@60.0 16:9, 148.5 MHz
1920x1080@59.9 16:9, 148.4 MHz
1920x1080i@60.0, 74.2 MHz
1920x1080i@60.0 16:9, 74.2 MHz
1920x1080i@59.9 16:9, 74.2 MHz
1920x1080@50.0, current, 148.5 MHz
1920x1080@50.0 16:9, 148.5 MHz
1920x1080i@50.0, 74.2 MHz
1920x1080i@50.0 16:9, 74.2 MHz
1280x1024@75.0, 135.0 MHz
1280x720@60.0 16:9, 74.2 MHz
1280x720@59.9 16:9, 74.2 MHz
1280x720@50.0, 74.2 MHz
1280x720@50.0 16:9, 74.2 MHz
1024x768@75.0, 78.8 MHz
1024x768@70.1, 75.0 MHz
1024x768@60.0, 65.0 MHz
832x624@74.6, 57.3 MHz
800x600@75.0, 49.5 MHz
800x600@72.2, 50.0 MHz
800x600@60.3, 40.0 MHz
800x600@56.2, 36.0 MHz
720x576@50.0, 27.0 MHz
720x576@50.0 4:3, 27.0 MHz
720x576@50.0 16:9, 27.0 MHz
720x480@60.0 4:3, 27.0 MHz
720x480@60.0 16:9, 27.0 MHz
720x480@59.9 4:3, 27.0 MHz
720x480@59.9 16:9, 27.0 MHz
640x480@75.0, 31.5 MHz
640x480@72.8, 31.5 MHz
640x480@60.0 4:3, 25.2 MHz
640x480@59.9, 25.2 MHz
720x400@70.1, 28.3 MHz
.....

注意这个分辨率

1024x600@59.8, preferred, 50.2 MH这是我的屏幕的实际物理分辨率,是默认配置,如果直接配置

# 强制指定输出
[output]
name=HDMI-A-1
#mode=1920x1080@50
mode=1024x600@59.8
transform=normal
scale=1.5

启动时:

xkbcommon: ERROR: couldn't find a Compose file for locale "en_US.UTF-8" (mapped to "en_US.UTF-8")
could not create XKB compose table for locale 'en_US.UTF-8'. Disabiling compose
xkbcommon: ERROR: couldn't find a Compose file for locale "en_US.UTF-8" (mapped to "en_US.UTF-8")
could not create XKB compose table for locale 'en_US.UTF-8'. Disabiling compose
[ 695.260819] dwhdmi-rockchip 27da0000.hdmi: use tmds mode
[ 695.279593] rockchip-vop2 27d00000.vop: [drm:vop2_crtc_atomic_enable] Update mode to 1024x600p60, type: 11(if:HDMI0, flag:0x0) for vp0 dclk: 50250000
[ 695.279636] rockchip-hdptx-phy-hdmi 2b000000.hdmiphy: hdptx_ropll_cmn_config bus_width:7aae4 rate:1485000
[ 695.279810] rockchip-hdptx-phy-hdmi 2b000000.hdmiphy: hdptx phy pll locked!
[ 695.279872] rockchip-hdptx-phy-hdmi 2b000000.hdmiphy: hdptx_ropll_cmn_config bus_width:7aae4 rate:502500
[ 695.280061] rockchip-hdptx-phy-hdmi 2b000000.hdmiphy: hdptx phy pll locked!
[ 695.280069] rockchip-vop2 27d00000.vop: [drm:vop2_crtc_atomic_enable] set dclk_vp0 to 50250000, get 50250000
[ 695.280120] dwhdmi-rockchip 27da0000.hdmi: final tmdsclk = 50250000
[ 695.280189] dwhdmi-rockchip 27da0000.hdmi: don't use dsc mode
[ 695.280198] dwhdmi-rockchip 27da0000.hdmi: dw hdmi qp use tmds mode
[ 695.280206] rockchip-hdptx-phy-hdmi 2b000000.hdmiphy: bus_width:0x7aae4,bit_rate:502500
[ 695.285263] rockchip-hdptx-phy-hdmi 2b000000.hdmiphy: hdptx phy lane can't ready!
[ 695.285271] phy phy-2b000000.hdmiphy.4: phy poweron failed --> -22
[ 695.285278] dwhdmi-rockchip 27da0000.hdmi: dw_hdmi_qp_setup hdmi set operation mode failed
[ 695.285317] dwhdmi-rockchip 27da0000.hdmi: Rate 50250000 missing; compute N dynamically
[ 695.286726] dwhdmi-rockchip 27da0000.hdmi: Rate 50250000 missing; compute N dynamically
[ 695.315462] dwhdmi-rockchip 27da0000.hdmi: use tmds mode

注意:

[  695.285263] rockchip-hdptx-phy-hdmi 2b000000.hdmiphy: hdptx phy lane can't ready!
[ 695.285271] phy phy-2b000000.hdmiphy.4: phy poweron failed --> -22

屏幕是无法启动的,所以这里有一个经验:

在测试屏幕时,物理分辨率可能会不兼容,需要测试多个分辨率,找到兼容的分辨率

关键配置点

use-udev=false的重要性: 默认情况下,Weston通过udev自动检测所有连接的显示设备。设置为false后,Weston将仅使用配置文件中明确指定的输出,这为实现精确控制提供了基础。

输出优先级控制: 当多个[output]段存在时,Weston按配置文件顺序处理。将需要禁用的输出放在激活的输出之后,并设置mode=off,可以确保正确的显示控制。

缩放配置策略: 嵌入式设备通常需要调整UI元素的物理尺寸。通过scale参数可以独立控制每个输出的缩放比例,这对于连接不同DPI的显示器尤为重要。

dsi独占模式

与HDMI独占相反,某些应用需要仅使用设备内置屏幕,如:

  • 移动设备或便携式仪器
  • 节省功耗的电池供电设备
  • 不需要外接显示的应用场景

/etc/xdg/weston/weston.ini

[core]
backend=drm-backend.so

# Allow running without input devices
require-input=false

# Allow running without output devices
require-outputs=none

# Disable screen idle timeout by default
idle-time=0

# 关键:禁用自动检测所有连接
use-udev=false

# The repaint-window is used to calculate repaint delay(ms) after flipped.
# value <= 0: delay = abs(value)
# value > 0: delay = vblank_duration - value
repaint-window=-1

# Allow blending with lower drm planes
# gbm-format=argb8888

[shell]
# top(default)|bottom|left|right|none, none to disable panel
# panel-position=none

# Scale panel size
panel-scale=2

# Set cursor size
cursor-size=32

# none|minutes(default)|minutes-24h|seconds|seconds-24h
# clock-format=minutes-24h
clock-with-date=false

# Disable screen locking
locking=false

# Disable the desktop starting up animation
startup-animation=none

[libinput]
# Uncomment below to enable touch screen calibrator(weston-touch-calibrator)
# touchscreen_calibrator=true
# calibration_helper=/bin/weston-calibration-helper.sh

[keyboard]
# Comment this to enable vt switching
vt-switching=false

# Configs for auto key repeat
# repeat-rate=40
# repeat-delay=400
[output]
name=DSI-1
mode=480x800
transform=rotate-180
scale=0.2

# 明确禁用 DSI-1
[output]
name=HDMI-A-1
mode=off

测试

开机

9315648b71500098278da76036ecfb39

运行3D测试

d568d0a0960f976ed7dcf92e6ca710ff

ab203fb060903387bbc1d57538240d05

关键点

旋转配置: 嵌入式设备的屏幕安装方向可能不同。transform参数支持多种旋转选项:

  • normal:无旋转
  • rotate-90:顺时针90度
  • rotate-180:180度
  • rotate-270:顺时针270度
  • flipped:水平翻转
  • flipped-rotate-180:组合变换

DPI适配策略: 小尺寸高分辨率屏幕需要适当的UI缩放。通过试验不同scale值,找到物理尺寸合适的UI元素大小。本配置中使用0.2(20%)缩放,确保在480x800分辨率下UI元素可正常操作。

双屏同显

双屏同显(镜像模式)适用于:

  • 演示和教学场景
  • 主控台与观察屏同步显示
  • 故障排除和调试

/etc/xdg/weston/weston.ini

[core]
backend=drm-backend.so
require-input=true
require-outputs=true
idle-time=0
repaint-window=16
mode=mirror
use-udev=true # 双屏需要启用udev

[output]
name=HDMI-A-1
mode=1920x1080
transform=rotate-270
scale=0.25

[output]
name=DSI-1
mode=1920x1080
transform=rotate-270
scale=0.25

[shell]
panel-scale=2
cursor-size=32
locking=false
startup-animation=none

[keyboard]
vt-switching=true

[libinput]
touchscreen_calibrator=true
enable-tap=true
natural-scroll=true

# 关键修正:将触摸设备明确绑定到HDMI输出
[device]
name=wch.cn USB2IIC_CTP_CONTROL
output=HDMI-A-1 # 明确指定到HDMI屏幕
rotation=normal # 根据实际方向调整

测试

开机

05738a923f64d53cb97c9657de1e19a5

运行3D测试

8cf877e4c6383eb2342faad0aeeee927

关键点

分辨率对齐: 镜像模式下,两个输出应使用相同的分辨率,否则Weston会以较低分辨率或缩放显示。本配置中统一使用1920x1080,确保显示内容一致。

触摸输入绑定: 在多屏环境中,触摸输入需要明确绑定到特定屏幕。通过output=HDMI-A-1配置,确保触摸操作仅影响HDMI显示,避免在镜像模式下产生混淆。

性能优化考虑: 镜像模式需要合成器渲染相同内容两次,对系统性能有一定影响。适当调整repaint-window参数可以平衡流畅度和系统负载。

双屏异显

双屏异显(扩展模式),适用于:

  • 多任务工作环境
  • 控制面板与数据显示分离
  • 复杂的专业应用界面

以下为配置

weston.ini配置

[core]
backend=drm-backend.so
require-input=true
require-outputs=true
idle-time=0
repaint-window=16
mode=extend # 关键:改为extend模式
use-udev=true

# HDMI屏幕(右侧)
[output]
name=HDMI-A-1
mode=1920x1080
transform=rotate-270
scale=0.25
x=200 # DSI在左侧,从DSI宽度开始
y=0

# DSI屏幕(左侧)
[output]
name=DSI-1
mode=480x800
transform=rotate-270
scale=0.25
x=0
y=0

[shell]
panel-scale=2
cursor-size=32
locking=false
startup-animation=none

[keyboard]
vt-switching=true

[libinput]
touchscreen_calibrator=true
enable-tap=true
natural-scroll=true

[device]
name=wch.cn USB2IIC_CTP_CONTROL
output=HDMI-A-1 # 触摸绑定到HDMI屏幕
rotation=normal

测试

启动时

6906d29c5eed9701b47a55cc1cd32cc6

需要设置环境变量,关闭镜像模式

#环境变量
export WESTON_DRM_MIRROR=0 # 关闭镜像模式
export WESTON_DRM_PREFER_EXTERNAL=0 # 不优先外部显示
export WESTON_DRM_SINGLE_HEAD=0 # 启用多head支持
pkill weston
weston &

2d0d04ea8fc8f56a40711aaaa0a6f790

启动后,系统识别两个独立显示器,桌面可以跨屏延伸。每个屏幕可以运行不同的应用程序,实现真正的多任务环境。

关键点

屏幕排列控制: Weston默认的屏幕排列可能不符合实际物理布局。可以通过weston.ini中的位置参数或启动后手动调整来优化。

跨屏窗口管理: 在扩展模式下,窗口可以在屏幕间移动。需要确保窗口管理器和应用程序支持多屏幕环境。

性能考量: 扩展模式对图形性能要求更高,特别是当两个屏幕分辨率差异较大时。需要根据硬件能力调整渲染设置。

总结

Weston多屏配置虽然有一定复杂性,但通过深入理解其配置原理和掌握关键参数,可以实现高度定制化的显示解决方案。无论是单屏独占、双屏同显还是双屏异显,都需要综合考虑硬件特性、应用需求和用户体验。

实际配置过程中,建议采取逐步测试的方法:先从基本配置开始,验证单个功能,然后逐步添加复杂特性。

DshanPI-A1 RK3576 GStreamer 播放 16 路视频与硬件加速

· 阅读需 9 分钟
世玉轩
100askTeam yuxuan.

演示视频

https://www.bilibili.com/video/BV1m34VziE2s

一、实验环境

类别具体配置
板卡DshanPI-A1
主控芯片RK3576
操作系统Armbian
桌面系统GNOME
窗口系统Wayland
GPU 驱动Panfrost

核心硬件加速单元说明

RK3576 芯片集成三类关键硬件加速单元,分别负责不同环节的视频处理:

  • VPU(视频处理单元):负责视频解码(如 H.264 硬解),核心元件 mppvideodec 调用此单元;

  • RGA(图像加速单元):负责图像缩放、格式转换(如 NV12→RGBA),可通过 mppvideodec 参数启用;

  • GPU(图形处理单元):负责视频渲染、多画面拼接(如 glvideomixer 拼接画面),由 Panfrost 驱动管理。

DshanPI-A1 RK3576 gmrender-resurrect B站投屏

· 阅读需 4 分钟
世玉轩
100askTeam yuxuan.

演示效果

https://www.bilibili.com/video/BV1Z646zhEBP

一、环境信息

类别具体配置
板卡DshanPI-A1
主控芯片RK3576
操作系统Armbian
桌面系统GNOME
窗口系统Wayland
GPU 驱动Panfrost

二、实现原理

  1. 核心组件gmrender-resurrect 是一款接收 DLNA 服务内容,并通过 GStreamer 播放的工具,可直接配置为 DLNA 客户端。

  2. 硬件加速基础:已提前实现 GStreamer 硬件加速播放视频,满足高清流解码需求。

  3. B 站投屏适配:B 站 DLNA 投屏时,会发送 FLV 封装的 H264 流(类似直播流),通过 gmrender-resurrect 可直接调用硬件加速播放。

DshanPI-A1 RK3576 Armbian 远程桌面

· 阅读需 2 分钟
世玉轩
100askTeam yuxuan.

背景与问题

  • 使用设备:DshanPI-A1,搭载 Armbian 系统,窗口系统为 Wayland,GPU 采用开源驱动。

  • 初始尝试:使用 NoMachine 实现远程桌面,但存在两个问题:

  1. 默认创建虚拟桌面,而非物理桌面;

  2. 对 Wayland 支持不佳,会以兼容模式开启 X11 桌面,导致 OpenGL 无法调用 GPU 加速。

DshanPi-A1 介绍

· 阅读需 2 分钟
世玉轩
100askTeam yuxuan.

DshanPi-A1 聚焦 AI 教育场景,以“单板计算机 + 专题项目(付费)”的一体化形态,为从入门到高阶的教学需求提供可持续演进的软硬件生态。 提供中高端性能 SBC 体验,包括 PCIe、USB3.0、双千兆、HDMI、HDMI-IN、DP等丰富的接口。