Firefly Debian Manual¶
Firmware Download¶
Download the Debian10
firmware from the Resource Download page.
Compile Debian firmware¶
Configuration before compilation
./build.sh aio-rv1126-jd4-BE-45-debian.mk
Fully automatic compilation Download the root file system: Debian10 root file system, put it under the SDK path
7z x debian10_rootfs_2022_12_22.7z
mkdir ubuntu_rootfs
mv rootfs.img ubuntu_rootfs/rootfs.img
start compiling
./build.sh
The generated full firmware is saved to the rockdev/pack/
directory.
System introduction¶
Packages¶
The following software packages have been default installed
to the Debian system. When using apt install
to install the software, be careful not to overwrite
the system software packages.
Gstreamer
libv4l
Video hardware codec support¶
The VPU
integrated in the RV1126 has excellent video codec capabilities. MPP
is a set of video codec APIs provided by Rockchip for the VPU
, and is based on mpp
. Rockchip provides a set of codec plugins for gstreamer
. Users can implement video codec applications based on gstreamer
according to their own needs, or directly call mpp
to achieve hardware codec acceleration.
Through the following two methods, verify and develop video codec-related applications.
Gstreamer
By default
gstreamer1.0
is installed
# Test hardware H264 decoding.
gst-launch-1.0 filesrc location="/home/firefly/test.mp4" ! qtdemux ! h264parse ! mppvideodec ! kmssink
# Test hardware H264 encoding.
gst-launch-1.0 filesrc location=/home/firefly/video-640x360.yuv ! rawvideoparse use-sink-caps=false format=GST_VIDEO_FORMAT_I420 width=640 height=360 ! video/x-raw,width=640,height=360 ! mpph264enc ! queue ! h264parse ! qtmux ! filesink location=/home/firefly/yuv2h264.mp4
Users can refer to these two scripts to configure their own gstreamer
applications.
MPP
Under Debian system, mpp related deb packages have been installed in the system.
For more information, please refer to the relevant documents under linux-sdk/docs/Linux/Multimedia
Source code compilation¶
RKNN_SSD_DEMO¶
NPU is already installed in Debian system. Test the NPU as follows: The test demo is
rknn_ssd_demo
. The source path is/home/firefly/rknn_ssd_demo
. The following operations are performed on theRV1126
side:
# Enter the rknn_ssd_demo directory
cd /home/firefly/rknn_ssd_demo
# compile
cmake ./
make
# execute program
sudo ./rknn_ssd_demo model/ssd_inception_v2_rv1109_rv1126.rknn model/road.bmp
# The effect is as follows:
root@firefly:/home/firefly/rknn_ssd_demo# sudo ./rknn_ssd_demo model/ssd_inception_v2_rv1109_rv1126.rknn model/road.bmp
Loading model ...
model input num: 1, output num: 2
input tensors:
index=0 name= n_dims=4 dims=[1 300 300 3] n_elems=270000 size=270000 fmt=0 type=3 qnt_type=2 fl=127 zp=127 scale=0.007843
output tensors:
index=0 name= n_dims=4 dims=[1 1917 1 4] n_elems=7668 size=7668 fmt=0 type=3 qnt_type=2 fl=-76 zp=180 scale=0.089482
index=1 name= n_dims=3 dims=[0 1 1917 91] n_elems=174447 size=174447 fmt=0 type=3 qnt_type=2 fl=-66 zp=190 scale=0.137463
rknn_run
loadLabelName
ssd - loadLabelName ./model/coco_labels_list.txt
loadBoxPriors
person @ (13 125 58 212) 0.984076
bicycle @ (171 165 278 234) 0.972723
person @ (110 119 152 197) 0.968828
person @ (206 113 256 216) 0.964399
car @ (146 133 217 170) 0.959365
person @ (83 134 92 158) 0.634101
person @ (49 133 58 156) 0.601661
person @ (96 134 105 162) 0.465688
RKMedia¶
RKMedia has been adapted and built into Debian system. The
librtsp
library is not supported by default.The following
4
demos are not supported by default, so comment the compilation configuration of the following4
demos inrkmedia/example/CMakeLists.txt
rkmedia_vi_venc_rtsp_test
rkmedia_rga_crop_venc_test
rkmedia_vi_rockx_venc_rtsp_test
rkmedia_vi_rknn_venc_rtsp_test
The source path is
/home/firefly/rkmedia
. The following operations are performed on theRV1126
side:
# enter the rkmedia directory
cd /home/firefly/rkmedia
# cmake configuration
cmake ./ -DCMAKE_COLOR_MAKEFILE=OFF -DBUILD_DOC=OFF -DBUILD_DOCS=OFF -DBUILD_EXAMPLE=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TEST=OFF -DBUILD_TESTS=OFF -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON -DWARNINGS_AS_ERRORS=ON -DUSE_RKAIQ=ON -DRKMPP=ON -DRKMPP_LIB_NAME=rockchip_mpp -DRKMPP_ENCODER=ON -DRKMPP_ENCODER_OSD=ON -DRKMPP_DECODER=ON -DAUDIO_ENCODER=ON -DAUDIO_DECODER=ON -DALSA_PLAYBACK=ON -DALSA_CAPTURE=ON -DAUDIO_ALGORITHM=ON -DV4L2_CAPTURE=ON -DRKRGA=ON -DRKGUARD=ON -DRKNN=ON -DROCKFACE=OFF -DFACE_RECOGNIZE=OFF -DROCKX=ON -DDRM_DISPLAY=ON -DLIVE555=ON -DLIVE555_SERVER=ON -DLIVE555_SERVER_H264=ON -DLIVE555_SERVER_H265=ON -DMOVE_DETECTION=ON -DOCCLUSION_DETECTION=ON -DCOMPILES_EXAMPLES=ON -DCONFIG_OEM=1 -DCOMPILES_MINIMEDIA=ON -DRKAUDIO=ON
# compile
make -j4
# Install
make install
FIREFLY_FFMPEG_RTSP_DEMO¶
Since Debian10 does not support
librtsp.a
library. Here, ffmpeg streaming is used instead of rkmedia streaming interface for data streaming. The source directory is in/home/firefly/firefly_ffmpeg_rtsp_demo
.
# Switch to the firefly_ffmpeg_rtsp_demo directory
cd /home/firefly/firefly_ffmpeg_rtsp_demo
# compile
make
# Running the server in the background
/usr/share/rtsp_server/armhf/EasyDarwin-linux-8.1.0-21102107/easydarwin &
# run
./firefly_ffmpeg_rtsp_demo_test rtsp://xxx.xxx.xxx.xxx # Please replace your camera url address, Default H264 1080p 25fps
PC preview streaming screen
vlc rtsp://<1126 ip address>:8554
PC browser enters the server interface
http://<1126 ip address>:10008
FIREFLY_RKMEDIA_DEMO¶
firefly_rkmedia_demo has been adapted and built into Debian system. The
librtsp
library is not supported by default. Note: The Debian system does not support the rtsp streaming method of the following demos. For development needs, please modify the rtsp streaming method according to the source code/home/firefly/firefly_ffmpeg_rtsp_demo/firefly_ffmpeg_rtsp_demo_test.cc
.
rkmedia_rtspget_vdec_venc_rtsp_test
rkmedia_vdec_venc_rtsp_test
rkmedia_vi_rknn_venc_rtsp_test
rkmedia_vi_venc_rtsp_test
The source path is
/home/firefly/firefly_rkmedia_demo
. The following operations are performed on theRV1126
side:
# Enter the firefly_rkmedia_demo directory
cd /home/firefly/firefly_rkmedia_demo
# cmake configuration
cmake ./ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DUSE_RKAIQ=ON -DDRM_DISPLAY=ON -DRKRGA=ON -DRKMPP=ON -DRKMPP_LIB_NAME=rockchip_mpp -DV4L2_CAPTURE=ON
# compile
make -j4
# Install
make install
Use of ArcSoft face algorithm¶
If you want to use the ArcSoft face recognition algorithm, you need to specify the ArcSoft algorithm library and librknn_api.so library file to compile. Please refer to the following /home/firefly/firefly_rkmedia_demo/CMakeLists.txt
to configure the ArcSoft algorithm link library.
set(ARCSOFT_LIBS
/usr/lib/arm-linux-gnueabihf/arcsoft/libarcsoft_face.so
/usr/lib/arm-linux-gnueabihf/arcsoft/libarcsoft_face_engine.so
/usr/lib/arm-linux-gnueabihf/arcsoft/libgomp.so.1
/usr/lib/arm-linux-gnueabihf/arcsoft/librknn_api.so
)
Partition introduction¶
If you customize the Debian10 system yourself, you can upgrade after reading this chapter and modifying the partition.
Modify the partition table parameter.txt
under the firmware directory, and modify the rootfs
partition size according to the requirements. The default size is 3G. PS: Because there is no running application under Debian10, the media
partition is not needed, so I deleted it.
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00010000@0x00008000(boot),0x00010000@0x00018000(recovery),0x00010000@0x00028000(backup),0x00600000@0x00038000(rootfs),0x00060000@0x00638000(oem),-@0x00698000(userdata:grow)
Partition table format: partition size@location address (partition name). The -
at the last -@location address (partition name: grow) means to expand the remaining memory size of the partition, which can only be placed at the end of CMDLINE
.
The size and address are both in units of block (1 block = 512byte)
, and the following formula can be used to convert to MByte:
MByte = N * 512 / 1024 / 1024
For example, let’s look at the rootfs
line:
The partition size is 0x00600000, converted to decimal is
6291456 blocks * 512 bytes per block / 1024 / 1024 = 3072 MByte
So the rootfs partition size is 3072M.
Special attention:
Partition size + address = address of the next partition
.
System export¶
Use the system’s built-in
ff_export_rootfs
tool to export the system that has been customized on the board. Please use ext4 format for export. How to use it:
root@firefly:/# ff_export_rootfs
ff_export_rootfs </path/to/store> [-t <ext4|btrfs>]
Note: If the internal memory of the system is not enough to export the system, there are two solutions.
If the device supports access to external storage devices such as USB flash drives or SD cards, set the export path to the directory mounted on the corresponding external storage device.
If the device does not support the connection of external storage devices such as USB flash drives or SD cards, but it supports the connection of network cables. Follow these steps to export:
Prepare a Linux PC device, and ensure that the PC and RV1126 device are on the same network segment. Make sure the PC and RV1126 can ping each other.
Use the
sshfs
tool to mount the storage of the external Linux PC to the RV1126 device directory. xxx represents the user name of the Linux PC, and XXX.XXX.XXX.XXX represents the IP address of the Linux PC. /save-img-path is the path to the file system where PPC stores exports. /pc-mount-path is the directory actually mounted on RV1126.
sshfs xxx@XXX.XXX.XXX /pc-mount-path/
ff_export_rootfs /pc-mount-path -t ext4
Restore to Factory Settings¶
Use recovery tool to restore factory settings. Please back up important data before restoring to factory settings. The command is as follows:
recovery reset