Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Embedded Linux
Донастройка параметров фреймбуфера при старте системы
arsterm_boris
Добавлено 27.07.2018 12:34
0
Сообщение: 1
arsterm_boris
0

Пункты: 316
Регистрация: 16.07.2018
Пол: Мужчина
Из: Новосибирск
Здравствуйте, уважаемые знатоки!
Есть процессорный модуль SK-iMX6S(D)-OEM, отладочная плата
SK-iMX6/53/50-MB, граф. панель SK-TFT1024X768(TP) на втором видеовыходе.
Установлен линукс, ядро 4.1.15, buildroot-2017.08-sk
Всё работает, но нужно на первый видеовыход подключить вторую
панель типа MI1040GT-1 с размерностью 800х600. Физически она
подсоединилась, программный интерфейс /dev/fb0 имеется, изображение есть, рекомендованные "заклинания" по настройке геометрии помогли, но изображение после загрузки появляется в размере 800х480. Нижняя
часть экрана от строк 480 до 600 повторяет верхнюю, строки 0 - 100
и чёрную полосу.
Система на подачу команды fbset -s -fb /dev/fb0 отвечает
mode "800x480-57"
# D: 33.000 MHz, H: 29.464 kHz, V: 56.881 Hz
geometry 800 480 800 1800 16
timings 30303 220 40 21 7 60 10
accel false
rgba 5/11,6/5,5/0,0/0
endmode
Если в терминале дать команду fbset -yres 600 -fb /dev/fb0
изображение тут же вписывается в экран правильно.
Как теперь сделать, чтобы эта команда запускалась автоматически
при каждой загрузке? Файл /etc/rc.local, куда можно было бы вписать
эту команду, не действует.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 27.07.2018 21:02 Сообщение: 2
sasamy
4.71

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

изображение есть, рекомендованные "заклинания" по настройке геометрии помогли, но изображение после загрузки появляется в размере 800х480


значит неправильно или не все прописали - разрешение устанавливается в параметрах панели
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 30.07.2018 10:28 Сообщение: 3
sasamy
4.71

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

значит неправильно или не все прописали - разрешение устанавливается в параметрах панели


еще возможный вариант - вы прописали параметры в рабочем каталоге ядра

buildroot-2017.08-sk/output/build/linux-custom/arch/arm/boot/dts/imx6qdl-lvds-1024x768-800x480.dtsi

как я вам советовал тут

http://www.starterkit.ru/html/index.php?name=forum&op=view&id=29419&last#29421

и после этого cделали make clean - рабочие каталоги при этом удаляются, исходники при сборке распаковываются из архивов находящихся в buildroot-2017.08-sk/dl
В общем надо после отладки исправить архив с исходниками или делать патч для ядра и прописать его в конфиге, например как описано тут

http://www.starterkit.ru/html/index.php?name=forum&op=view&id=28554&last#29054
Спуститься к концу Подняться к началу
Персональная информация
arsterm_boris
Добавлено 02.08.2018 18:15 Сообщение: 4
arsterm_boris
0

Пункты: 316
Регистрация: 16.07.2018
Пол: Мужчина
Из: Новосибирск
команда
fbset -yres 600 -fb /dev/fb0
прекрасно запускается из /etc/inittab, проблему устраняет, пока не буду разбираться, почему не получаются нужные параметры "изкоробки".
Файл с исправлением
buildroot*/output/build/linux-custom/arch/arm/boot/dts/imx6qdl-lvds-1024x768-800x480.dtsi
после сборки целевой флешки остаётся на месте, никто его не заменяет, но система при загрузке знает только горизонтальный заказанный размер, а вертикальный игнорирует.
Спуститься к концу Подняться к началу
Персональная информация
arsterm_boris
Добавлено 02.08.2018 18:33 Сообщение: 5
arsterm_boris
0

