Skip to content

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

  1. Connect to your Ambarella CV2x EVK using serial port
  2. Flash CVEDIA-RT UBI image using AmbaUSB tool

WARNING: This process will remove everything you have previously installed

Running

  1. Download CVEDIA-RT Amba redist package locally, you can use wget or curl.
  2. Extract the tar.gz file.
  3. Call ./run.sh
  4. 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