ЗАО «ЗЭО»

Техническая поддержка пользователей => ОС Linux, U-Boot => Тема начата: kapa77 от 24 Мая, 2010, 03:11:55

Название: QT4 и Тион-Про
Отправлено: kapa77 от 24 Мая, 2010, 03:11:55
Здравствуйте!

Потихоньку разбираюсь с Тионом и Qt. Накопилось пару вопросов, в которые хотелось бы внести ясность:

1) После компилиции приложения и переносе его на Тион, что еще необходимо установить или настроить, чтобы оно запустилось?

2) Что необходимо сделать в Тионе и при сборке Qt, чтобы была возможность работы с тачскрином и с помощью мыши? Насколько я понял, при сборке нужно подключать как-то библиотеку tslib. Я прав?

Спасибо!
Название: Re: QT4 и Тион-Про
Отправлено: asv от 24 Мая, 2010, 09:20:21
> работы с тачскрином и с помощью мыши?
tslib/qt-mouse-tslib и qt-mouse-pc


> что еще необходимо установить или настроить, чтобы оно запустилось?

export TSLIB_TSDEVICE=/dev/misc/ep93xx_ts
(сейчас делается в /etc/profile)

./my-qt-prorg  -qws

Это в том случае, если всё правильно.
Название: Re: QT4 и Тион-Про
Отправлено: kapa77 от 24 Мая, 2010, 10:57:34
Т.е никакие Qt-ные библиотеки встраивать не надо в Тион?

При сборке Qt я использовал опцию -static.

А еще еще видел, что вроде бы нужно устанавливать переменные окружения, типа
export QWS_MOUSE_PROTO=TPanel:/dev/misc/ep93xx_ts
export QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mice

Или это лишнее?
Название: Re: QT4 и Тион-Про
Отправлено: asv от 24 Мая, 2010, 12:24:01
Кому как.
Название: Re: QT4 и Тион-Про
Отправлено: kapa77 от 26 Мая, 2010, 00:03:20
Собрал у себя на виртуальной машине в Kubuntu 9.10 библиотеку Qt Embedded 4.6.2
./configure -prefix /home/kapa/Qt -embedded arm -xplatform qws/linux-arm-g++ -v -qvfb -little-endian
-depths 8,16,24 -no-gfx-qvfb -no-gfx-multiscreen -qt-gfx-linuxfb -qt-gif -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype
-no-webkit -no-cups -no-javascript-jit -no-script

Использую компилятор arm-linux-gcc-4.1.1-920t.tar.bz2

Затем собрал простенькое приложение. Залил его на флешку.
Скопировал всю папку Qt на флешку.

Включил Тион-Про. Вставил флешку.

Для отладки, к тиону через переходник подключен обычный 19-дюймовый VGA-монитор.

export QTDIR=/mnt/flash/Qt
export LD_LIBRARY_PATH=$QTDIR/lib
export QWS_DISPLAY=LinuxFb
export QWS_SW_CURSOR=0
export QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mice

/mnt/flash/App/app -qws

Думает пару секунд и выкидывает "Segmentation fault"

Подскажите, пожалуйста, в чем может быть проблема?!
Название: Re: QT4 и Тион-Про
Отправлено: asv от 26 Мая, 2010, 08:25:50
1. Приведите лог сборки вашей программы.
2. Исходный код программы.
Название: Re: QT4 и Тион-Про
Отправлено: faa от 26 Мая, 2010, 12:19:58
Думает пару секунд и выкидывает "Segmentation fault"

Подскажите, пожалуйста, в чем может быть проблема?!
segfault - это скорее всего неявные ошибки в программе.
Соберите QT 4.6.2 под хост-системой и отладьте приложение под ней.
Если все работает - собирайте для Тиона.

ЗЫ: После того, как наши програмеры отладятся на хосте
собираю примерно так (правда QT 4.5.2 - но это не важно):
#!/bin/bash

/home/faa/CRUS/dev/build/qt-embedded-linux-opensource-src-4.5.2/bin/qmake \
        -spec /home/faa/CRUS/dev/build/qt-embedded-linux-opensource-src-4.5.2/mkspecs/qws/linux-arm-g++ \
        -unix \
        -o Makefile.arm proga.pro
make -f Makefile.arm clean
make -f Makefile.arm
Далее кладем proga на nfs и проверяем.
Название: Re: QT4 и Тион-Про
Отправлено: kapa77 от 26 Мая, 2010, 12:34:41
1. Приведите лог сборки вашей программы.
2. Исходный код программы.

