Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
buildroot-2015.08 на базе ядра 3.14.14 для i.mx6
sasamy
Добавлено 22.03.2016 09:27 Сообщение: 31
sasamy
4.70

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

дисплей MI0570
linux-3.14-sr-ea83bda-sk/drivers/video/mxc/mxc_lcdif.c

Если я правильно понял, дисплей в
output/build/linux-custom/drivers/video/mxc/mxc_lcdif.c


и там тоже но я бы не советовал исправлять в сборочной среде - make clean и все наработки пропадут безвозвратно.
Спуститься к концу Подняться к началу
Персональная информация
alekstr
Добавлено 25.03.2016 08:18 Редактировалось 25.03.2016 08:21 Сообщение: 32
alekstr
0

Пункты: 1244
Регистрация: 20.10.2011
Пол: Мужчина
Цитата

дисплей MI0570
linux-3.14-sr-ea83bda-sk/drivers/video/mxc/mxc_lcdif.c

Добавил свой дисплей из старой сборки:
Код

{
static struct fb_videomode lcdif_modedb[] = {
...
...
...
{
"MI0570", 60, 640, 480, KHZ2PICOS(25175), 114, 16, 32, 10, 30, 3,
FB_SYNC_CLK_LAT_FALL,
FB_VMODE_NONINTERLACED,
0,},
};

и установил параметр, передаваемый ядру:
Код
setenv video = 'mxcfb0:dev=lcd,MI0570,if=RGB24 video=mxcfb1:dev=ldb,LDB-XGA,if=RGB24 consoleblank=0'

Экран почему-то получился 1024x768, проверял запуском приложения Qt:
Код

.showFullScreen();
qDebug() << app.activeWindow()->width() << app.activeWindow()->height();

Может еще где-то, кроме этой структуры, надо добавить?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 25.03.2016 08:39 Редактировалось 25.03.2016 08:50 Сообщение: 33
sasamy
4.70

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

установил параметр, передаваемый ядру:


у вас там ошибка вот и не работает, сделайте так

setenv video 'video=mxcfb0:dev=lcd,MI0570,if=RGB24 video=mxcfb1:dev=ldb,LDB-XGA,if=RGB24 consoleblank=0'

и не забывайте saveenv после этого иначе параметры не сохранятся

Можно еще buildroot подправить под свой дисплей - так проще наверно

buildroot-2015.08-sk/boot/uboot/Config.in

подмените там например местный дисплей SK-MI0430

config BR2_TARGET_UBOOT_FB0

....

default "video=mxcfb0:dev=lcd,MI0570,if=RGB24" if BR2_PACKAGE_FB0_LCD_SK_MI0430

и в menuconfig выберите

fb0 mode (lcd,SK-MI0430) --->

./uboot_rebuild.sh
Спуститься к концу Подняться к началу
Персональная информация
std_logic
Добавлено 26.04.2016 17:47 Редактировалось 26.04.2016 17:47 Сообщение: 34
std_logic
0

Пункты: 1133
Регистрация: 09.10.2012
Не подскажете по какой причине драйвер ADV7180 используется непатченный? Хотел каналы видеозахвата попереключать как в сборке 3.10.17, но вижу между тем и этим драйвером сильные различия по этому функционалу.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 26.04.2016 18:30 Редактировалось 26.04.2016 18:31 Сообщение: 35
sasamy
4.70

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

Не подскажете по какой причине драйвер ADV7180 используется непатченный?


1 Каналы можно переключать используя i2c-tools

http://trac.gateworks.com/wiki/Yocto/Video_In#AnalogVideoInputSource

только учитывать что на местных плагах другой корпус

2 Для параллельного захвата есть tw6869
3 Драйверы IPU и adv7180 постоянно изменяются и просто так старый патч не ляжет на новое ядро
4 Есть BSP с ядром 3.10.17 где такое переключение работает
Спуститься к концу Подняться к началу
Персональная информация
std_logic
Добавлено 27.04.2016 18:17 Сообщение: 36
std_logic
0

Пункты: 1133
Регистрация: 09.10.2012
Может чего недосмотрел, но возникла еще проблема с gpio: скопировал из ядра 3.10.17 (с которым все работало) dtsi файлик с конфигурацией платы. В нем определен ряд gpio. В системе через sysfs настраиваю их:

echo 42 > /sys/class/gpio/export

В /sys/class/gpio появляется соответствующий каталог gpio42. Настраиваю на выход и пытаюсь выдать на него 1:

echo out > /sys/class/gpio42/direction
echo 1 > /sys/class/gpio42/value

Направление пина меняется на out, но физического изменения напряжения на плате не видно. То же самое со всеми остальными пинами.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 28.04.2016 15:35 Редактировалось 28.04.2016 15:36 Сообщение: 37
sasamy
4.70

Пункты: 77159
Регистрация: 14.08.2009
Я проверял - у меня работает.

Цитата

echo out > /sys/class/gpio42/direction
echo 1 > /sys/class/gpio42/value


должно быть

Цитата

echo out > /sys/class/gpio/gpio42/direction
echo 1 > /sys/class/gpio/gpio42/value


gpio42 - это gpio2_io10
MX6QDL_PAD_SD4_DAT2__GPIO2_IO10

если про sodimm речь, это PWM1, на материнке разъем X5 пин 38

общая формула:
linux gpio number = (gpio_bank - 1) * 32 + gpio_bit

GPIO2_IO10:
(2 - 1) * 32 + 10 = 42
Спуститься к концу Подняться к началу
Персональная информация
std_logic
Добавлено 29.04.2016 00:02 Сообщение: 38
std_logic
0

Пункты: 1133
Регистрация: 09.10.2012
Заработало, моя ошибка оказалась более комплексной: я скопировал исправленный ранее под себя *.dts файл настроек из ядра 3.10.17, но в чем-то он оказался несовместим с новым ядром. Теперь я перенес из старого файла в новый только конфигурацию gpio, так все работает.
Спуститься к концу Подняться к началу
Персональная информация
std_logic
Добавлено 29.04.2016 14:32 Редактировалось 29.04.2016 14:34 Сообщение: 39
std_logic
0

Пункты: 1133
Регистрация: 09.10.2012
До кучи еще одна вещь, которая на 3.10.17 и 3.14.14 у меня заработала по разному:
Вывожу изображение с камеры поверх приложения qt. Изображение должно занимать только часть экрана и быть зеркально развернуто, единственный способ который для этого нашел - формировать свой pipeline с помощью gst-launch и выводить изображение в оверлей /dev/fb1.

На 3.10.17 использовалась команда наподобие:
gst-launch tvsrc ! mfw_v4lsink disp_width=300 disp_height=200 axis-left=100 axis-top=100
Изображение выводилось как и требовалось - поверх приложения.

На 3.14.14 использую:
gst-launch-1.0 imxv4l2videosrc ! imxg2dvideosink window-width=300 window-height=200 window-x-coord=100 window-y-coord=100 framebuffer=/dev/fb1
Плюс вручную настраиваю фреймбуфер:
echo 0 > /sys/class/graphics/fb1/blank
fbset -fb /dev/fb1 1024 768 1024 768 16
Фреймбуфер при этом появляется полупрозрачным. Читал что через ioctl его прозрачность можно регулировать, но как я понял, если сделать его полностью прозрачным, не будет видно то, что выводиться на нем, а если сделать полностью непрозрачным - не будет видно заднего фона.

Короче говоря, не пойму - возможно ли на данном линуксе с новым gstreamer'ом вывести изображение подобному тому, как было ранее - только на часть экрана без прозрачности?
Спуститься к концу Подняться к началу
Персональная информация
std_logic
Добавлено 29.04.2016 20:48 Сообщение: 40
std_logic
0

Пункты: 1133
Регистрация: 09.10.2012
И сам себе отвечу: через ioctl можно реализовать сдвиг фреймбуфера в нужную точку экрана и уровень его прозрачности, через fbset можно настроить его размер, и таким образом получить оверлей на произвольную прямоугольную область экрана.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux