背景
因为我本人是做音视频处理基础技术的,所以通常拿到一块板子后首先想到的是尝试把视频能力用起来,例如视频的编码,视频的解码,看一看编码的画质如何,解码性能如何,然后再进行下一步。
既然要尝试使用,那么首先就考虑装一个操作系统吧,第一件事是参考说明文档,去下载一个Fedora,然后刷到sd卡里面。
尝试使用
根据说明文档看,我下载的Fedora不可以直接刷到sd里面,因为他的格式是这样的:
Fedora-riscv64-jh7100-developer-xfce-Rawhide-20211226-214100.n.0-sda.raw.zst
要先安装一下zstd,然后
zstd Fedora-riscv64-jh7100-developer-xfce-Rawhide-20211226-214100.n.0-sda.raw.zst -o Fedora-riscv64-jh7100-developer-xfce-Rawhide-20211226-214100.n.0-sda.raw
然后用dd将Fedora-riscv64-jh7100-developer-xfce-Rawhide-20211226-214100.n.0-sda.raw写到SD卡即可
插入sd卡以后,用USB type-c接口的电源线插到板子上上电,插入HDMI链接到显示器,稍等一会就能够看到Fedora的启动界面,登录提示页面,按照手册中写的用户名密码输入后即可进入系统。
看一下系统的cpu信息
[riscv@fedora-starfive ~]$ cat //proc/cpuinfo
processor : 0
hart : 1
isa : rv64imafdc
mmu : sv39
uarch : sifive,u74-mc
processor : 1
hart : 0
isa : rv64imafdc
mmu : sv39
uarch : sifive,u74-mc```
还是个双核。看板子的介绍是支持视频编码的
尝试使用FFmpeg自动识别环境
但是手册里面并未说明该如何跑起来,于是我尝试用ffmpeg来跑一下。
[riscv@fedora-starfive ~]$ git clone git://source.ffmpeg.org/ffmpeg.git
正克隆到 'ffmpeg'...
remote: Enumerating objects: 666444, done.
remote: Counting objects: 100% (666444/666444), done.
remote: Compressing objects: 100% (130415/130415), done.
remote: Total 666444 (delta 539474), reused 661607 (delta 534726)
接收对象中: 100% (666444/666444), 131.55 MiB | 58.00 KiB/s, 完成.
处理 delta 中: 100% (539474/539474), 完成.
正在更新文件: 100% (7781/7781), 完成.
[riscv@fedora-starfive ~]$ cd ffmpeg/
[riscv@fedora-starfive ffmpeg]$ ls
Changelog CONTRIBUTING.md COPYING.LGPLv2.1 doc INSTALL.md libavfilter libpostproc LICENSE.md presets tests
compat COPYING.GPLv2 COPYING.LGPLv3 ffbuild libavcodec libavformat libswresample MAINTAINERS README.md tools
configure COPYING.GPLv3 CREDITS fftools libavdevice libavutil libswscale Makefile RELEASE
[riscv@fedora-starfive ffmpeg]$ cd ..
[riscv@fedora-starfive ~]$ mkdir build_ffmpeg
[riscv@fedora-starfive ~]$ cd build_ffmpeg/
[riscv@fedora-starfive build_ffmpeg]$ ../ffmpeg/configure --disable-everything --enable-ffmpeg --enable-decoder=h264,mpeg4 --enable-hwaccels
install prefix /usr/local
source path src
C compiler gcc
C library glibc
ARCH riscv (generic)
big-endian no
runtime cpu detection yes
debug symbols yes
strip symbols yes
optimize for size no
optimizations yes
static yes
shared no
postprocessing support no
network support yes
threading support pthreads
safe bitstream reader yes
texi2html enabled no
perl enabled yes
pod2man enabled yes
makeinfo enabled yes
makeinfo supports HTML yes
xmllint enabled yes
External libraries:
alsa iconv libxcb_shape libxcb_xfixes zlib
bzlib libxcb libxcb_shm lzma
External libraries providing hardware acceleration:
cuda_llvm v4l2_m2m
Libraries:
avcodec avdevice avfilter avformat avutil swresample swscale
Programs:
ffmpeg ffprobe
Enabled decoders:
h263 h264 mpeg4
Enabled encoders:
Enabled hwaccels:
Enabled parsers:
h263 mpeg4video
Enabled demuxers:
Enabled muxers:
Enabled protocols:
Enabled filters:
aformat atrim hflip transpose vflip
anull format null trim
Enabled bsfs:
Enabled indevs:
Enabled outdevs:
License: LGPL version 2.1 or later
config_components.h is unchanged
libavutil/avconfig.h is unchanged
libavfilter/filter_list.c is unchanged
libavcodec/codec_list.c is unchanged
libavcodec/parser_list.c is unchanged
libavcodec/bsf_list.c is unchanged
libavformat/demuxer_list.c is unchanged
libavformat/muxer_list.c is unchanged
libavdevice/indev_list.c is unchanged
libavdevice/outdev_list.c is unchanged
libavformat/protocol_list.c is unchanged
ffbuild/config.sh is unchanged
后来经过咨询技术支持老师,给的反馈是需要自己重新buildroot,需要加载OMX相应的模块才能开启硬件codec模块。也就是说文档里面提到的支持的音视频处理相关的功能默认是不支持的,需要自己重新DIY一下,starfive官方提供的Fedora默认是用不起来的。
思考与总结:
**既然文档里面说支持了,至少BSP应该是需要直接提供出来的,而不是让用户DIY
既然starfive的提供的开发板里面元器件都是固定的,提供的基础能力都是固定的,扩展接口也是固定的,完全可以提供一个开箱即用的操作系统而不是让用户拿到板子后再去琢磨怎么build一下支持上**
参考一下树莓派的做法,最起码的开箱即用