SPRADH2A February 2024 – November 2024 AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM62P , AM62P-Q1 , DS90UB953A-Q1 , DS90UB960-Q1 , TDES960 , TSER953
The V3Link board is supported in the Processor SDK Linux for AM62A. To enable 4x IMX219 cameras, use the following dtbo files in the overlay at /run/media/BOOT-mmcblk1p1/uEnv.txt:
k3-am62x-sk-csi2-v3link-fusion.dtbo
k3-v3link-imx219-0-0.dtbo
k3-v3link-imx219-0-1.dtbo
k3-v3link-imx219-0-2.dtbo
k3-v3link-imx219-0-3.dtbo
To configure the cameras and CSI-2 Rx interface, run script /opt/edgeai-gst-apps/scripts/setup_cameras_v3link.sh. The result of running this script are shown below:
root@am62axx-evm:/opt/edgeai-gst-apps# ./scripts/setup_cameras_v3link.sh
IMX219 Camera 0 detected
device = /dev/video-imx219-cam0
name = imx219
format = [fmt:SRGGB8_1X8/1920x1080 field: none]
subdev_id = /dev/v4l-imx219-subdev0
isp_required = yes
ldc_required = yes
IMX219 Camera 1 detected
device = /dev/video-imx219-cam1
name = imx219
format = [fmt:SRGGB8_1X8/1920x1080 field: none]
subdev_id = /dev/v4l-imx219-subdev1
isp_required = yes
ldc_required = yes
IMX219 Camera 2 detected
device = /dev/video-imx219-cam2
name = imx219
format = [fmt:SRGGB8_1X8/1920x1080 field: none]
subdev_id = /dev/v4l-imx219-subdev2
isp_required = yes
ldc_required = yes
IMX219 Camera 3 detected
device = /dev/video-imx219-cam3
name = imx219
format = [fmt:SRGGB8_1X8/1920x1080 field: none]
subdev_id = /dev/v4l-imx219-subdev3
isp_required = yes
ldc_required = yes
After running this script, the camera format, the CSI-2 RX interface format, and the routes from each camera to the corresponding video node are configured properly. A total of 6 video nodes are created. Each video node corresponds to a DMA context allocated by the CSI2 RX driver. Out of the 6 video nodes, 4 are used for the 4 IMX219 cameras, as shown in the media pipe topology below:
root@am62axx-evm:~# media-ctl -p
Device topology
- entity 1: 30102000.ticsi2rx (7 pads, 7 links, 4 routes)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev0
routes:
0/0 -> 1/0 [ACTIVE]
0/1 -> 2/0 [ACTIVE]
0/2 -> 3/0 [ACTIVE]
0/3 -> 4/0 [ACTIVE]
pad0: Sink
[stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
[stream:1 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
[stream:2 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
[stream:3 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
<- "cdns_csi2rx.30101000.csi-bridge":1 [ENABLED,IMMUTABLE]
pad1: Source
[stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
-> "30102000.ticsi2rx context 0":0 [ENABLED,IMMUTABLE]
pad2: Source
[stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
-> "30102000.ticsi2rx context 1":0 [ENABLED,IMMUTABLE]
pad3: Source
[stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
-> "30102000.ticsi2rx context 2":0 [ENABLED,IMMUTABLE]
pad4: Source
[stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
-> "30102000.ticsi2rx context 3":0 [ENABLED,IMMUTABLE]
pad5: Source
-> "30102000.ticsi2rx context 4":0 [ENABLED,IMMUTABLE]
pad6: Source
-> "30102000.ticsi2rx context 5":0 [ENABLED,IMMUTABLE]
As shown above, media entity 30102000.ticsi2rx has 6 source pads, but only the first 4 are used, each for one IMX219. The media pipe topology can also be illustrated graphically. Run the following command to generate a dot file:
root@am62axx-evm:~# media-ctl --print-dot > media.dot
Then run the command below on a Linux host PC to generate a png file:
$ dot -Tpng media-top.dot -o media-top.png
Figure 4-2 is a picture generated using the commands given above. The components in the software architecture of Figure 3-1 can be found in this graph.