Исходный код
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel *label = new QLabel("Hello Qt!");
    label->show();
    return app.exec();

}

Лог
Running build steps for project Hello...
Starting: /home/kapa/Qt-Embedded-arm-2/bin/qmake /home/kapa/Documents/Projects/Hello/Hello.pro -spec /home/kapa/Qt-Embedded-arm-2/mkspecs/qws/linux-arm-g++ -r CONFIG+=debug
Exited with code 0.
Starting: /usr/bin/make -w
make: Entering directory `/home/kapa/Documents/Projects/Hello'
arm-linux-g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I../../../Qt-Embedded-arm-2/mkspecs/qws/linux-arm-g++ -I. -I../../../Qt-Embedded-arm-2/include/QtCore -I../../../Qt-Embedded-arm-2/include/QtNetwork -I../../../Qt-Embedded-arm-2/include/QtGui -I../../../Qt-Embedded-arm-2/include -I. -I. -o hello.o hello.cpp
arm-linux-g++ -Wl,-rpath,/home/kapa/Qt-Embedded-arm-2/lib -o Hello hello.o -L/home/kapa/Qt-Embedded-arm-2/lib -lQtGui -L/home/kapa/Qt-Embedded-arm-2/lib -lQtNetwork -lQtCore -lpthread
make: Leaving directory `/home/kapa/Documents/Projects/Hello'
Exited with code 0.

А здесь не может быть проблема в версии компилятора? Может для данного Тиона нужно использовать другой компилятор?

Название: Re: QT4 и Тион-Про
Отправлено: kapa77 от 26 Мая, 2010, 12:39:52
segfault - это скорее всего неявные ошибки в программе.
Соберите QT 4.6.2 под хост-системой и отладьте приложение под ней.
Если все работает - собирайте для Тиона.

Ну я уже пробовал собирать под хост системой - все в порядке-собирается, запускается.
Потом собираю под АРМ. Увы, не пробовал запустить с помощью виртуального фреймбуфера, так как не удается его скомпилировать.
Название: Re: QT4 и Тион-Про
Отправлено: asv от 26 Мая, 2010, 13:14:37
А здесь не может быть проблема в версии компилятора? Может для данного Тиона нужно использовать другой компилятор?

1. На Тион-Про библиотеки той-же версии, что и в cross-компиляторе и Qt?
2. Если собирать со -static ошибка такая же?
Название: Re: QT4 и Тион-Про
Отправлено: asv от 26 Мая, 2010, 13:20:01
Без -static, попробуйте -ldl
Название: Re: QT4 и Тион-Про
Отправлено: kapa77 от 26 Мая, 2010, 13:48:00
1. На Тион-Про библиотеки той-же версии, что и в cross-компиляторе и Qt?

НА счет библиотек в кросс-компиляторе я не понял. Это как узнать?

После того, как я собрал Qt Embedded, я скопировал всю папку Qt на флешку. При этом подпапка lib копировалась не полностью, так как кидал ошибку, что-то типа не может создать symlink на ряд библиотек, в том числе libQtGui.so.4.  В итоге, папку lib я скопировал на флешку из исходной папки (в которую разархивировал скаченный архив Qt).

Затем на Тионе:
export QTDIR=/mnt/flash/Qt
export LD_LIBRARY_PATH=$QTDIR/lib

2. Если собирать со -static ошибка такая же?

да, ошибка такая же.

Без -static, попробуйте -ldl

это где такую опцию указывать? при запуске прогрммы на Тионе??
/mnt/flash/App # ./app -ldl

та же ошибка
Название: Re: QT4 и Тион-Про
Отправлено: asv от 26 Мая, 2010, 15:04:18
> это где такую опцию указывать? при запуске прогрммы на Тионе??
> /mnt/flash/App # ./app -ldl

Нет, при сборке.

На Тион-Про есть strace? Сделайте так
strace ./app -qws 2>&1 > out.log

Полученные log.out прведите здесь.


> ошибку, что-то типа не может создать symlink на ряд библиотек

На USB-Flash делайте файловую систему ext2 или ext3.

Ваша программа работает на QT из Buildroot, соотв. и комплятор/библиотеки из Buildroot.
Если нужно QT4, я бы использовал Buildroot.
Название: Re: QT4 и Тион-Про
Отправлено: faa от 30 Мая, 2010, 09:57:09

