Ambarella¶
CVEDIA-RT supports CVFlow (CV2x) in the following chipsets: cv2
, cv22
, cv25
, cv28
, cv5
and cv52
.
Older chipsets, such as s3l
and s5l
are also supported but due deployment complexity we don't supply a public release, if you want to test in this platforms, contact us.
Requirements¶
Option 1: Using CVEDIA-RT Prebuilt binary¶
- CV2x EVK device flashed with SDK
3.0.x
with the following features enabled:- Arm Neon (enabled by default)
- Cavalry (enabled by default)
- EazyAI (enabled by default)
- OpenCV 3
- FFMPEG
- ~200mb disk space
CVEDIA-RT is compiled against GCC 10.2 using linaro-aarch64-2020.09-gcc10.2
toolchain. This is the default for Ambarela's SDK 3.0.x.
Option 2: Using CVEDIA-RT ubi image¶
- Connect to your Ambarella CV2x EVK using serial port
- Flash CVEDIA-RT UBI image using AmbaUSB tool
WARNING: This process will remove everything you have previously installed
Running¶
- Download CVEDIA-RT Amba redist package locally, you can use
wget
orcurl
. - Extract the tar.gz file.
- Call
./run.sh
- Open CVEDIA-RT using the Remote UI to interact with it.
run.sh
parameters¶
Options:¶
-h, --help: Shows help and exit
-L, --enable_log: Enable persistent logs
-Z, --dry_run: Do not run the application, just print the commands that would be executed
-c, --cavalry_bin <path>: Path to the cavalry firmware binary, defaults to: /lib/firmware/cavalry.bin
--vin_cfg <path>: Path to video input cfg lua script, usually found at /usr/local/bin/scripts/, when not set automatically guessed
-v, --version: Prints version and exit
Preflight setup options:¶
-s, --skip_setup: Skip the entire preflight setup (assumes the environment is already set up)
--run_rtsp_server: Start RTSP server
--skip_test_encode: Do not check test_encode binary / run it
--skip_cavalry: Skip cavalry kernel module and firmware setup
--skip_test_tunning: Do not check test_tunning binary / run it
--skip_sanity_check: Skip sanity check
Debug options:¶
-D, --debug: Enable debug mode
-G, --gst_debug <level>: GST debug level (default is 2) possible values are: 0 none, 1 error, 2 warning, 3 fixme, 4 info, 5 debug, 6 log, 7 trace, 9 memdump
--core_dump_path <path>: Path to core dump folder (default is /tmp)
--core_dump_pattern_file <path>: Path to core dump pattern file (default is /proc/sys/kernel/core_pattern)
Manual services setup¶
The run.sh
is able to setup all services automatically.
It may not work properly in devices we haven't tested. You can manully setup the device for inference following this guide, then call ./run.sh -s
to skip it's setup process.
Enable Cavalry Kernel module¶
Before trying any model you need to enable Cavalry kernel module, this must be done once per boot:
modprobe cavalry
cavalry_load -f /lib/firmware/cavalry.bin -r
To confirm modules been loaded you can:
lsmod | grep cavalry
Wake up encoder¶
You need to set wake up the encoder, otherwise image acquisition won't work:
test_tunning -a &
Finally, you should run HDMI preview:
test_encode -i 0 -V 480p -f 30 --hdmi
WARINING: This last section highly depends on what camera sensor you're using, please refer to your Ambarella's EVK Getting Started Guide for mode information.
Enable USB host¶
CVEDIA-RT requires around 100MB of space to run, if you don't have enough temporary storage, you may want to enable usb so you can plugin a storage device for persistent storage.
To do that, please refer to Ambarella's EVK Getting Started Guide for mode information. You will need to switch jumpers on your board to enable usb storage, it will only work with usb 2.0.
You will also need to load some kernel modules, here's a basic startup / mount sequence:
echo host > /proc/ambarella/usbphy0
cat /proc/ambarella/usbphy0
modprobe usbcore
modprobe ehci-hcd
modprobe ehci_ambarella
mount -t ext2 /dev/sda1 /storage/sda1