15. FAQs

15.1. Processor SDK AM69A vs Processor SDK J784S4

It is important to know the differences between AM69A Starter Kit (SK), J784S4 EVM, and the accompanying Processor SDK.

While the SoC is common between AM69A SK and J784S4 EVM, the board design and peripherals are very different. For example both eDP and HDMI port is directly available on AM69A SK where as only eDP port is available on J784S4 EVM and it requires add-on infotainment card for HDMI. Similarly there are differences related to other available peripherals and board properties starting from power supply. Kindly refer to the respective board user-guide to know the differences better.

The SDKs are not compatible either. The Processor SDK AM69A works only on the AM69A SK and the Processor SDK J784S4 works only on the J784S4 EVM. There are differences in software driver availability between both the SDK. The build configuration between them is very different. For example peripheral access like GPIO is enabled using Linux on Processor SDK AM69A whereas the same is made available from RTOS core in Processor SDK J784S4 and so on.

The key differences are highlighted here but not limited to below list.

Component

Processor SDK AM69A

Processor SDK J784S4

AM69A-SK

Supported

Not Supported

J784S4-EVM

Not Supported

Supported

Capture Driver

Linux Device Driver

RTOS Driver

Display Driver

Linux Device Driver

RTOS Driver

Video Codecs

Linux Device Driver

Linux Device Driver

VPAC Driver

RTOS Driver

RTOS Driver

DMPAC Driver

RTOS Driver

RTOS Driver

ETHFW

Not Supported

Supported

Peripherals

Linux Device Driver

RTOS Driver

For more information please refer to AM69A Build Sheet

15.2. Getting Error when trying to capture from multiple USB cameras simultaneously

This is a common issue faced in the industry with many USB cameras. You may get errors like Failed to allocate required memory. when tying to capture simultaneously from more than one usb cameras.

The root cause for this issue is that most of the USB cameras requests for more BW than actually required. If the use case is to capture only from 2 USB cameras , it can be done by connecting one of them to USB type-C port since it is internally connected to a separate instance of USB controller. But if the use case is to capture from more than 2 cameras, you need to modify the UVC driver to override the BW allocation.

The root cause and work around is explained in detail in this blog Multiple UVC cameras on linux

To apply the work around to our SDK, use below steps

  1. Download and install Processor SDK Linux Processor SDK Linux

  2. Get the patch to add bandwidth_cap parameter to uvcvideo kernel module uvcvideo patch

  3. Apply the patch to kernel source in Processor SDK Linux Install path. Please refer to PSDK building kernel

  4. Compile only uvcvideo module using below command

    make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- j784s4_evm_a72_defconfig
    make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- ./drivers/media/usb/uvc/uvcvideo.ko
    
  5. Copy ./drivers/media/usb/uvc/uvcvideo.ko to sk

  6. Remove uvcvideo module and install modified version using below commands

    rmmmod uvcvideo
    insmod uvcvideo.ko
    
  7. Set the desired BW cap as shown below

    echo 1200 >  /sys/module/uvcvideo/parameters/bandwidth_cap
    

Note

The unit of BW here is Bytes/125us, you can estimate the approximate BW requirement by multiplying fps with size/frame