Если нужно QT4, я бы использовал Buildroot.

QT4 к crater тоже прикручивается легко ftp://ftp.ntcsm.ru/pub/tion9315/qtembed.mk (ftp://ftp.ntcsm.ru/pub/tion9315/qtembed.mk).
Ну и config.in-ы подправить надо.
Название: Re: QT4 и Тион-Про
Отправлено: kapa77 от 02 Июня, 2010, 17:11:01
Пока не пробовал использовать Buildroot.

Для начала меня смущает то, что не удается запустить файл, собранный со -static. Насколько я понимаю, при сборке Qt со -static, и последующем билде программы, исполняемому файлу больше ничего не нужно на Тионе? Я прав?

Не может ли все-таки быть, что проблема связана с неправильной установкой переменных окружения??
Я делаю так:
export QTDIR=/mnt/flash/Qt
export LD_LIBRARY_PATH=$QTDIR/lib
export QWS_DISPLAY=LinuxFb
export QWS_SW_CURSOR=0
export QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mice

Без первых двух строк, когда статическое приложение.
Название: Re: QT4 и Тион-Про
Отправлено: asv от 02 Июня, 2010, 17:15:15
Лог strace где?
Название: Re: QT4 и Тион-Про
Отправлено: asv от 02 Июня, 2010, 17:16:10
Лог strace где?


> исполняемому файлу больше ничего не нужно на Тионе? Я прав?

И при --static тоже лог.
Название: Re: QT4 и Тион-Про
Отправлено: kapa77 от 02 Июня, 2010, 17:44:57
К сожалению, strace нету. Поробую поставить и собрать лог
Название: Re: QT4 и Тион-Про
Отправлено: asv от 02 Июня, 2010, 18:13:22
strace есть в этом образе КФС
http://www.zao-zeo.ru/media/files/rootfs/ep93xx/rootfs_crater_svn819mod_tion-pro.jffs2
Название: Re: QT4 и Тион-Про
Отправлено: kapa77 от 06 Июня, 2010, 23:58:55
Т.е. вы предлагаете переустановить Linux на Тион? Я просто никогда такое не делал, так что не могли бы вы чуть пояснить порядок?

Как я понял из документации, мне необходимо поднять TFTP-сервер, с которого впоследствии будут загружены ядро Linux и КФС. Тогда я ядро возьму здесь http://www.zao-zeo.ru/media/files/linux/2.6.20/image/uImage-2.6.20.4_tion_svn278_eabi ?
А образ КФС взять предложенный вами выше (http://www.zao-zeo.ru/media/files/rootfs/ep93xx/rootfs_crater_svn819mod_tion-pro.jffs2)???

Или с этими файлами нужно еще какие то манипуляции произвести?

А Crater-ом, значит, я могу собирать собственные образы ядра и КФС, если мне вдруг понадобится?

Согласно пункту 3.1 "Руководства по программному освоению Тиона" нужно загрузить образ скрипта urefl-linux. Подскажите пожалуйста, где его можно взять?
Название: Re: QT4 и Тион-Про
Отправлено: asv от 07 Июня, 2010, 09:19:15
> вы предлагаете переустановить Linux на Тион?

Это ради strace, поэтому достаточно только КФС. Или я позже отправлю вам на e-mail только strace, вы его сможете скопировать в вашу текушую КФС и он, надеюсь, запуститься.

> А Crater-ом, значит, я могу собирать собственные образы ядра и КФС, если мне вдруг понадобится?

Если вас интересует Qt4, то на Crater вас, пожалуй, ничего не держит. Используйте сразу Buildroot и ядро с EABI.

> Согласно пункту 3.1 "Руководства по программному освоению Тиона" нужно загрузить образ скрипта urefl-linux. Подскажите пожалуйста, где его можно взять?

Не то, чтобы _нужно_, но из них понятен порядок действий.
Ссылка на архив внизу страницы http://www.zao-zeo.ru/dokuwiki/doku.php/u-boot

Название: Re: QT4 и Тион-Про
Отправлено: kapa77 от 07 Июня, 2010, 12:47:10
Это ради strace, поэтому достаточно только КФС. Или я позже отправлю вам на e-mail только strace, вы его сможете скопировать в вашу текушую КФС и он, надеюсь, запуститься

Да, будьте добры! Так будет проще.

И все же, чтоб я понимал - если я захочу перезалить КФС, то этот файл (http://www.zao-zeo.ru/media/files/rootfs/ep93xx/rootfs_crater_svn819mod_tion-pro.jffs2) уже является готовым для заливки образом КФС?

Если вас интересует Qt4, то на Crater вас, пожалуй, ничего не держит. Используйте сразу Buildroot и ядро с EABI.

Хорошо. Посмотрю, попробую.
Название: Re: QT4 и Тион-Про
Отправлено: asv от 07 Июня, 2010, 13:01:21
> И все же, чтоб я понимал - если я захочу перезалить КФС, то этот файл
> (http://www.zao-zeo.ru/media/files/rootfs/ep93xx/rootfs_crater_svn819mod_tion-pro.jffs2) уже является готовым для заливки образом КФС?

Это образ файловой системы JFFS2 с размером стираемого блока соответствующим Flash в Тион-Про (и Тион). Обрабатывать его mkimage'ом смысла нет и делать этого не нужно.

Он записывается в соответствии с
http://zao-zeo.ru/dokuwiki/doku.php/linux#flash
Название: Re: QT4 и Тион-Про
Отправлено: kapa77 от 07 Июня, 2010, 18:10:38
Спасибо. Получил strace. Но что-то не получается вывести все в лог.
Делаю # strace ./undo -qws 2>&1 out.log
Файл создается, но пустой. А все выводится на экран.

Как я понял, при запуске программы, помимо Qt-ных библиотек, программа ищет другие либы, которые я нашел в папке lib крос-компилятора на хост-машине. Я их скопировал на флешку, добавил пути в LD_LIBRARY_PATH, но все равно чего-то не хватает.
Название: Re: QT4 и Тион-Про
Отправлено: asv от 07 Июня, 2010, 18:18:42
strace ./undo -qws 2>&1 >out.log
Название: Re: QT4 и Тион-Про
Отправлено: kapa77 от 07 Июня, 2010, 18:50:18
Прошу прощения, я описался. На самом деле так и запускал, как вы написали, но не помогло. В итоге сделал иначе:
# strace -o HelloStatic.Log ./HelloStatic -qws

Для начала, этот файл HelloStatic, собранный в Qt 4.6.2 с опцией static.

Собранный лог в аттачменте
Название: Re: QT4 и Тион-Про
Отправлено: asv от 07 Июня, 2010, 19:32:52
Попробуйте другую версию Qt (в Buildroot 2010.03 -- Qt 4.5.2)

http://bugreports.qt.nokia.com/browse/QTBUG-8365?page=com.atlassian.jira.plugin.system.issuetabpanels%3Achangehistory-tabpanel
Название: Re: QT4 и Тион-Про
Отправлено: kapa77 от 09 Июня, 2010, 15:12:54
Да, видимо проблема действительно была связана с версией 4.6.2.
В итоге, скачал qt-embedded-linux-opensource-src-4.5.2

Сконфигурировал с опцией static
./configure  -prefix /mnt/usbflash/Qt-4.5.2/Embedded-Arm-Static -embedded arm -xplatform qws/linux-arm-g++ -D__ARM_ARCH_4T__ -depths 8,16,24 -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype -little-endian -no-gfx-qvfb -no-gfx-multiscreen -qt-gfx-linuxfb -no-webkit -no-cups -nomake examples -static -v

Пришлось ставить по такому пути /mnt/usbflash/Qt-4.5.2/Embedded-Arm-Static , т.к. при запуске на Тионе приложение ищет папку fonts по пути указанному в опции -prefix. Потом я записываю папку Qt-4.5.2 на флешку, которую монтирую на Тионе к /mnt/usbflash.

Далее, собираю пример undo из папки demos

# /mnt/usbflash/Qt-4.5.2/Embedded-Arm-Static/bin/qmake ./undo.pro -r -spec /mnt/usbflash/Qt-4.5.2/Embedded-Arm-Static/mkspec/qws/linux-arm-g++/
# make

Выставляю переменные окружения на Тионе
export QWS_DISPLAY=LinuxFb
export QWS_MOUSE_PROTO=IntelluMouse:/dev/input/mice

Затем записанное на флешку приложение зупаскаю на Тионе
# ./undo -qws

Приложение запустилось. Большое спасибо за оказанную помощь!

Осталось переконфигурировать Qt для поддержки тач скрина и потестировать с сенсорным монитором.