Перейти к основному содержимому

Работа с DSI дисплеем

На DSI разъеме LCD поддерживается подключение дисплеев.

Ревизия платы Eltay SC rev.1.0.0

В ревизии платы REV1.0.0 линии I2C на разъеме перепутаны местами. Для обхода этой особенности используется программная I2C-шина i2c-gpio.

внимание

При включении overlay-файла камеры аппаратный интерфейс I2C1, используемый также для HDMI, отключается. Поэтому на данной ревизии платы DSI дисплей и HDMI не могут использоваться одновременно.
Также не поддерживается одновременная работа камеры и дисплея, подключенных к разъемам CAM и LCD соответственно.

Для включения дисплея нужно добавить слой eltay-sc-soft-i2c-rpi-7inch-dsi.dtbo в конфигурационный файл /boot/extlinux/extlinux.conf:

fdtoverlays /boot/overlays/eltay-sc-soft-i2c-rpi-7inch-dsi.dtbo

После сохранения изменений необходимо перезагрузить устройство. После загрузки должна появиться программная I2C-шина дисплея. Ее можно проверить командой:

i2cdetect -l

Ожидаемый результат — наличие адаптера i2c-gpio-dsi, например:

i2c-5 i2c i2c-gpio-dsi I2C adapter

Также на этой шине должен быть виден контроллер питания/подсветки дисплея по адресу 0x45. Если драйвер уже привязался к устройству, вместо адреса будет отображаться UU:

i2cdetect -y 5

Ревизия платы Eltay SC rev.1.0.1

В ревизии платы Eltay SC rev.1.0.1 I2C-линии разъема LCD подключены к аппаратной шине I2C1. Программная I2C-шина для дисплея не используется. При включении дисплея аппаратный интерфейс I2C1 не отключается, поэтому HDMI и дисплей могут оставаться включенными одновременно на уровне I2C-шины.

Для включения дисплея нужно добавить overlay-файл eltay-sc-i2c1-rpi-7inch-dsi.dtbo в конфигурационный файл /boot/extlinux/extlinux.conf:

fdtoverlays /boot/overlays/eltay-sc-i2c1-rpi-7inch-dsi.dtbo

После сохранения изменений необходимо перезагрузить устройство. После загрузки нужно проверить, что аппаратная шина I2C1 зарегистрирована в Linux как i2c-1:

i2cdetect -l

Ожидаемый результат — наличие адаптера i2c-1, соответствующего аппаратному контроллеру I2C1. На шине i2c-1 должен быть виден контроллер питания/подсветки дисплея по адресу 0x45. Если драйвер уже привязался к устройству, вместо адреса будет отображаться UU:

i2cdetect -y 1

Работа с дисплеем

После включения соответствующего overlay-файла и перезагрузки устройства дисплей должен включиться. На экране должна появиться консоль Linux с приглашением ввода логина.

Для проверки, что DSI-дисплей определился в DRM-подсистеме, нужно выполнить:

ls -l /sys/class/drm/

Ожидаемый результат - появление DSI-коннектора, например:

/drm/card0/card1-DSI-1

Номер карты может отличаться, поэтому далее нужно использовать фактическое имя найденного DSI-коннектора. Посмотреть статус, подставив номер определившейся карты (для примера card1-DSI-1) можно командами:

cat /sys/class/drm/card1-DSI-1/status
cat /sys/class/drm/card1-DSI-1/modes
cat /sys/class/graphics/fb0/name
cat /sys/class/graphics/fb0/virtual_size

Ожидаемый результат:

connected
800x480
mali-dpdrmfb
800,480

Для вывода картинки, например /home/test.jpg, на экран можно воспользоваться командой (для дисплея 800x480 с 32-битным буфером):

ffmpeg -y \
-i /home/test.jpg \
-vf "scale=800:480:force_original_aspect_ratio=decrease,pad=800:480:(ow-iw)/2:(oh-ih)/2:black,format=bgra" \
-frames:v 1 \
-f rawvideo \
-pix_fmt bgra \
/dev/fb0