-
Notifications
You must be signed in to change notification settings - Fork 7
Home
kalous12 edited this page Jan 5, 2024
·
16 revisions
视频地址:【[鲁班猫氛围赛第二期] 基于rk356x和rk3588的debian12系统演示】 https://www.bilibili.com/video/BV14j411n7vV/?share_source=copy_web&vd_source=542a2a5636c4dc8ecedd9cd569376bff
- 野火鲁班猫官方推荐的固件是 debian10 和 debian11 , 目前对于debian12来说有点老旧,因此,选用了debian12作为的根文件系统。
- rk356x对于的内核版本是4.19.232 比较老旧,目前rk正在维护的内核是5.10 和 6.1 为了兼顾稳定,所以选用了5.10作为系统的内核。
- 由于鲁班猫烧录镜像后会有第一次启动的过程,这个过程被打断了,系统就要重新烧录才能正常使用了,如果说供电不足的话也会导致第一启动,为了解决这个问题,我在uboot适配了多板卡公用一个系统的功能,在uboot启动时自动根据设备id的不同选择对应的设备树,而且修改起来非常简单,只需要修改boot分区中的一个boot script脚本即可
- 鲁班猫官方推荐的固件中,并不带有支持rkmpp的ffmpeg,使用ffmpeg时无法使用他的硬件加速功能,所以,移植了一个支持rkmpp的ffmpeg
- 关于gpu部分,野火官方用的是libmali,个人觉得libmali不是很喜欢,然后新系统中使用的是开源的mesa,rk356x和rk3588上面使用的是不一样的,但是也没有影响他们的正常使用。
- 关于系统部分的话,boot目录使用fat格式,为的是在sd卡烧录中可以修改sd卡中的内容,从而修改自己的更改
- 猫0n的网口还存在问题,设备树还待调整,0n的朋友要等等才能用
- 系统构建还需要调整,一开始是以lubancat2为目的做的,编译流程还需要优化
- 红外遥控目前还没法使用,设备树存在点问题,所以先把该功能屏蔽了
- 音频输出目前还有点问题,hdmi暂时没办法输出声音,耳机接口需要使用alsamixer配置才能正常输出音频
- u-boot启动加载图片的功能暂时没法实现,后续会研究添加进去
- chroium浏览器目前还没支持ffmpeg的插件,后续会修改chroium为其添加ffmpeg插件,使浏览器播放视频更顺畅
链接:https://pan.baidu.com/s/1qQ61hmliO9hR8lik8gMROw?pwd=8888 提取码:8888
-
镜像
: 存放着鲁班猫运行所需要的镜像 -
工具
: 存放有一些软件用来给鲁班猫烧录使用
-
balenaEtcher-Setup-1.18.4.exe
: sd卡烧录镜像的工具 -
DriverAssitant v5.11.zip
: 瑞芯微usb驱动 -
win32diskimager-1.0.0-installexe
: sd卡烧录镜像的工具 -
镜像刷机方法.txt
: emmc和sd卡的烧录方法,抄rk3588s ubuntu22.04的 -
RKDevTool v3.15 for window.zip
: emmc烧录镜像工具· -
rufus-4.3.exe
: sd卡烧录镜像的工具(推荐使用)
- 镜像中会有日期,每个日期对应着不同时间发表的
-
rk3588
: 给鲁班猫4用的 -
rk356x
: 给带有rk3566,rk3568的板子用的
-
server
: 该镜像为不带桌面的镜像 -
desktop
: 该镜像为带桌面的镜像
- 需要准备一张大于8G的内存卡
- sd卡镜像烧录工具(推荐 rufus, balenaEtcher, Win32DiskImager)
- 镜像(rk356x 和 rk3588的镜像是不一样的)
我这边使用rufus烧录工具 和 rk356x镜像作为示范
- 先把镜像下载
- 解压镜像
- 打开rufus
- 选择镜像
- 下载镜像
- 烧录成功
烧录成功后就可以看到下面的情况(sd卡被格式化成两个分区,分区1是BOOT分区,能正常打开,分区2是文件系统分区不能直接打开)
- boot分区内容物如下
- 需要准备一个大于或等于8G的emmc的鲁班猫板卡
- 瑞芯微的驱动和瑞芯微的烧录工具
- 镜像(rk356x 和 rk3588的镜像是不一样的)
操作方法
- 先把镜像下载
- 解压镜像
- 打开
DriverAssitant_v5.11.zip
软件,先卸载驱动
- 然后重新安装驱动
- 让板子进入maskrom模式 (如果不懂,去鲁班猫快速使用手册中烧录镜像的章节中学习)
- 下载并解压
RKDevTool_v3.15_for_window.zip
- 选取对应的文件(miniloader)
- 选取镜像
- 点击
执行
进行烧录
如果烧录不成功可以重复尝试
root用户
用户名:root
密码:root
cat用户
用户名:cat
密码:temppwd
- 锁屏解锁演示
- 桌面端镜像会显示出出一个蓝色的框,该框为用户登录的框
- 点击之后右下角会有个齿轮的图案
- 齿轮是用来切换不同的桌面端以及不同的渲染器
-
GNOME
: 为最新的gnome桌面风格 -
GNOME Classic
: 为经典版的gnome桌面风格 -
on Xorg
: 为使用X11渲染桌面,不选是使用wayland作为渲染桌面
输入密码temppwd
,即可进入桌面,如图下
- 进入设置查看系统信息
可以看到下面的信息
- 设备名称为
lubancat
- 内存大小为
1.9GB
- 图形渲染器为
Mali-G52 r1(Panfrost)/ Software Rendering / Mali-G52 r1(Panfrost)
其中包括了硬件GPU渲染以及CPU渲染 - 硬盘大小为
31.3 GB
- 系统名称为
Debian GNU/Linux12(bookworm)
,系统架构是64位
的 - gonme桌面的版本是
43.9
- 窗口渲染系统是
Wayland
- 浏览器功能演示
- 可以看到使用chroium时,内存和cpu的占用率会比较高,因此使用浏览器时,推荐使用2GB或者2GB内存以上的板子进行操作
- ffmpeg
root@lubancat:~# ffmpeg -codecs | grep rkmpp
ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12 (Debian 12.2.0-14)
DEV.L. av1 Alliance for Open Media AV1 (decoders: av1_rkmpp_decoder libdav1d libaom-av1 av1 ) (encoders: libaom-av1 libsvtav1 )
DEV.L. h263 H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2 (decoders: h263_rkmpp_decoder h263 h263_v4l2m2m ) (encoders: h263 h263_v4l2m2m )
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264_rkmpp_decoder h264 h264_v4l2m2m ) (encoders: h264_rkmpp_encoder libx264 libx264rgb h264_v4l2m2m h264_vaapi )
DEV.L. hevc H.265 / HEVC (High Efficiency Video Coding) (decoders: hevc_rkmpp_decoder hevc hevc_v4l2m2m ) (encoders: hevc_rkmpp_encoder libx265 hevc_v4l2m2m hevc_vaapi )
DEV.L. mpeg1video MPEG-1 video (decoders: mpeg1_rkmpp_decoder mpeg1video mpeg1_v4l2m2m )
DEV.L. mpeg2video MPEG-2 video (decoders: mpeg2_rkmpp_decoder mpeg2video mpegvideo mpeg2_v4l2m2m ) (encoders: mpeg2video mpeg2_vaapi )
DEV.L. mpeg4 MPEG-4 part 2 (decoders: mpeg4_rkmpp_decoder mpeg4 mpeg4_v4l2m2m ) (encoders: mpeg4 libxvid mpeg4_v4l2m2m )
DEV.L. vp8 On2 VP8 (decoders: vp8_rkmpp_decoder vp8 vp8_v4l2m2m libvpx ) (encoders: vp8_rkmpp_encoder libvpx vp8_v4l2m2m vp8_vaapi )
DEV.L. vp9 Google VP9 (decoders: vp9_rkmpp_decoder vp9 vp9_v4l2m2m libvpx-vp9 ) (encoders: libvpx-vp9 vp9_vaapi )
-
可以看到移植的这个ffmpeg是具有rkmpp的硬件加速功能,可以实现对视频的编解码
-
除此之外还具有ffmpeg的转码能力
-
当前存在一个3840x2160@25fps h265格式的视频
root@lubancat:/home/cat# ffprobe 4k_25fps_h265.mkv
ffprobe version 6.0 Copyright (c) 2007-2023 the FFmpeg developers
built with gcc 12 (Debian 12.2.0-14)
Metadata:
MINOR_VERSION : 512
COMPATIBLE_BRANDS: isomiso2avc1mp41
MAJOR_BRAND : isom
ENCODER : Lavf60.4.100
Duration: 00:00:20.40, start: 0.000000, bitrate: 13579 kb/s
Stream #0:0: Video: hevc (Main), yuv420p(tv, bt709, progressive), 3840x2160 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 1k tbn (default)
Metadata:
HANDLER_NAME : VideoHandler
VENDOR_ID : [0][0][0][0]
ENCODER : Lavc60.6.101 hevc_qsv
DURATION : 00:00:20.400000000
[hevc_rkmpp_decoder @ 0xaaaab3354960] Picture format is yuv420p.
- 使用下列命令进行对视频的编解码
cat@lubancat:~$ ffmpeg -i 4k_25fps_h265.mkv -c:v h264 4k_25fps_h264.mkv
ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12 (Debian 12.2.0-14)
Input #0, matroska,webm, from '4k_25fps_h265.mkv':
Metadata:
MINOR_VERSION : 512
COMPATIBLE_BRANDS: isomiso2avc1mp41
MAJOR_BRAND : isom
ENCODER : Lavf60.4.100
Duration: 00:00:20.40, start: 0.000000, bitrate: 13579 kb/s
Stream #0:0: Video: hevc (Main), yuv420p(tv, bt709, progressive), 3840x2160 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 1k tbn (default)
Metadata:
HANDLER_NAME : VideoHandler
VENDOR_ID : [0][0][0][0]
ENCODER : Lavc60.6.101 hevc_qsv
DURATION : 00:00:20.400000000
[hevc_rkmpp_decoder @ 0xaaaac58dd480] Picture format is nv12.
Stream mapping:
Stream #0:0 -> #0:0 (hevc (hevc_rkmpp_decoder) -> h264 (h264_rkmpp_encoder))
Press [q] to stop, [?] for help
[hevc_rkmpp_decoder @ 0xaaaac58dd480] Decoder noticed an info change
[h264_rkmpp_encoder @ 0xaaaac58de710] Picture format is nv12.
[h264_rkmpp_encoder @ 0xaaaac58de710] Rate Control mode is set to CBR
[h264_rkmpp_encoder @ 0xaaaac58de710] Bitrate Target/Min/Max is set to 6000000/5625000/6375000
[h264_rkmpp_encoder @ 0xaaaac58de710] Profile is set to HIGH
[h264_rkmpp_encoder @ 0xaaaac58de710] 8x8 Transform is enabled
[h264_rkmpp_encoder @ 0xaaaac58de710] Level is set to 0
[h264_rkmpp_encoder @ 0xaaaac58de710] Coder is set to CABAC
[h264_rkmpp_encoder @ 0xaaaac58de710] Quality Min/Max is set to 50%(Quant=30) / 100%(Quant=10)
Output #0, matroska, to '4k_25fps_h264.mkv':
Metadata:
MINOR_VERSION : 512
COMPATIBLE_BRANDS: isomiso2avc1mp41
MAJOR_BRAND : isom
encoder : Lavf60.3.100
Stream #0:0: Video: h264 (High) (H264 / 0x34363248), nv12(tv, bt709, progressive), 3840x2160, q=2-31, 6000 kb/s, 25 fps, 1k tbn (default)
Metadata:
HANDLER_NAME : VideoHandler
VENDOR_ID : [0][0][0][0]
DURATION : 00:00:20.400000000
encoder : Lavc60.3.100 h264_rkmpp_encoder
[h264_rkmpp_encoder @ 0xaaaac58de710] Reconfigured with w=3840, h=2160, format=nv12.
frame= 509 fps= 18 q=-0.0 Lsize= 19461kB time=00:00:20.32 bitrate=7845.6kbits/s speed=0.709x
video:19456kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.026206%
- 最终生成的文件
cat@lubancat:~$ ffprobe 4k_25fps_h264.mkv
ffprobe version 6.0 Copyright (c) 2007-2023 the FFmpeg developers
built with gcc 12 (Debian 12.2.0-14)
Input #0, matroska,webm, from '4k_25fps_h264.mkv':
Metadata:
MAJOR_BRAND : isom
MINOR_VERSION : 512
COMPATIBLE_BRANDS: isomiso2avc1mp41
ENCODER : Lavf60.3.100
Duration: 00:00:20.36, start: 0.000000, bitrate: 7830 kb/s
Stream #0:0: Video: h264 (High), yuv420p(tv, bt709, progressive), 3840x2160, 25 fps, 25 tbr, 1k tbn (default)
Metadata:
HANDLER_NAME : VideoHandler
VENDOR_ID : [0][0][0][0]
ENCODER : Lavc60.3.100 h264_rkmpp_encoder
DURATION : 00:00:20.360000000
[h264_rkmpp_decoder @ 0xaaab1ea24280] Picture format is yuv420p.
- DDnet游戏展示
- 目前知道一款为ddnet的游戏,该游戏需要gpu驱动才能流畅游玩,如果使用纯cpu渲染是会十分的卡顿的
- 可以看视频获得更详细的说明
=======================================================
glmark2 2023.01
=======================================================
OpenGL Information
GL_VENDOR: Panfrost
GL_RENDERER: Mali-G52 r1 (Panfrost)
GL_VERSION: 3.1 Mesa 22.3.6
Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
Surface Size: 800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 329 FrameTime: 3.042 ms
[build] use-vbo=true: FPS: 431 FrameTime: 2.322 ms
[texture] texture-filter=nearest: FPS: 824 FrameTime: 1.215 ms
[texture] texture-filter=linear: FPS: 827 FrameTime: 1.210 ms
[texture] texture-filter=mipmap: FPS: 636 FrameTime: 1.573 ms
[shading] shading=gouraud: FPS: 286 FrameTime: 3.497 ms
[shading] shading=blinn-phong-inf: FPS: 287 FrameTime: 3.485 ms
[shading] shading=phong: FPS: 280 FrameTime: 3.575 ms
[shading] shading=cel: FPS: 281 FrameTime: 3.567 ms
[bump] bump-render=high-poly: FPS: 102 FrameTime: 9.830 ms
[bump] bump-render=normals: FPS: 688 FrameTime: 1.454 ms
[bump] bump-render=height: FPS: 690 FrameTime: 1.451 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 538 FrameTime: 1.860 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 190 FrameTime: 5.264 ms
[pulsar] light=false:quads=5:texture=false: FPS: 547 FrameTime: 1.831 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 185 FrameTime: 5.414 ms
[desktop] effect=shadow:windows=4: FPS: 396 FrameTime: 2.526 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 46 FrameTime: 21.897 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 46 FrameTime: 21.820 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 53 FrameTime: 19.060 ms
[ideas] speed=duration: FPS: 244 FrameTime: 4.103 ms
[jellyfish] <default>: FPS: 353 FrameTime: 2.833 ms
[terrain] <default>: FPS: 24 FrameTime: 42.108 ms
[shadow] <default>: FPS: 191 FrameTime: 5.241 ms
[refract] <default>: FPS: 26 FrameTime: 39.653 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 640 FrameTime: 1.564 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 625 FrameTime: 1.602 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 620 FrameTime: 1.615 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 623 FrameTime: 1.606 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 560 FrameTime: 1.786 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 652 FrameTime: 1.535 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 463 FrameTime: 2.164 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 456 FrameTime: 2.195 ms
=======================================================
glmark2 Score: 397
=======================================================
点击下面链接跳转
有点忙,如果有朋友有空的话,可以与我一起去完善这个系统