Ник:
Пароль:

Контакты

Cтатус Skype: starterkit.ru
тел.: (+7 3412) 478-448
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
E-mail: info@starterkit.ru
Google+
Партнеры:
otladka.com.ua - г.Киев
tixer.ru - г.Москва

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
imx6 hdmi загружается с разрешением 640x480
bl
Добавлено 13.05.2019 11:08
0
Сообщение: 1
bl
5

Пункты: 576
Регистрация: 27.03.2019
Здравствуйте,

Подскажите в какую сторону копать и в чем может быть проблема?

buildroot собран с поддержкой hdmi,
uboot fb0 mode настроен на hdmi

Код
$cat /proc/cmdline
console=ttymxc0,115200 root=/dev/mmcblk2p1 rootwait rw video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 dmfc=3 video=mxcfb1:dev=ldb,if=RGB24 consoleblank=0


fbset запущеный без параметров тоже показывает, что разрешение фреймбуфера соответствует переданному ядру.

Подключаю монитор HDMI все работает, показывает разрешение соответствующее переданному ядру.

Подключаем вместо монитора плату hdmi-sender2led - тоже вроде бы показывает все корректно, однако после перезагрузки с подключенной платой hdmi-sender'ом получаем размер framebuffer'a 640x480

Код
$ fbset

mode "640x480-60"
# D: 25.200 MHz, H: 31.500 kHz, V: 60.001 Hz
geometry 640 480 640 480 16
timings 39682 48 16 33 10 96 2
accel false
rgba 5/11,6/5,5/0,0/0
endmode



Подскажите в какую сторону копать и в чем может быть проблема?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 13.05.2019 12:47 Сообщение: 2
sasamy
4.84

Пункты: 53663
Регистрация: 14.08.2009
Цитата

Подключаем вместо монитора плату hdmi-sender2led
...
Подскажите в какую сторону копать и в чем может быть проблема?


очевидно в этом и проблема - на этой плате что-то не так с DDC/EDID или он вообще отстуствует. Какая у вас версия ядра ? Что показывает

cat /sys/class/graphics/fb0/modes
Спуститься к концу Подняться к началу
Персональная информация
bl
Добавлено 13.05.2019 13:04 Редактировалось 13.05.2019 13:23 Сообщение: 3
bl
5

Пункты: 576
Регистрация: 27.03.2019
Цитата

очевидно в этом и проблема - на этой плате что-то не так с DDC/EDID или он вообще отстуствует. Какая у вас версия ядра ? Что показывает

cat /sys/class/graphics/fb0/modes



$ uname -a
Linux 0x6e29fe43 4.1.15 #15 SMP PREEMPT Tue Apr 30 17:47:47 +07 2019 armv7l GNU/Linux

$ cat /sys/class/graphics/fb0/modes
V:640x480p-60
V:640x480p-60



Возможно ли отключить этот механизм проверки ddc/edid ?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 13.05.2019 13:17 Сообщение: 4
sasamy
4.84

Пункты: 53663
Регистрация: 14.08.2009
Цитата

$ cat /sys/class/graphics/fb0/modes
V:640x480p-60
V:640x480p-60


ваше устройство не сообщает о поддерживаемых режимах поэтому устанавливается минимальный стандартный. Как обойти - с наскоку не скажу, надо поискать, было более старое стороннее ядро и там можно было через командную строку указать любое разрешение. Возможно еще на форуме NXP есть решение.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 13.05.2019 13:56 Редактировалось 13.05.2019 17:43 Сообщение: 5
sasamy
4.84

Пункты: 53663
Регистрация: 14.08.2009
нашел третий вариант

https://www.toradex.com/community/questions/19407/change-hdmi-lcd-resolution-in-toradex-imx6-board.html

там в Best Answer есть решение

Цитата

To workaround the broken display you could make the kernel use local EDID instead of reading it from the display.

For that apply this patch and add CONFIG_I2C_SW_EDID to the kernel config.
Then change the device tree to contain a corrected EDID and make the edid driver use the simulated I2C bus driver instead of reading from the I2C bus towards your display, e.g. similar what the following patch does to the Evaluation Board device trees.

Then compile the kernel and device tree and deploy to the target.


в общем патч позволяет софтово эмулировать EDID для подключенного устройства

EDID от нормального HDMI монитора иожно прочитать на PC чтобы лишнее на плату не тащить и подставить в DTS своей платы

http://manpages.ubuntu.com/manpages/trusty/man1/get-edid.1.html