Пункты: 316
Регистрация: 16.07.2018
Пол: Мужчина
Из: Новосибирск
Есть очень важный вопрос, ответ на который никак не нагугливается. У дисплея нет линии LVDS D3, или I3, только линии 0, 1 и 2. Нужно контроллер ввести в формат мапинга цветов "jeida", чтобы биты яркости, теряющиеся от отсутствия линии 3, были не старшими, а младшими, тогда цвета будут близки к естественным. Никак не удаётся уговорить dtsi - файл. Пишу туда заклинание
lvds-channel@0 {
fsl,data-mapping = "jeida";
-не слушается, на экране "игрушки" получаются картинки с дикообразными цветами, точно так же, как с заклинанием data-mapping = "spwg"
Что делать?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 02.08.2018 21:49 Сообщение: 6
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
Цитата
У дисплея нет линии LVDS D3, или I3, только линии 0, 1 и 2. Нужно контроллер ввести в формат мапинга цветов "jeida"


в даташите на ваш дисплей описан формат spwg

https://www.displayfuture.com/Display/datasheet/TFT/MI1040GT-1.pdf

https://community.nxp.com/thread/334575#comment-451737

Цитата

получаются картинки с дикообразными цветами


потому что вы не исправили тип интерфейса - вместо 18 бит контроллер использует 24 бита (4 пары LVDS)

Цитата

Никак не удаётся уговорить dtsi - файл. Пишу туда заклинание
lvds-channel@0 {
fsl,data-mapping = "jeida";
-не слушается


потому исправляете dtsi не для тех экранов которые выбираете потом в меню
Спуститься к концу Подняться к началу
Персональная информация
arsterm_boris
Добавлено 03.08.2018 05:19 Сообщение: 7
arsterm_boris
0

Пункты: 316
Регистрация: 16.07.2018
Пол: Мужчина
Из: Новосибирск
Как узнать, какие экраны "те" и какой файл курочить?
Непонятно, почему выбор вариантов в make menuconfig более чем скромненький, а dtsi файлов, которые могут потом "напакостить" - воз и маленькая тележка.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 03.08.2018 10:10 Редактировалось 03.08.2018 11:21 Сообщение: 8
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
Цитата
Как узнать, какие экраны "те" и какой файл курочить?


четыре файла

imx6qdl-lvds-1024x768-1024x768.dtsi
imx6qdl-lvds-800x480-1024x768.dtsi
imx6qdl-lvds-1024x768-800x480.dtsi
imx6qdl-lvds-800x480-800x480.dtsi

комбинации из двух дисплеев в зависисмости от того какой дисплей на LVDS0 а какой на LVDS1. В меню два параметра - fb0 и fb1 (в /dev это fb2)

fb0 mode (ldb,LDB-XGA) --->
fb1 mode (ldb,LDB-XGA) --->

подставляется imx6qdl-lvds-1024x768-1024x768.dtsi

так же он используется если будет выбран один из fb (ldb,LDB-XGA) а второй HDMI или LCD

Аналогично используется imx6qdl-lvds-800x480-800x480.dtsi только при выборе в меню (ldb,SK-ATM0704)

Файлы
imx6qdl-lvds-800x480-1024x768.dtsi
imx6qdl-lvds-1024x768-800x480.dtsi (пример есть в ответе на ваш первый вопрос http://www.starterkit.ru/html/index.php?name=forum&op=view&id=29419&last#29421)

используются при выборе двух LVDS с разным разрешением.

Подстановка делается перед компиляцией DTS в файле buildroot-2017.08-sk/linux/linux.mk

define LINUX_BUILD_CMDS
...
$(SED) 's/^.*imx6qdl-lvds.*$$/#include "$(call qstrip,$(BR2_TARGET_KERNEL_LVDS))"/g' $(KERNEL_ARCH_PATH)/boot/dts/imx6qdl*.dtsi

$(LINUX_BUILD_DTB)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 03.08.2018 10:22 Редактировалось 03.08.2018 10:23 Сообщение: 9
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
Если ничего непонятно но делать что-то надо - выберите в меню

fb0 mode (ldb,LDB-XGA) --->
fb1 mode (ldb,LDB-XGA) --->

и исправляйте файл

imx6qdl-lvds-1024x768-1024x768.dtsi

он же используется по умолчанию если в ядре ничего не править и собирать ядро отдельно от buildroot

linux_imx_4.1.15_2.1.0_ga-sk/arch/arm/boot/dts/imx6qdl-oem.dtsi

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "imx6qdl-lvds-1024x768-1024x768.dtsi"
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 03.08.2018 10:56 Сообщение: 10
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
Тип интерфейса LVDS

24 бита 4 пары (if=RGB24)
18 бит 3 пары (if=RGB666)

передается загрузчиком через командную строку ядра - она имеет приоритет перед параметрами в DTS. Я вам уже приводил пример

http://www.starterkit.ru/html/index.php?name=forum&op=view&id=29419&last#29421

этот параметр можно изменить в файле
buildroot-2017.08-sk/boot/uboot/Config.in

для LVDS панелей на fb0

config BR2_TARGET_UBOOT_FB0

default "video=mxcfb0:dev=ldb,if=RGB24" if BR2_PACKAGE_FB0_LBD_LDB_XGA
default "video=mxcfb0:dev=ldb,if=RGB24" if BR2_PACKAGE_FB0_LDB_SK_ATM0704


для LVDS панелей на fb1

config BR2_TARGET_UBOOT_FB1

default "video=mxcfb1:dev=ldb,if=RGB24" if BR2_PACKAGE_FB1_LBD_LDB_XGA
default "video=mxcfb1:dev=ldb,if=RGB24" if BR2_PACKAGE_FB1_LDB_SK_ATM0704
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux