Справка платформы: V1.0.1 производителя, RK3xxx; Linux 4.4+. Полные разделы ниже посвящены драйверам камеры, подключению сенсоров, захвату и отладке. Конкретные сочетания платы ArmSoM/BSP/SDK/ядра не проверены; сверьте схему, интерфейсы, питание/такты, драйверы и IQ-файлы. Примеры и измерения производителя не являются тестами ArmSoM; команды не выполнялись. ZH использует китайские оригинальные рисунки, EN/RU/DE — английские.
1. Запуск сенсора
1.1 ID сенсора не определяется: ошибка связи I2C
Если ID сенсора не определяется, исходник связывает это не с RKISP/RKCIF, а с несоблюдением последовательности питания. Проверяйте по порядку:
- Правильно ли задан 7-битный i2c slave id? Не указан ли ошибочно 8-битный адрес?
- Есть ли выход mclk 24M и правильная амплитуда напряжения?
- Соблюдена ли последовательность питания сенсора: avdd, dovdd, dvdd, power down, reset и прочее?
1.1.1 Что такое 7-битный адрес
Младший бит LSB 8-битного адреса обозначает R/W; старшие семь бит — нужный i2c slave id.
1.1.2 После включения не обнаруживаются mclk 24M и питание vdd
Драйвер обычно включает mclk и питание только при необходимости, поэтому после загрузки они по умолчанию выключены. Для измерений можно временно закомментировать реализацию power_off(), чтобы не отключать питание.
1.1.3 mclk 24M по-прежнему не обнаруживается
Проверьте полосу осциллографа; исходник рекомендует не менее 48M.
- Если сенсор не включает mclk, проверьте операции тактирования по примеру drivers/media/i2c/ov5695.c.
- GPIO может быть занят другим модулем; обычно об этом сообщает журнал ядра. Командой io можно проверить настройки регистра pin-ctrl.
1.1.4 mclk присутствует, но амплитуда не соответствует домену питания
Причина — неправильная настройка io-domains. Обычно напряжение составляет 1.8v или
3.3v, согласно схеме. Проверьте схему и измените io-domains, например:
&io_domains {
status = "okay";
vccio1-supply = <&vcc1v8_soc>;
vccio2-supply = <&vccio_sd>;
vccio3-supply = <&vcc1v8_dvp>;
vccio4-supply = <&vcc_3v0>;
vccio5-supply = <&vcc_3v0>;
};
В примере группа vccio3 питается от vcc1v8_dvp; домен имеет напряжение
1.8v, поэтому измеренный mclk также должен быть 1.8v. При загрузке io_domains может инициализироваться позже сенсора. При ошибке чтения ID попробуйте повторить probe:
diff --git a/drivers/media/i2c/ov7251.c b/drivers/media/i2c/ov7251.c
index e0c608f..7842812 100644
--- a/drivers/media/i2c/ov7251.c
+++ b/drivers/media/i2c/ov7251.c
@@ -961,7 +961,8 @@ static int ov7251_check_sensor_id(struct ov7251 *ov7251,
OV7251_REG_VALUE_16BIT, &id);
if (id != CHIP_ID) {
dev_err(dev, "Unexpected sensor id(%06x), ret(%d)\n", id, ret);
- return -ENODEV;
+ return -EPROBE_DEFER;
}
Если io_domains ещё не инициализирован, используются значения по умолчанию. Если они не соответствуют реальному домену питания, напряжение mclk будет неправильным. Возврат -EPROBE_DEFER заставляет ядро повторить probe сенсора позднее.
1.1.5 Проверка последовательности питания сенсора
Datasheet задаёт порядок и интервалы включения источников питания. Проверьте их осциллографом. Некоторым сенсорам, например ov5695, порядок подачи vdd не важен: драйвер может использовать regulator_bulk. Другим, например ov2685.c, требуется последовательность и отдельные регуляторы avdd_regulator, dovdd_regulator. Выбирайте по конкретному сенсору.
1.2 Значения exp_def, hts_def и vts_def в драйвере сенсора
Получите значения у производителя. Иначе найдите регистры в datasheet и их начальные значения в списке инициализации. Пример ov2685.c:
#define OV2685_REG_VTS 0x380e
...
{0x380e, 0x05},
{0x380f, 0x0e},
...
.vts_def = 0x050e,
0x380e и 0x380f — регистры vts. При начальном значении 0x050e vts_def равен 0x050e. Значения exp и hts по умолчанию ищите в datasheet. Если приложение не должно менять экспозицию и частоту кадров, exp, hts и vts не требуются; для RAW-сенсора эти три параметра обычно нужны.
1.3 Значения link_freq и pixel_rate
link_freq — реальная частота MIPI clk, не mclk 24M, а MIPI dn/dp clk. Спросите производителя или найдите параметр в datasheet. Обычно link_freq не меньше результата следующей формулы, в Гц:
width * height * fps * bits_per_pixel / lanes / 2
Если link_freq неизвестен, измерьте его осциллографом. pixel_rate — число пикселей в секунду; по известному link_freq он вычисляется так:
link_freq * 2 * lanes / bits_per_pixel
1.4 Как подтвердить запуск сенсора
Сначала должен определяться ID: чтение/запись I2C без ошибок. media-ctl -p -d /dev/media0 должен показывать имя, разрешение и другие сведения сенсора.
Затем при захвате MIPI должен выдавать данные без ошибок MIPI/ISP, а приложение — получать кадры.
1.5 Список AVL сенсоров
AVL RGB-сенсоров: https://redmine.rockchip.com.cn/projects/rockchip_camera_module_support_list/camera. Там приведены сведения о модулях. Для других сенсоров, например YUV, ищите драйверы в drivers/media/i2c ядра; по исходнику эти драйверы уже отлажены Rockchip.
2. Ошибки MIPI/ISP
При первоначальной отладке часто встречаются:
- Нет кадров и нет ошибок ISP/MIPI.
- Непрерывные сообщения об ошибках MIPI.
- Ошибка ISP PIC_SIZE_ERROR.
- Периодические ошибки MIPI.
- Ошибки MIPI продолжаются до зависания системы.
2.1 Какие параметры MIPI настраивать
Для обмена между сенсором и ISP необходимо проверить четыре параметра MIPI:
- Выходное разрешение сенсора.
- Формат YUV или RGB RAW, разрядность 8/10/12 бит.
- Выходная частота MIPI: исходник здесь пишет ink_freq (в других разделах link_freq).
- Число линий MIPI сенсора и правильность их задания в DTS.
2.2 Нет кадров и ошибок ISP/MIPI
- Проверьте журнал ядра, например dmesg | grep MIPI.
- Проверьте ошибки I2C. Если регистры не записаны, сенсор мог не инициализироваться и не включить выход.
- Измерьте сигналы MIPI clk и data. Если выхода нет, проверяйте инициализацию сенсора и аппаратную часть.
- Если MIPI-сигнал есть, но кадров и ошибок нет: ещё раз проверьте четыре параметра §2.1; убедитесь, что I2C работает и весь список регистров записан. Последним выход включает s_stream(). До него, особенно в s_power(), сигнала MIPI быть не должно: приёмник ещё не готов и может потерять заголовок SOT. Переключите clock lane сенсора из continuous в non-continuous.
2.3 Ошибки MIPI
2.3.1 Таблицы ошибок MIPI
Для RK3288/RK3399/RK3368:
| Бит ошибки | Сокращение | Описание |
|---|---|---|
| 25 | ADD_DATA_OVFLW | Переполнение FIFO дополнительных данных |
| 24 | FRAME_END | Кадр принят нормально, не ошибка |
| 23 | ERR_CS | Ошибка контрольной суммы |
| 22 | ERR_ECC1 | Ошибка ECC в 1 бите |
| 21 | ERR_ECC2 | Ошибка ECC в 2 битах |
| 20 | ERR_PROTOCOL | Начало пакета внутри текущего пакета |
| 19:16 | ERR_CONTROL | Ошибка управления PPI, один бит на линию |
| 15:12 | ERR_EOT_SYNC | Ошибка синхронизации MIPI EOT (конец передачи), один бит на линию |
| 11:8 | ERR_SOT_SYNC | Ошибка синхронизации MIPI SOT (начало передачи), один бит на линию |
| 7:4 | ERR_SOT | MIPI SOT (начало передачи), один бит на линию |
| 3:0 | SYNC_FIFO_OVFLW | Переполнение FIFO синхронизации, один бит на линию |
Для RK3326/PX30/RK1808 три таблицы ошибок:
| Бит ошибки ERR1 | Сокращение | Описание |
|---|---|---|
| 28 | ERR_ECC | Ошибка ECC |
| 27:24 | ERR_CRC | Ошибка CRC |
| 23:20 | ERR_FRAME_DATA | Передача кадра завершена, но есть как минимум одна ошибка CRC |
| 19:16 | ERR_F_SEQ | Номер кадра не последователен, не соответствует ожиданию |
| 15:12 | ERR_F_BNDRY | Начало и конец кадра не соответствуют друг другу |
| 11:8 | ERR_SOT_SYNC | Ошибка синхронизации MIPI SOT (начало передачи), один бит на линию |
| 7:4 | ERR_EOT_SYNC | Ошибка синхронизации MIPI EOT (конец передачи), один бит на линию |
| Бит ошибки ERR2 | Сокращение | Описание |
|---|---|---|
| 19:16 | ERR_CONTROL | |
| 15:12 | ERR_ID | |
| 11:8 | ERR_ECC_CORRECTED | |
| 7:4 | ERR_SOTHS | Ошибка PHY SOTHS |
| 3:0 | ERR_ESC | Ошибка PHY ESC |
Разбор типичных ошибок приведён ниже.
2.3.2 Ошибки SOT/SOT_SYNC
SOT должен соответствовать MIPI_D-PHY_Specification. Для подробного анализа найдите спецификацию PDF и изучите:
- High-Speed Data Transmission — высокоскоростная передача данных.
- Start-of-Transmission Sequence — последовательность начала передачи.
- HS Data Transmission Burst — пакетная передача HS.
- High-Speed Clock Transmission — высокоскоростное тактирование.
- Global Operation Timing Parameters — общие временные параметры. Если сенсор уже работал на другой платформе, несоответствие протоколу MIPI маловероятно. Рекомендуется:
- Уточнить у производителя, действительно ли сенсор успешно передавал данные по MIPI.
- Повторно проверить link_freq: приёмник должен правильно настроить Ths-settle в последовательности SOT.
- При нескольких линиях попросить производителя проверить передачу по одной линии.
2.3.3 Ошибки CRC/CheckSum(CS), ECC/ECC1/ECC2
Ошибки ECC и CS означают повреждение/неполноту данных при передаче. Рекомендации:
- Сначала проверить аппаратные сигналы.
- При нескольких линиях проверить одну линию: плохая синхронизация линий тоже вызывает ECC.
2.3.4 Ошибки ERR_PROTOCOL/ERR_F_BNDRY
Ожидаемые EOT/SOT не получены; SOT и EOT должны идти парами. Проверьте осциллограмму.
2.3.5 Кадры приходят, но MIPI иногда сообщает ошибки
Сверьтесь с таблицами; сигнальные ошибки анализируйте аппаратно. Если ошибка возникает только при запуске захвата, сенсор может выдавать несоответствующий протоколу сигнал при включении. Попробуйте:
- Полную инициализацию регистров перенести в s_power(): приёмник MIPI ещё не принимает и игнорирует данные.
- В конце s_power() выключить выход сенсора вызовом stop_stream().
- В start_stream() и stop_stream() только включать/выключать MIPI-выход.
2.3.6 Много ошибок MIPI вплоть до зависания
Это может быть ухудшенный случай §2.3.5: сигнал не соответствует требованиям, некоторые ошибки приёмника генерируют прерывания по уровню, возникает шторм прерываний и зависание. Проверьте эффект мер §2.3.5. Английское “voltage interruptions” передано по китайскому объяснению прерываний по уровню.
2.3.7 Ошибка ISP PIC_SIZE_ERROR
Ошибка размера изображения означает, что ISP получил не ожидаемое число строк/столбцов. Проверяйте разрешение на всех этапах; если MIPI уже сообщает ошибку, сначала устраните её. Далее:
- Достаточна ли частота DDR? Низкая частота и задержка ответа тоже вызывают ошибку. Проверьте при максимальной частоте: echo performance > /sys/class/devfreq/dmc/governor.
- Не превышает ли разрешение последующего этапа предыдущее? media-ctl -p -d /dev/media0 показывает топологию. Должно выполняться Sensor == MIPI_DPHY >= isp_sd input >= isp_sd output. Без ручных изменений условие обычно выполняется.
- Правильно ли сенсор выдаёт разрешение? Принудительно уменьшите заявленное разрешение в драйвере. Пример ov7251.c, исходно 640x480:
static const struct ov7251_mode supported_modes[] = {
{
.width = 640,
.height = 480,
Уменьшите width/height, например до 320x240, не меняя регистры, чтобы проверить, не превышает ли настроенный размер фактический выход сенсора.
static const struct ov7251_mode supported_modes[] = {
{
.width = 320,
.height = 240,
3. Получение изображений
В этой главе рассматриваются типичные вопросы захвата изображений.
3.1 Способы захвата
Драйверы RKISP/RKCIF поддерживают V4L2. Можно использовать:
- v4l2-ctl из v4l-utils. При отладке сначала проверяйте им получение изображения. Он сохраняет кадры в файл, но не декодирует и не отображает их. Для просмотра используйте mplayer в Ubuntu/Debian либо 7yuv в Windows.
Подробности v4l2-ctl и mplayer приведены в Rockchip_Developer_Guide_Linux_Camera_CN.pdf; также доступна справка v4l2-ctl –help.
- qcamera из Linux SDK: откройте приложение камеры с рабочего стола, выберите видеоустройство и предпросмотр. Это демонстрационное Qt-приложение; для продукта рекомендуется собственная разработка.
- Плагин GStreamer v4l2src получает данные /dev/video и выводит на экран. Сначала изучите скрипты SDK в /rockchip_test/camera/. Старые плагины rkisp и rkv4l2src больше не поддерживаются; используйте штатный v4l2src. Причины: 3A больше не требуется настраивать в этих плагинах (глава 4), а V4L2-интерфейс rkisp стал стандартнее.
- В Debian доступны VLC и другие открытые инструменты. После установки VLC через apt можно вывести камеру следующей командой:
vlc v4l2:///dev/video1:width=640:height=480
Нужны права группы video либо root.
3.2 Неправильные цвета, слишком тёмное или светлое изображение
Рассматривайте тип сенсора:
- RAW RGB (RGGB, BGGR и т. п.) требует работающего 3A, см. главу 4. Если 3A исправен, проверьте формат декодирования/вывода и перестановку компонентов UV.
- При YUV либо RGB565/RGB888 ISP работает в bypass. При неверных цветах проверьте выходной формат сенсора и порядок UV; если они верны, обратитесь к производителю сенсора. При явно неправильной яркости также обратитесь к нему.
3.3 Топология ISP и команда media-ctl
RKISP/RKCIF может поочерёдно работать с несколькими сенсорами, а RKISP поддерживает многоступенчатое кадрирование. Узлы соединены топологией; media-ctl позволяет настроить параметры каждого. Подробности в Rockchip_Developer_Guide_Linux_Camera_CN.pdf.
3.3.1 Несколько сенсоров на одном ISP
Допускается только поочерёдная работа. Соедините сенсоры с MIPI DPHY в DTS, затем переключайте через media-ctl.
3.4 Совпадают ли захваченные RAW-данные с оригиналом?
В bypass при RAW (RGGB/BGGR) требуется выравнивание по 8 бит; недостающие младшие биты дополняются нулями. Исходные 8/16-битные кадры не меняются. Для 10/12-битных каждый пиксель дополняется младшими нулями до 16 бит. RAW выдаёт только видеоустройство MP; SP его не поддерживает.
3.5 Одновременный выход MP и SP
SP и MP независимо кадрируют и меняют формат одного сенсорного изображения, выводя одновременно. Возможности описаны в Rockchip_Developer_Guide_Linux_Camera_CN.pdf. Одновременный вывод возможен, только если оба выдают RGB/YUV. При RAW на MP выхода SP нет.
3.6 Увеличение изображения в ISP
Аппаратно поддерживается, но не рекомендуется и по умолчанию отключено в драйвере.
3.7 Поворот изображения в ISP
Не поддерживается. Для flip/mirror сначала проверьте функцию сенсора: это наиболее эффективно. Иначе используйте RGA; код и примеры в external/linux-rga/, документация в docs/.
3.8 Захват изображения GREY
Если ISP выдаёт YUV или сенсор — Y8, приложение может непосредственно захватывать V4L2_PIX_FMT_GREY (FourCC GREY).
3.9 Поддерживаемые RGB-форматы
RGB поддерживает только SP: V4L2_PIX_FMT_XBGR32 и V4L2_PIX_FMT_RGB565. XBGR32 (FourCC XR24) содержит R/G/B/X, где X всегда 0. RGB888, то есть 24-битный вывод, не поддерживается.
3.10 Быстрый предпросмотр на плате без экрана
SDK external/uvc_app/ превращает плату в UVC-камеру. См. описание и код каталога. После подключения к ПК устройство распознаётся как USB-камера и позволяет предпросмотр.
3.11 Различение SP и MP
Посмотрите топологию командой media-ctl -p -d /dev/media0; при нескольких устройствах попробуйте /dev/media1 и /dev/media2. Часть вывода:
# media-ctl -p -d /dev/media0
...
- entity 2: rkisp1_mainpath (1 pad, 1 link) //Means the entity is
MP(MainPath)
type Node subtype V4L flags 0
device node name /dev/video1 //The corresponding
device node is/dev/video1
pad0: Sink
<- "rkisp1-isp-subdev":2 [ENABLED]
- entity 3: rkisp1_selfpath (1 pad, 1 link) //Means the entity is
SP(SelfPath)
type Node subtype V4L flags 0
device node name /dev/video2 //The corresponding
device node is/dev/video2
pad0: Sink
<- "rkisp1-isp-subdev":2 [ENABLED]
...
Если media-ctl отсутствует, можно искать через /sys/, например:
# grep '' /sys/class/video4linux/video*/name
/sys/class/video4linux/video0/name:stream_cif
/sys/class/video4linux/video1/name:rkisp1_mainpath # Corresponding MP
node/dev/video1
/sys/class/video4linux/video2/name:rkisp1_selfpath # Corresponding SP
Node/dev/video2
/sys/class/video4linux/video3/name:rkisp1_rawpath
/sys/class/video4linux/video4/name:rkisp1_dmapath
/sys/class/video4linux/video5/name:rkisp1-statistics
/sys/class/video4linux/video6/name:rkisp1-input-params
4. Обработка 3A
RAW BAYER RGB (RGGB/BGGR) требует 3A и обработки RKISP. Реализация зависит от camera_engine_rkisp; рекомендуется актуальная совместимая версия. Проверьте модуль в списке поддержки: для поддерживаемых модулей есть XML в external/camera_engine_rkisp/iqfiles/. Иначе оформите запрос настройки модуля через деловой контакт производителя.
4.1 Версия camera_engine_rkisp
- По исходному коду:
# grep CONFIG_CAM_ENGINE_LIB_VERSION interface/rkisp_dev_manager.h
define CONFIG_CAM_ENGINE_LIB_VERSION "v2.2.0" # The output v2.2.0 is
the version number of librkisp.so
- По журналу выполнения:
# persist_camera_engine_log=0x4000 rkisp_3A_server --mmedia=/dev/media1 | grep
"CAM ENGINE LIB VERSION"
CAM ENGINE LIB VERSION IS v2.2.0 # The output v2.2.0 is
the version number of librkisp.so
Если версия ниже v2.2.0, рассмотрите обновление до v2.2.0 или новее.
4.1.1 Требуемая версия драйвера rkisp ядра
camera_engine_rkisp предъявляет требования к версии драйвера ядра; убедитесь, что rkisp достаточно новый.
- Версия ISP из исходников ядра:
# grep RKISP1_DRIVER_VERSION drivers/media/platform/rockchip/isp1/version.h
define RKISP1_DRIVER_VERSION KERNEL_VERSION(0, 1, 0x5) # The output v0.1.5 is
the version number of the rkisp driver
- Версия ISP из журнала ядра:
# dmesg | grep "rkisp1 driver version"
[ 0.867864] rkisp1 ff4a0000.rkisp1: rkisp1 driver version: v00.01.05
4.2 Обновление camera_engine_rkisp
Обновляются три части:
- Основной camera_engine_rkisp в external/camera_engine_rkisp. Обновляется git/repo отдельно, без изменения остальных каталогов SDK.
- Ядро согласно требованиям camera_engine_rkisp. Требуемую версию rkisp ищите через git log этого каталога. Пример:
# git log
commit e456a50a5524792d64dac384604d4136a697deac
Author: ZhongYichong <zyc@rock-chips.com>
Date: Mon Jul 1 11:26:32 2019 +0800
librkisp: v2.2.0
(BY ZSQ: UPDATE v2.2.0 iq version: from v1.4.0 to v1.5.0)
3A lib version:
af: v0.2.17
awb: v0.0.e
aec: v0.0.e
iq version: v1.5.0
iq magic version code: 706729
matched rkisp1 driver version:
v0.1.5 # The needed kernel driver version is v0.1.5
Change-Id: I3d2adb949dadec259b9ba587a3e3b2770a1c155d
Signed-off-by: ZhongYichong <zyc@rock-chips.com>
Signed-off-by: Shunqian Zheng <zhengsq@rock-chips.com>
- Сценарий сборки Buildroot в buildroot/package/rockchip/camera_engine_rkisp. Его можно обновить отдельно, если полное обновление Buildroot неудобно.
4.3 Проверка работы 3A
После проверки camera_engine_rkisp v2.2.0 или новее захватите кадр и оцените цвета/экспозицию. Проверьте также фоновый процесс rkisp_3A_server:
# ps -ef | grep rkisp_3A_server
706 root 9176 S /usr/bin/rkisp_3A_server --mmedia=/dev/media1
746 root 2408 S grep rkisp_3A_server
# pidof rkisp_3A_server
706
В примере PID 706 соответствует rkisp_3A_server.
4.3.1 Процесс rkisp_3A_server отсутствует
- Проверьте /usr/bin/rkisp_3A_server. Если файла нет, проверьте версию camera_engine_rkisp и сборку.
- Найдите ошибки rkisp_3A в /var/log/syslog, особенно отсутствие или несовпадение XML сенсорного модуля.
- В одном shell запустите rkisp_3A_server –mmedia=/dev/media0, выбирая media-устройство, соответствующее /dev/video. В другом захватите кадры, чтобы получить сообщения ошибок сервера.
4.3.2 Запуск rkisp_3A_server
В SDK скрипт /etc/init.d/S40rkisp_3A запускает сервер в фоне. Если скрипта нет, проверьте camera_engine_rkisp и сценарии сборки пакета Buildroot.
4.3.3 Имя и путь IQ-файла XML
Имя составляется из трёх частей:
- Тип сенсора, например ov5695 или imx327.
- Имя модуля из DTS. На RK3326/PX30 EVB пример: rockchip,camera-module-name = “TongJu”;
- Имя объектива из DTS: rockchip,camera-module-lens-name = “CHT842-MD”; Получается ov5695_TongJu_CHT842-MD.xml в /etc/iqfiles/. Регистр букв важен.
4.4 Ручная экспозиция
Сначала завершите rkisp_3A_server, затем используйте пример rkisp_demo.cpp или исходники librkisp_api.so.
4.5 Журнал librkisp
Задайте переменную среды persist_camera_engine_log. Назначение битов:
bits: 23-20 19-16 15-12 11-8 7-4 3-0
module: [xcore] [ISP] [AF] [AWB] [AEC] [NO]
0: error
1: warning
2: info
3: verbose
4: debug
Например, включение debug ISP и AWB:
# /etc/init.d/S40rkisp_3A stop
# export persist_camera_engine_log=0x040400
# /usr/bin/rkisp_3A_server --mmedia=/dev/media0

5. Разработка приложений
5.1 Пример на C
- SDK содержит rkisp_demo и исходники. Как v4l2-ctl, программа захватывает, но не показывает изображения; прежде всего это образец кода. Код в external/camera_engine_rkisp/apps, а в старых версиях — external/camera_engine_rkisp/tests.
- SDK содержит библиотеку rkisp_api.so и исходники для изменения или непосредственной разработки на C. Код в external/camera_engine_rkisp/apps; если каталога нет в старой версии, обновите её.
5.2 DMA buffer и его преимущества
DMA buffer — память, выделенная драйвером и разделяемая несколькими модулями ядра. Это сокращает копирование, повышает эффективность обработки изображений и снижает нагрузку DDR. Пример кодирования камеры через MPP:
RKISP → общий DMA buffer → кодирование MPP.
RKISP может принимать DMA buffer от MPP/RGA либо выделять память и экспортировать буфер другим модулям. Подробности в исходниках librkisp_api.so.
Различия кода оригиналов
Основной текст соответствует языку оригинала; RU/DE переведены с EN. Ниже сохранены отличающиеся фрагменты другого оригинала, включая комментарии/разметку. Это независимые примеры, не единый исполняемый сценарий; параметры источника не подменены.
CN PDF p.13 · 108
# media-ctl -p -d /dev/media0
...
- entity 2: rkisp1_mainpath (1 pad, 1 link) //表⽰该entity是
MP(MainPath)
type Node subtype V4L flags 0
device node name /dev/video1 //对应的设备节点
是/dev/video1
pad0: Sink
<- "rkisp1-isp-subdev":2 [ENABLED]
- entity 3: rkisp1_selfpath (1 pad, 1 link) //表⽰该entity是
SP(SelfPath)
type Node subtype V4L flags 0
device node name /dev/video2 //对应的设备节点
是/dev/video2
pad0: Sink
<- "rkisp1-isp-subdev":2 [ENABLED]
CN PDF p.14 · 109
...
CN PDF p.14 · 111
# grep '' /sys/class/video4linux/video*/name
/sys/class/video4linux/video0/name:stream_cif
/sys/class/video4linux/video1/name:rkisp1_mainpath # MP节点对应/dev/video1
/sys/class/video4linux/video2/name:rkisp1_selfpath # SP节点对应/dev/video2
/sys/class/video4linux/video3/name:rkisp1_rawpath
/sys/class/video4linux/video4/name:rkisp1_dmapath
/sys/class/video4linux/video5/name:rkisp1-statistics
/sys/class/video4linux/video6/name:rkisp1-input-params
CN PDF p.14 · 116
# grep CONFIG_CAM_ENGINE_LIB_VERSION interface/rkisp_dev_manager.h
define CONFIG_CAM_ENGINE_LIB_VERSION "v2.2.0" # 输出的v2.2.0是
librkisp.so的版本号
CN PDF p.14 · 118
# persist_camera_engine_log=0x4000 rkisp_3A_server --mmedia=/dev/media1 | grep
"CAM ENGINE LIB VERSION"
CAM ENGINE LIB VERSION IS v2.2.0 # 输出的v2.2.0是librkisp.so
的版本号
CN PDF p.15 · 122
# grep RKISP1_DRIVER_VERSION drivers/media/platform/rockchip/isp1/version.h
define RKISP1_DRIVER_VERSION KERNEL_VERSION(0, 1, 0x5) # 输出的v0.1.5是rkisp驱动的
版本号
CN PDF p.15 · 129
# git log
commit e456a50a5524792d64dac384604d4136a697deac
Author: ZhongYichong <zyc@rock-chips.com>
Date: Mon Jul 1 11:26:32 2019 +0800
librkisp: v2.2.0
(BY ZSQ: UPDATE v2.2.0 iq version: from v1.4.0 to v1.5.0)
3A lib version:
af: v0.2.17
awb: v0.0.e
aec: v0.0.e
iq version: v1.5.0
iq magic version code: 706729
matched rkisp1 driver version:
v0.1.5 # 所需要的kernel驱动版本为v0.1.5
Change-Id: I3d2adb949dadec259b9ba587a3e3b2770a1c155d
Signed-off-by: ZhongYichong <zyc@rock-chips.com>
Signed-off-by: Shunqian Zheng <zhengsq@rock-chips.com>
