×

Внимание

Форум находится в режиме только для чтения.

Контроллер MYZR iMX6 CB200 с Linux. HDMI. Подключение TFT-дисплея WINSTAR WF50.

3 года 7 мес. назад - 3 года 7 мес. назад #6372 от AEfimov


В данной публикации рассмотрим специфику процесса подключения по HDMI пятидюймового TFT-дисплея WINSTAR WF50BTIFGDHTX# к модулю MY-IMX6-CB200. Данный интерфейс представляет интерес для подключения дисплеев к производительным микроконтроллерам со встроенным Linux по ряду параметров таких как:

  • Высокая пропускная способность (Возможность работать с графически продвинутыми приложениями)

  • Возможность использовать достаточно длинные кабеля вплоть до 35 метров, а используя активные кабеля и системы повторителей, - вплоть до нескольких километров, что актуально в промышленных условиях.

  • Универсальность драйвера – подключение по HDMI не требует установки специфического драйвера дисплея.

В сборке Linux, предоставленной MYZR, прописаны все основные конфигурации дисплеев, но для работы устройств с нестандартным разрешением требуется провести дополнительную конфигурацию ядра.

Далее мы детально опишем этот процесс на примере WINSTAR WF50 с разрешением 800 x 480.

1. Правка исходных файлов ядра:

В файле drivers/video/fbdev/mxc/mxc_edid.c
добавить следующий код в разделе const struct fb_videomode mxc_cea_mode[64] = {:

/* #60: 800x4804@30Hz 16:9 */

[60] = {   / *номер режима по порядку в данном случае – 60*/

NULL, 30, 800, 480, 29850, 164, 23, 10, 10, 10, 0

FB_SYNC_HOR_HIGH_ACT,

FB_VMODE_NONINTERLACED | FB_VMODE_ASPECT_16_9, 0

},

В файле drivers/video/fbdev/mxc/mxc_hdmi.c добавить дополнительные параметры:

static const struct fb_videomode sxga_mode = {

/* 800x480 @ 30 Hz */

NULL, 30, 800, 480, 29850, 164, 23, 10, 10, 10, 0

FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,

FB_VMODE_NONINTERLACED | FB_VMODE_ASPECT_16_9, FB_MODE_IS_VESA,

В этом же файле внесем изменение в функцию - static void mxc_hdmi_edid_rebuild_modelist(struct mxc_hdmi *hdmi):

// fb_add_videomode(&vga_mode, &hdmi->fbi->modelist);

fb_add_videomode(&sxga_mode, &hdmi->fbi->modelist);

Во вносимых нами правках присутствует строка «NULL, 30, 800, 480, 29850, 164, 23, 10, 10, 10», - которая задает ряд параметров, специфичных для каждого конкретного разрешения, и, частично состоит как из фиксированных значений, таких как разрешение по осям и частота обновления, так и тех, которые рассчитываются по специальным формулам.
Если вы столкнулись с задачей подключения дисплея с отличным от описанного нестандартным разрешением по HDMI к MYZR I.MX6 CB-200, - смело обращайтесь к нам, и наши инженеры подскажут, как нужно модифицировать код ядра в вашем случае.

2. Переменные U-boot.


После внесенных правок в исходный код мы компилируем образ ядра и загружаем его в память контроллера при помощи MFG-Tool и теперь остается только задать переменные U-Boot, для этого во время запуска Linux нажимаем пробел и вводим следующие команды:

setenv mmcargs "setenv bootargs console=ttymxc1,115200 root=/dev/mmcblk3p2 rootwait rw video=mxcfb0:dev=hdmi,800x480M@30,if=RGB24,bpp=32"
run bootcmd

Итак, дисплей успешно подключен и отображает терминальное окно LInux.
Вложения:
Время создания страницы: 0.041 секунд
Работает на Kunena форум