Ник:
Пароль:

Контакты

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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Embedded Linux
Panic при использовании qt gui
Romantic
Добавлено 23.10.2014 09:25
0
Сообщение: 1
Romantic
3

Пункты: 2214
Регистрация: 20.11.2009
Пол: Мужчина
Здравствуйте. У меня возникла проблема при запуске приложения Qt gui. При запуске приложения из-под рута ядро падает в панику с сообщением и попытке убиения init.
Цитата
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004

CPU: 0 PID: 1 Comm: init Not tainted 3.16.1 #3
[<c000d5d8>] (unwind_backtrace) from [<c000bd20>] (show_stack+0x10/0x14)
[<c000bd20>] (show_stack) from [<c0267ab4>] (panic+0x78/0x1d0)
[<c0267ab4>] (panic) from [<c0016364>] (do_exit+0x378/0x75c)
[<c0016364>] (do_exit) from [<c0017408>] (do_group_exit+0x4c/0xb0)
[<c0017408>] (do_group_exit) from [<c0020498>] (get_signal_to_deliver+0x424/0x474)
[<c0020498>] (get_signal_to_deliver) from [<c000b45c>] (do_signal+0xa8/0x3a0)
[<c000b45c>] (do_signal) from [<c000b8a4>] (do_work_pending+0x5c/0xe0)
[<c000b8a4>] (do_work_pending) from [<c00095dc>] (work_pending+0xc/0x20)
---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004

При запуске из-под пользователя с ограниченными правами - segmentation с зависанием системы.

Причем приложения qt, не использующие gui, работают нормально. Подозреваю, что что-то неправильно в настройке framebuffer либо в ядре, либо в qt. Проблема повторяется для разных версий qt 4 и 5.

В ядре в DTS настроен framebuffer:
Цитата
fb0: fb@0x00500000 {
display = <&display0>;
status = "okay";

display0: display {
bits-per-pixel = <32>;
atmel,lcdcon-backlight;
atmel,dmacon = <0x1>;
atmel,lcdcon2 = <0x80008002>;
atmel,guard-time = <9>;
atmel,lcd-wiring-mode = "RGB";

display-timings {
native-mode = <&timing0>;
timing0: timing0 {
clock-frequency = <9000000>;
hactive = <480>;
vactive = <272>;
hback-porch = <2>;
hfront-porch = <2>;
vback-porch = <22>;
vfront-porch = <0>;
hsync-len = <48>;
vsync-len = <16>;
};
};
};
};


В конфигурации qt в билдруте включена поддержка linux framebuffer.

Ядро 3.16.1 для at91sam9 с поддержкой dts
Цитата
#
# Other GUIs
#
# BR2_PACKAGE_EFL is not set
BR2_PACKAGE_QT=y
BR2_PACKAGE_QT_DEBUG=y
BR2_PACKAGE_QT_DEMOS=y
# BR2_PACKAGE_QT_TRANSLATION_FILES is not set
BR2_PACKAGE_QT_EXAMPLES=y
BR2_PACKAGE_QT_SHARED=y
# BR2_PACKAGE_QT_STATIC is not set
BR2_PACKAGE_QT_LICENSE_APPROVED=y
BR2_PACKAGE_QT_CONFIG_FILE=""
# BR2_PACKAGE_QT_QT3SUPPORT is not set
BR2_PACKAGE_QT_GUI_MODULE=y

#
# Pixel depths
#

#
# Deselecting each option leads to Qt's default (8,16,32)
#
# BR2_PACKAGE_QT_PIXEL_DEPTH_1 is not set
# BR2_PACKAGE_QT_PIXEL_DEPTH_4 is not set
BR2_PACKAGE_QT_PIXEL_DEPTH_8=y
# BR2_PACKAGE_QT_PIXEL_DEPTH_12 is not set
# BR2_PACKAGE_QT_PIXEL_DEPTH_15 is not set
BR2_PACKAGE_QT_PIXEL_DEPTH_16=y
# BR2_PACKAGE_QT_PIXEL_DEPTH_18 is not set
BR2_PACKAGE_QT_PIXEL_DEPTH_24=y
BR2_PACKAGE_QT_PIXEL_DEPTH_32=y