можно на самой плате подключить нормальный HDMI-монитор и прочитать EDID, например у меня

# cat /sys/devices/soc0/soc/20e0000.hdmi_video/edid
0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x09 0xD1 0xAB 0x78 0x45 0x54 0x00 0x00
0x22 0x15 0x01 0x03 0x80 0x35 0x1E 0x78 0x2E 0x60 0x85 0xA6 0x56 0x4A 0x9C 0x25
0x12 0x50 0x54 0xA5 0x6B 0x80 0x81 0x00 0x81 0xC0 0x81 0x80 0xA9 0xC0 0xB3 0x00
0xD1 0xC0 0x01 0x01 0x01 0x01 0x02 0x3A 0x80 0x18 0x71 0x38 0x2D 0x40 0x58 0x2C
0x45 0x00 0x13 0x2A 0x21 0x00 0x00 0x1E 0x00 0x00 0x00 0xFF 0x00 0x4A 0x38 0x42
0x30 0x36 0x39 0x36 0x39 0x53 0x4C 0x30 0x0A 0x20 0x00 0x00 0x00 0xFD 0x00 0x32
0x4C 0x1E 0x53 0x11 0x00 0x0A 0x20 0x20 0x20 0x20 0x20 0x20 0x00 0x00 0x00 0xFC
0x00 0x42 0x65 0x6E 0x51 0x20 0x47 0x32 0x34 0x35 0x30 0x48 0x0A 0x20 0x01 0x4F
0x02 0x03 0x22 0xF1 0x4F 0x90 0x05 0x04 0x03 0x02 0x01 0x11 0x12 0x13 0x14 0x06
0x07 0x15 0x16 0x1F 0x23 0x09 0x07 0x07 0x65 0x03 0x0C 0x00 0x10 0x00 0x83 0x01
0x00 0x00 0x02 0x3A 0x80 0x18 0x71 0x38 0x2D 0x40 0x58 0x2C 0x45 0x00 0x13 0x2A
0x21 0x00 0x00 0x1F 0x01 0x1D 0x80 0x18 0x71 0x1C 0x16 0x20 0x58 0x2C 0x25 0x00
0x13 0x2A 0x21 0x00 0x00 0x9F 0x01 0x1D 0x00 0x72 0x51 0xD0 0x1E 0x20 0x6E 0x28
0x55 0x00 0x13 0x2A 0x21 0x00 0x00 0x1E 0x8C 0x0A 0xD0 0x8A 0x20 0xE0 0x2D 0x10
0x10 0x3E 0x96 0x00 0x13 0x2A 0x21 0x00 0x00 0x18 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xEB
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Спуститься к концу Подняться к началу
Персональная информация
bl
Добавлено 16.05.2019 12:10 Редактировалось 23.05.2019 07:08 Сообщение: 6
bl
5

Пункты: 576
Регистрация: 27.03.2019
Спасибо за помощь. Попробовал я наложить патчи, но не хватает опыта, чтобы правильно перенести их на наши dts и dtsi. Пропатчил что-то не то, и проблема не решилась. Зато в процессе нагуглил https://community.nxp.com/thread/379601

Это совершенно случайно, привело к ./drivers/video/fbdev/mxc/mxc_hdmi.c , в котором собственно и хранится эта инструкция для применения vga режима до запроса edid от монитора. И я решил исправить 640х480 на нужное мне разрешение использовав настройки таймингов fbmode с просторов интернета. ниже привожу diff, на всякий случай. Если в этом решении есть весомые отрицательные стороны, пожалуйста сообщите о них.

Код

--- ./drivers/video/fbdev/mxc/mxc_hdmi.c.orig 2016-12-22 16:40:57.000000000 +0700
+++ ./drivers/video/fbdev/mxc/mxc_hdmi.c 2019-05-16 14:16:06.174144683 +0700
@@ -87,8 +87,8 @@
*/
static const struct fb_videomode vga_mode = {
/* 640x480 @ 60 Hz, 31.5 kHz hsync */
- NULL, 60, 640, 480, 39721, 48, 16, 33, 10, 96, 2, 0,
- FB_VMODE_NONINTERLACED | FB_VMODE_ASPECT_4_3, FB_MODE_IS_VESA,
+ NULL, 60, 1280, 720, 13468, 220, 110, 20, 5, 40, 5, 0,
+ FB_VMODE_NONINTERLACED | FB_VMODE_ASPECT_16_9, FB_MODE_IS_VESA,
};

enum hdmi_datamap {

Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux