Ник:
Пароль:

Контакты

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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
Panic при использовании qt gui
Romantic
Добавлено 27.10.2014 21:28 Редактировалось 27.10.2014 21:50 Сообщение: 21
Romantic
3

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

как резюме - бинарь для платформы исправен. значит где-то ошибка в потрохах QT..

Нет, раз статический бинарь запускается, значит и в потрохах Qt все нормально, там же все вкомпилено вплоть до кода взаимодействия с фрейм-буфером.

Я еще попробовал старый испытанный билдрут с qt 4.6 скомпилять и там тоже програмы с ГУИ не запускаются.

Причем, вид ошибки - вообще нетипичен для userspace.
Похоже, проблема в ядре 3.16, которое я использую и которое доводил с помощью device tree скрипта описания платы.

Получается, что фрейм-буфер как таковой работает (утилитами проверено) - может быть, проблема во взаимодействии Qt и framebuffer, либо в каком-нибудь другом драйвере устройств, например, /dev/input?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 27.10.2014 22:15 Редактировалось 27.10.2014 22:16 Сообщение: 22
sasamy
4.70

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

Получается, что фрейм-буфер как таковой работает (утилитами проверено) - может быть, проблема во взаимодействии Qt и framebuffer,


а вы каким кросскомпилятором собираете ? у меня была когда-то похожая проблема на ядре 3.9 с i.mx53 - не работал mplayer на фреймбуфере, я тогда не стал разбираться - не до него было, подумал драйвер "сырой", а сейчас не могу вспомнить - каким компилятором собирал. В общем если компилятор старый - попробуйте собрать прямо в буидруте его с заголовками ядра той же версии что и рабочее ваше - 3.16, там это можно указать явно

Цитата

либо в каком-нибудь другом драйвере устройств, например, /dev/input?


на это тоже подумал - попросил inittab, думал конфликт с getty, но у вас нет getty на tty1.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 27.10.2014 22:36 Сообщение: 23
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Получается, что фрейм-буфер как таковой работает (утилитами проверено) - может быть, проблема во взаимодействии Qt и framebuffer, либо в каком-нибудь другом драйвере устройств, например, /dev/input?

предыдущий раз запускал на платформе am3359 (ti sitara) fb 320x240-16bpp. сейчас попробовал на atmel 9g45 fb 800x600-16bpp - все запускается и показывает..
все, что могу посоветовать еще попробовать поиграть числом цветов при запуске приложения или поискать, как включить вывод отладки - может предсмертный дебаг принесет ответ о незапуске..
ключей, увы, не помню - находил гуглем..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Romantic
Добавлено 28.10.2014 00:48 Сообщение: 24
Romantic
3

Пункты: 2214
Регистрация: 20.11.2009
Пол: Мужчина
Цитата
а вы каким кросскомпилятором собираете ? у меня была когда-то похожая проблема на ядре 3.9 с i.mx53 - не работал mplayer на фреймбуфере, я тогда не стал разбираться - не до него было, подумал драйвер "сырой", а сейчас не могу вспомнить - каким компилятором собирал. В общем если компилятор старый - попробуйте собрать прямо в буидруте его с заголовками ядра той же версии что и рабочее ваше - 3.16, там это можно указать явно


Я собираю предустановленым тулчейном от code sourcery arm-2013.11 А вот на какую версию заголовков ядра он рассчитан - не знаю. Но если не совпадают - это реальная причина таких проблем? Ядро-то я собираю им же.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 28.10.2014 10:10 Редактировалось 28.10.2014 10:12 Сообщение: 25
sasamy
4.70

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

на какую версию заголовков ядра он рассчитан - не знаю


3.11

Цитата

Но если не совпадают - это реальная причина таких проблем?


просто я болььше не представляю на что еще думать :) работает консольный вариант и графический на других процессорах - мысли три:
1 баг в атмеловском драйвере фреймбуфера
2 нехватка RAM (легко проверить включив в ядре поддержку swap и подключив его)
3 проблемы с компилятором. Юзерспейс в общем случае должен быть собран компилятором с заголовками ядра на котором будет работать - так делают все дистрибутивы, но в ядре очень редко меняется базовый API поэтому часто используют одну сборку с разными ядрами. Единственный раз я напоролся на несовместимость где-то в районе версии ядра 2.6.38 - не работала tslib если собрать старым компилятором, так что исключить такой вариант в вашем случае нельзя.
Спуститься к концу Подняться к началу
Персональная информация
Romantic
Добавлено 28.10.2014 12:00 Сообщение: 26
Romantic
3

Пункты: 2214
Регистрация: 20.11.2009
Пол: Мужчина
Попробую пересобрать с билдрутовским тулчейном, может, получится
Вообще у меня по симптомам складывается впечатление, что это повреждение памяти. Например, первый запуск программы завершается с сообщением segmentation fault, второй раз не запускается вообще, выводя сообщение об ошибке загрузки libgcc.so (формат файла не elf). Типа повреждения кэша корневой фс в памяти. Правда, против переполнения говорит то, что cat /proc/meminfo показывает 55+ мег свободной памяти, этого должно хватать для запуска программы с qt без отладки.

Кроме 3.16 перепробовал ту же rootfs с ядром 3.14 - результат аналогичный. Похоже, от версии ядра зависит не явно. И потом все-таки фрейм-буфер успешно тестируется другими программами, так что все-таки qt.

Еще попробую своп подключить
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 28.10.2014 13:32 Сообщение: 27
sasamy
4.70

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

Вообще у меня по симптомам складывается впечатление, что это повреждение памяти.


Это вот упустил из вида - у вас же своя плата, в первую очередь тогда проверьте тестом memtester (есть в буилдруте) - хотя бы на несколько часов запустите, если есть ошибки памяти - странные баги будут преследовать на каждом шагу :)

-> Target packages
-> Hardware handling
[*] memtester
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 28.10.2014 13:42 Сообщение: 28
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
config.status qt (qt-4.8.6)

на мой взгляд не хватает ключа -platform
я, когда разбирался с powervr, конфигурил qt под am3359 и там фигурировали:
Код
-platform qws/linux-x86-g++ -xplatform qws/linux-TIarmv7-sgx-g++

что там в вашем случае может потребоваться - не знаю

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Romantic
Добавлено 28.10.2014 14:03 Сообщение: 29
Romantic
3

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

Это вот упустил из вида - у вас же своя плата, в первую очередь тогда проверьте тестом memtester (есть в буилдруте) - хотя бы на несколько часов запустите, если есть ошибки памяти - странные баги будут преследовать на каждом шагу :)

-> Target packages
-> Hardware handling
[*] memtester


Сейчас я на sk-at91sam9g45-xc6slx макетирую, все стандартно. А повреждение памяти - я имел в виду нарушение целостности данных в блоках памяти, выделенной ядром или юзерспейсом. Но за подсказку спасибо, надо будет попробовать.
Спуститься к концу Подняться к началу
Персональная информация
Romantic
Добавлено 28.10.2014 14:14 Сообщение: 30
Romantic
3

Пункты: 2214
Регистрация: 20.11.2009
Пол: Мужчина
Пересобрал весь рутфс билдрутовским тулчейном - та же фигня. Segmentation fault.

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