#
# Fonts
#
BR2_PACKAGE_QT_FONT_MICRO=y
BR2_PACKAGE_QT_FONT_FIXED=y
BR2_PACKAGE_QT_FONT_HELVETICA=y
# BR2_PACKAGE_QT_FONT_JAPANESE is not set
# BR2_PACKAGE_QT_FONT_UNIFONT is not set
BR2_PACKAGE_QT_NOFREETYPE=y
# BR2_PACKAGE_QT_QTFREETYPE is not set
# BR2_PACKAGE_QT_SYSTEMFREETYPE is not set
# BR2_PACKAGE_QT_GIF is not set
# BR2_PACKAGE_QT_LIBMNG is not set
BR2_PACKAGE_QT_NOJPEG=y
# BR2_PACKAGE_QT_SYSTEMJPEG is not set
# BR2_PACKAGE_QT_QTJPEG is not set
BR2_PACKAGE_QT_NOPNG=y
# BR2_PACKAGE_QT_SYSTEMPNG is not set
# BR2_PACKAGE_QT_QTPNG is not set
BR2_PACKAGE_QT_NOTIFF=y
# BR2_PACKAGE_QT_SYSTEMTIFF is not set
# BR2_PACKAGE_QT_QTTIFF is not set
BR2_PACKAGE_QT_QTZLIB=y
# BR2_PACKAGE_QT_SYSTEMZLIB is not set
# BR2_PACKAGE_QT_SQL_MODULE is not set

#
# Graphics drivers
#
BR2_PACKAGE_QT_GFX_LINUXFB=y
# BR2_PACKAGE_QT_GFX_TRANSFORMED is not set
BR2_PACKAGE_QT_GFX_QVFB=y
# BR2_PACKAGE_QT_GFX_VNC is not set
# BR2_PACKAGE_QT_GFX_MULTISCREEN is not set

#
# directfb Qt driver not available (need directfb)
#

#
# Mouse drivers
#
# BR2_PACKAGE_QT_MOUSE_PC is not set
# BR2_PACKAGE_QT_MOUSE_LINUXTP is not set
BR2_PACKAGE_QT_MOUSE_LINUXINPUT=y
# BR2_PACKAGE_QT_MOUSE_TSLIB is not set
# BR2_PACKAGE_QT_MOUSE_QVFB is not set

#
# Mouse Options
#
# BR2_PACKAGE_QT_MOUSE_NO_QWS_CURSOR is not set

#
# Keyboard drivers
#
# BR2_PACKAGE_QT_KEYBOARD_TTY is not set
BR2_PACKAGE_QT_KEYBOARD_LINUXINPUT=y
# BR2_PACKAGE_QT_KEYBOARD_QVFB is not set

#
# Phonon module needs gstreamer
#
# BR2_PACKAGE_QT_DBUS is not set
BR2_PACKAGE_QT_XML=y
# BR2_PACKAGE_QT_XMLPATTERNS is not set
# BR2_PACKAGE_QT_MULTIMEDIA is not set
# BR2_PACKAGE_QT_SVG is not set
BR2_PACKAGE_QT_NETWORK=y
BR2_PACKAGE_QT_ARCH_SUPPORTS_WEBKIT=y
# BR2_PACKAGE_QT_WEBKIT is not set
# BR2_PACKAGE_QT_STL is not set
# BR2_PACKAGE_QT_OPENSSL is not set
BR2_PACKAGE_QT_SCRIPT=y
# BR2_PACKAGE_QT_SCRIPTTOOLS is not set
# BR2_PACKAGE_QT_DECLARATIVE is not set
# BR2_PACKAGE_QT_TEST is not set

#
# QT libraries and helper libraries
#
# BR2_PACKAGE_GRANTLEE is not set
# BR2_PACKAGE_QEXTSERIALPORT is not set
# BR2_PACKAGE_QJSON is not set
# BR2_PACKAGE_QTUIO is not set
# BR2_PACKAGE_QWT is not set
BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y


В пользу правильной настройки в ядре говорит наличие пингвина на экране с начала загрузки ядра, он и не пропадает никуда при запуске приложения qt.

Если не трудно, проверьте, пожалуйста, конфиги, наверняка я где-то лажанулся.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.10.2014 09:43 Сообщение: 2
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
после загрузки платы проверьте, что у вас либы собрались и лежат на плате и путь до них прописан..

например у меня это выглядит так:
Код
PATH=/usr/local/Trolltech/QtEmbedded-4.8.1-arm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

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

