Быстрый старт: камеры V3Link на платформе TI
Оборудование
Комплект камер Arducam V3Link
Плата-адаптер V3Link d-ch
Схема

Интерфейсы


Плата-адаптер камеры V3Link
Схема
| Схема (лицевая сторона) | Схема (обратная сторона) |
|---|
Интерфейсы
| Интерфейсы (лицевая сторона) | Интерфейсы (обратная сторона) |
|---|
Что понадобится
- Отладочная плата TI SK-AM62A-LP
- Плата-адаптер Arducam V3Link d-ch — 1 шт.
- Плата-адаптер камеры Arducam V3Link — 4 шт.
- Коаксиальный ВЧ-кабель FAKRA Z, «мама — мама» — 4 шт.
- Модуль камеры Arducam IMX219 — 4 шт.
- Карта microSD/TF (от 16 ГБ)
- Кардридер для SD-карт
- Кабель Ethernet или кабель microUSB (USB-A — Micro-B)
- Кабель HDMI
Демонстрация
Подключение
Подключите четыре камеры IMX219 к платам-адаптерам Arducam V3Link, а плату-адаптер V3Link — к стартовому комплекту TI SK-AM62A.

- 5–1 — камера IMX219, подключённая к плате-адаптеру камеры Arducam V3Link.
- 1–2 — плата-адаптер Arducam V3Link d-ch, подключённая к плате-адаптеру камеры Arducam V3Link.
- 3 — порт
csi0платы-адаптера Arducam V3Link d-ch, подключённый к разъёму CSI платы SK-AM62A-LP. - 4 — питание 12 В по требованиям Mini Fusion EVM.
- 6 — подключение к локальной сети кабелем Ethernet.
- 7 — подключение монитора кабелем HDMI.
- 8 — питание через USB-C (USB PD).
- 9 — последовательный порт, подключённый к хосту через microUSB.
Схема соединений

Программное обеспечение
Чтобы работать с комплектом камер Arducam V3Link на стартовой плате TI SK-AM62A-LP, выполните следующие шаги.
Инструкция для версий до AM62A SDK 9.2
Запись образа на карту памяти
- Скачайте образ Edge AI SDK для AM62A (файл
tisdk-edgeai-image-am62axx-evm.wic.xz, версия 08.06.00.45) с сайта TI.
- Запишите образ на SD-карту программой Balena Etcher:
- Выберите образ, который нужно записать.
- Вставьте карту microSD в кардридер, подключённый к компьютеру.
- Нажмите кнопку
Flash!и дождитесь окончания записи.
- Завершение
Дождитесь окончания записи и вставьте карту microSD в SK-AM62A-LP. Сначала подайте питание на плату-адаптер V3Link d-ch, и только потом — на SK-AM62A-LP. Это важно: порядок включения менять нельзя. Через некоторое время на мониторе появится такой экран:

Установка драйверов и изменение конфигурации
Вход в систему через последовательный порт
- Скачайте программу PuTTY с её официального сайта.
- Щёлкните правой кнопкой мыши по кнопке «Пуск» на панели задач и выберите «Диспетчер устройств». В разделе «Порты (COM и LPT)» появятся несколько новых последовательных портов.
- Откройте PuTTY, выберите тип подключения
Serial, укажите новый COM-порт, установите скорость 115200 бод и нажмитеOpen. Подписи, какой из портов — консоль, нет: терминал всегда на порту с наименьшим номером. Рекомендуем открыть все четыре порта и заново включить питание, чтобы увидеть вывод. - В примере из руководства терминалом оказался порт COM7. Введите имя пользователя
root— пароль не нужен. - Скачайте архив
AM62ASK-V3Link.zip.
Настройка системы
- Узнайте IP-адрес платы
# AM62A
root@am62axx-evm:/opt/edgeai-gst-apps# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 1c:63:49:17:20:b0 brd ff:ff:ff:ff:ff:ff
inet 192.168.137.206/24 brd 192.168.137.255 scope global dynamic eth0
valid_lft 604792sec preferred_lft 604792sec
inet6 fe80::1e63:49ff:fe17:20b0/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:b2:42:d6:22 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever\
- Скопируйте архив на AM62A
# PC
PS \$USER_PATH\> scp .\AM62ASK-V3Link.zip root@192.168.137.206:
root@192.168.137.206's password:
AM62ASK-V3Link.zip 100% 411KB 4.6MB/s 00:00
- Настройте окружение системы
# AM62A
root@am62axx-evm:~# unzip AM62ASK-V3Link.zip
Archive: AM62ASK-V3Link.zip
creating: AM62ASK-V3Link/
creating: AM62ASK-V3Link/dtbs/
inflating: AM62ASK-V3Link/dtbs/k3-am62a7-sk-v3link-fusion-0.dtbo
inflating: AM62ASK-V3Link/dtbs/k3-am62a7-sk.dtb
inflating: AM62ASK-V3Link/dtbs/k3-v3link-imx219-0-0.dtbo
...
# Copy modules/ds90ub960.ko and modules/im219.ko to/
root@am62axx-evm:~# cp ~/AM62ASK-V3Link/modules/ds90ub960.ko /lib/modules/5.10.168-g2c23e6c538/kernel/drivers/media/i2c/
root@am62axx-evm:~# cp ~/AM62ASK-V3Link/modules/imx219.ko /lib/modules/5.10.168-g2c23e6c538/kernel/drivers/media/i
2c/
# Copy dtbs/*.dtbo to /boot
root@am62axx-evm:~# cp ~/AM62ASK-V3Link/dtbs/*.dtbo /boot/
root@am62axx-evm:~# cp ~/AM62ASK-V3Link/dtbs/*.dtb /boot/
# Copy dtbs/uEnv.txt to /run/media/mmcblk1p1/
root@am62axx-evm:~# cp ~/AM62ASK-V3Link/dtbs/uEnv.txt /run/media/mmcblk1p1/uEnv.txt
reboot
- Просмотр изображения
Сначала задайте формат камер скриптом setup-imx219.sh, затем запустите просмотр скриптом stream-4ximx219.sh, передав ему параметры четырёх камер — пары video_index subdev_index, как показано ниже:
root@am62axx-evm:~# chmod +x ~/AM62ASK-V3Link/scripts/*
root@am62axx-evm:/opt/edgeai-gst-apps# ~/AM62ASK-V3Link/scripts/setup-imx219-640x480.sh
IMX219 Camera 0 detected
device = /dev/video3
name = IMX219 7-0010
format = [fmt:SRGGB8_1X8/640x480 field: none]
subdev_id = /dev/v4l-subdev5
isp_required = yes
ldc_required = yes
IMX219 Camera 1 detected
device = /dev/video4
name = IMX219 8-0010
format = [fmt:SRGGB8_1X8/640x480 field: none]
subdev_id = /dev/v4l-subdev7
isp_required = yes
ldc_required = yes
IMX219 Camera 2 detected
device = /dev/video2
name = IMX219 6-0010
format = [fmt:SRGGB8_1X8/640x480 field: none]
subdev_id = /dev/v4l-subdev9
isp_required = yes
ldc_required = yes
IMX219 Camera 3 detected
device = /dev/video5
name = IMX219 9-0010
format = [fmt:SRGGB8_1X8/640x480 field: none]
subdev_id = /dev/v4l-subdev10
isp_required = yes
ldc_required = yes
root@am62axx-evm:/opt/edgeai-gst-apps# ~/AM62ASK-V3Link/scripts/stream-4ximx219-640x480.sh 3 5 4 7 2 9 5 10
# or
root@am62axx-evm:/opt/edgeai-gst-apps# ~/AM62ASK-V3Link/scripts/setup-imx219.sh
root@am62axx-evm:/opt/edgeai-gst-apps# ~/AM62ASK-V3Link/scripts/stream-4ximx219.sh 3 5 4 7 2 9 5 10
Инструкция для версий после AM62A SDK 9.2
Запись образа на карту памяти
- Скачайте образ WIC из выпуска SDK 9.2 (файл
tisdk-edgeai-image-am62axx-evm.wic.xz, версия 09.02.00.05) с сайта TI.
- Запишите образ на SD-карту программой Balena Etcher:
- Выберите образ, который нужно записать.
- Вставьте карту microSD в кардридер, подключённый к компьютеру.
- Нажмите кнопку
Flash!и дождитесь окончания записи.
- Завершение
Дождитесь окончания записи и вставьте карту microSD в SK-AM62A-LP. Сначала подайте питание на плату-адаптер V3Link d-ch, и только потом — на SK-AM62A-LP. Это важно: порядок включения менять нельзя. Через некоторое время на мониторе появится такой экран:
Установка драйверов и изменение конфигурации
Вход в систему через последовательный порт
- Скачайте программу PuTTY с её официального сайта.
- Щёлкните правой кнопкой мыши по кнопке «Пуск» на панели задач и выберите «Диспетчер устройств». В разделе «Порты (COM и LPT)» появятся несколько новых последовательных портов.
- Откройте PuTTY, выберите тип подключения
Serial, укажите новый COM-порт, установите скорость 115200 бод и нажмитеOpen. Подписи, какой из портов — консоль, нет: терминал всегда на порту с наименьшим номером. Рекомендуем открыть все четыре порта и заново включить питание, чтобы увидеть вывод. - В примере из руководства терминалом оказался порт COM7. Введите имя пользователя
root— пароль не нужен.
- Измените файл
/run/media/BOOT-mmcblk1p1/uEnv.txt, чтобы в нём была строка:
name_overlays=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
- Загрузите Linux и выполните скрипт:
/opt/edgeai-gst-apps/scripts/setup_cameras_v3link.sh
Затем запустите приложенный скрипт для вывода видео.
- Просмотр изображения
Файл stream-4ximx219 - 1920x1080.txt:
#!/bin/bash
gst-launch-1.0 \
v4l2src device=/dev/video-imx219-cam0 io-mode=5 ! queue max-size-buffers=1 leaky=2 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! \
tiovxisp sink_0::device=/dev/v4l-imx219-subdev0 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin \
sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 ! \
video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_0 \
v4l2src device=/dev/video-imx219-cam1 io-mode=5 ! queue max-size-buffers=1 leaky=2 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! \
tiovxisp sink_0::device=/dev/v4l-imx219-subdev1 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin \
sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 ! \
video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_1 \
v4l2src device=/dev/video-imx219-cam2 io-mode=5 ! queue max-size-buffers=1 leaky=2 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! \
tiovxisp sink_0::device=/dev/v4l-imx219-subdev2 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin \
sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 ! \
video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_2 \
v4l2src device=/dev/video-imx219-cam3 io-mode=5 ! queue max-size-buffers=1 leaky=2 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! \
tiovxisp sink_0::device=/dev/v4l-imx219-subdev3 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin \
sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 ! \
video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_3 \
tiovxmosaic name=mosaic \
sink_0::startx="<0>" sink_0::starty="<0>" sink_0::widths="<640>" sink_0::heights="<480>" \
sink_1::startx="<0>" sink_1::starty="<480>" sink_1::widths="<640>" sink_1::heights="<480>" \
sink_2::startx="<640>" sink_2::starty="<0>" sink_2::widths="<640>" sink_2::heights="<480>" \
sink_3::startx="<640>" sink_3::starty="<480>" sink_3::widths="<640>" sink_3::heights="<480>" ! \
queue ! video/x-raw, width=1920, height=1080 ! queue ! kmssink driver-name=tidss sync=false force-modesetting=true