Пункты: 2214
Регистрация: 20.11.2009
Пол: Мужчина
[quote]после загрузки платы проверьте, что у вас либы собрались и лежат на плате и путь до них прописан..

например у меня это выглядит так:
Код
PATH=/usr/local/Trolltech/QtEmbedded-4.8.1-arm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[/quote]

Они лежат все в /usr/lib - libQtGui.so, libQtCore.so и т.д. Обнаруживаются, иначе бы runtime сообщение выдал об отсутствующей либе
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.10.2014 12:38 Редактировалось 23.10.2014 12:39 Сообщение: 4
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
а как выглядит ваша строка запуска?

я свои аппликухи запускаю
./myapp -qws
попробуйте еще что-то типа
./myapp -platform linuxfb:fb=”/dev/fb0"

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

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

а как выглядит ваша строка запуска?

я свои аппликухи запускаю
./myapp -qws
попробуйте еще что-то типа
./myapp -platform linuxfb:fb=”/dev/fb0"


Я тоже так же. Попробовал -platform linuxfb:fb=”/dev/fb0" - результат тот же.
Спуститься к концу Подняться к началу
Персональная информация
Romantic
Добавлено 23.10.2014 13:20 Сообщение: 6
Romantic
3

Пункты: 2214
Регистрация: 20.11.2009
Пол: Мужчина
А вот наличие пингвина на загрузке гарантирует правильную настройку фреймбуфера в ядре? Можно из этого сделать вывод, что ядро в порядке, а проблема в qt?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.10.2014 13:45 Сообщение: 7
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
А вот наличие пингвина на загрузке гарантирует правильную настройку фреймбуфера в ядре? Можно из этого сделать вывод, что ядро в порядке, а проблема в qt?

в принципе да. есть пингвин->графика работает
для очистки совести в билдруте поищите поддержку утилиты fbi или аналога (графический вьювер) - если он выведет любую стандартную картинку, то графика исправна.

кстати, для qt5 похоже поменяли ключ запуска
http://qt-project.org/forums/viewthread/46640/
а вот тут доставляли отсуствующий плугин поддержки linuxfb
http://qt-project.org/forums/viewthread/31060/P15

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 23.10.2014 13:46 Сообщение: 8
sasamy
4.70

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

Можно из этого сделать вывод, что ядро в порядке


да

Цитата

а проблема в qt?


нет :) вы странным образом полностью исключаете возможность того что вы в чем-то ошиблись. Покажите содержимое /etc/inittab платы.
Спуститься к концу Подняться к началу
Персональная информация
Romantic
Добавлено 23.10.2014 14:55 Сообщение: 9
Romantic
3

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

нет :) вы странным образом полностью исключаете возможность того что вы в чем-то ошиблись. Покажите содержимое /etc/inittab платы.


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

Цитата

# /etc/inittab
#
# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
#
# Note: BusyBox init doesn't support runlevels. The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use
# sysvinit.
#
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# id == tty to run on, or empty for /dev/console
# runlevels == ignored
# action == one of sysinit, respawn, askfirst, wait, and once
# process == program to run

# Startup the system
null::sysinit:/bin/mount -t proc proc /proc
#null::sysinit:/bin/mount -o remount,rw / # REMOUNT_ROOTFS_RW
null::sysinit:/bin/mkdir -p /dev/pts
null::sysinit:/bin/mkdir -p /dev/shm
null::sysinit:/bin/mount -a
null::sysinit:/bin/hostname -F /etc/hostname
# now run any rc scripts
::sysinit:/etc/init.d/rcS

# Put a getty on the serial port
ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL

# Stuff to do for the 3-finger salute
::ctrlaltdel:/sbin/reboot

# Stuff to do before rebooting
null::shutdown:/etc/init.d/rcK
null::shutdown:/bin/umount -a -r
null::shutdown:/sbin/swapoff -a
Спуститься к концу Подняться к началу
Персональная информация
Romantic
Добавлено 23.10.2014 16:34 Сообщение: 10
Romantic
3

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

в принципе да. есть пингвин->графика работает
для очистки совести в билдруте поищите поддержку утилиты fbi или аналога (графический вьювер) - если он выведет любую стандартную картинку, то графика исправна.


Спасибо за совет. Собрал просмотровщик - работает отлично. И еще утилитку тестирования fb_test собрал и проверил - все отлично.

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