roboforum.ru

Технический форум по робототехнике.

Qt on mini2440 for Dummies

Qt on mini2440 for Dummies

Сообщение Resident » 18 сен 2010, 21:17

Статейка о том, как я укрощал этого зверя.
Для начала вам нужен живой линух на миньке и на ПС.
После долгих мучений с компиляцией tslib(либа для тач скрина) для Qt под мини, с подачи serg_io (за что ему отдельное спасибо) я наткнулся на buildroot
Вообще-то это мегофича для компиляции всего линуха со всеми его потрохами, но на момент его использования в нем не было поддержки мини, да и зачем мне компилитьто, что у меня уже итак есть, поэтому от него нам нужно лишь скомпилированные либы Qt и tslib.
Распакомываем билдрут в отдельную папку заходим в нее и запускаем make menuconfig
Вылезает окошко, как при компиляции ядра, в нем в пункте графиичских фич и утилит находим наше Qt и настраиваем его под себя. Подключаем/отключаем разные модули вроде поддержки разных граф. форматов, обязательно рекомендуется включить поддержку freetype2 шрифтов (Да будет русский язык в наших приложениях! :)) и т.д.
Да, tslib тоже желательно включить (в настройках линуха):)
Не забываем указать ваш тулчейн для компиляции.
Я надеюсь его то вы уж точно установили :)
Сохраняем конфиг или копируем мой и делаем make.
(Если будете использовать мой файл конфига - замените в нем путь к вашему мини-компилятору)
BR2_TOOLCHAIN_EXTERNAL_PATH="/usr/local/arm/4.3.2"
BR2_TOOLCHAIN_EXTERNAL_PREFIX="arm-none-linux-gnueabi"

После чего билдрут создаст у себя папку dl в которую начнет скачавать из нета необходимые паки сорцов для компиляции всех указанных вами фич, включая tslib и Qt. (Осторожно, трафик!!! :) )
Небольшое отступление: если ничего не трогать то скомпиленная либа тач скрина будет выдавать одну не критическую, но ооочень мешающую (особенно в случаях дебага через консоль) вещь: При любом прикосновении к экрану, в консоли будет появляется куча сообщений "tslib: Unknown event type 0". На работоспособности это не сказывается, но не приятно, когда из-за этого ты не можешь прочитать то, что выдали твои принтэфы по ходу программы. Это лечится. Описанно здесь, достаточно лишь применить данный патч.
Чтобы билдрут понял что мы хотим пропатчить, топаем в папку dl, находим архив с сорцами тслиба, распаковываем, патчим и пакуем обратно, после чего говорим билдруту скомпилировать все заново.
Однако если положить пак в созданную папку dl до первой компиляции думаю можно будет обойтись одной.
Билдрут, которым я пользовался, пропатченый тслиб и мой файл конфига для билдрута выложил здесь.
Возвращаемся к нашим баранам библиотекам. после компиляции (на моей вирт машине с 2мя выделеными процами и 1Гб оперативы сие действо заняло около 20 минут, не считая времени на скачивания около 200Мб сорцов) нам нужно то, что лежит в папке output.
В ./output/images/ лежат два архива с образами скомпиленных rootfs. Заходим в любой. Нам нужны папки ./usr/lib c либами Qt и tslib и ./usr/plugins с плагинами для Qt
Копируем все это добро к себе на миньку.
И не спешите удалять папку билдрута!!! Она вам еще пригодится!
Далее настраиваем переменные окружения в самой мини
export set TSLIB_TSDEVICE=/dev/event0
export set TSLIB_CALIBFILE=/etc/pointercal - файл калибровки тача
export set TSLIB_CONFFILE=/etc/ts.conf - настройки тача
export set TSLIB_PLUGINDIR=/opt/qt-4.6/lib/ts - путь к нашим либам тача
export set QTDIR=/opt/qt-4.6 - путь к Qt
export set QPEDIR=/opt/qt-4.6
export set QWS_DISPLAY="LinuxFB:/dev/fb0"
export set QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0"
export set QWS_KEYBOARD="TTY:/dev/tty1"
export set QWS_MOUSE_PROTO="TSLIB:/dev/event0"
export set QT_PLUGIN_PATH=$QTDIR/lib/plugins/ - путь к нашей папке плагинов
export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/ - путь к фонтам
export set PATH=$QPEDIR/bin:$QPEDIR/lib:$PATH - no comments )
export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib/plugins/imageformats:$LD_LIBRARY_PATH - no comments )
А еще есть замечательный хелп от разрабов.

Теперь возвращаемся к ПС.
Качаем с офф сайта Qt [quote=http://qt.nokia.com/downloads/qt-creator-binary-for-linux-x11-32-bit]IDE[/quote] в котором мы будем творить :)
Запускаем, сразу лезем в Инструменты->Параметры->Qt
Вы ще не удалили папку билдрута? ;)
В настройках профиля жмакаем плюсик и вводим путь до нашего "SDK", а именно до файла qmake
/output/build/qt-everywhere-opensource-src-4.6.2/bin/qmake
Далее жмем "пересобрать" И с трепетом ждем когда красный крестик сменится на зеленую галочку)
Ура! Мы сделали это! Теперь можно жать Ок и топать в создание проекта)
Выбираем Проекты Qt C++ -> GUI проект, далее указываем созданый нами профиль и вуаля :)
Что делать дальше, думаю вы разберетесь)

Итак. Вы накидали на формочку кнопочек и других финтифлюшек, или сделали что-то более серьезное и скомпилировали программу. Что дальше делать?
Копируем её на мини, в консоли заходим в папку с программой и набираем ./имя_программы -qws
Флаг -qws...
А вообще-то... за подробностями сюда :)
Running Qt for Embedded Linux Applications
Fonts in Qt/Embedded
The VNC Protocol and Qt for Embedded Linux
Про ускорение Qt здесь:Adding an Accelerated Graphics Driver to Qt for Embedded Linux Ну и еще на куче разных форумов на просторах всемирной паутины...
Если кто решится написать статью по ускорению - будет хорошо :)

Готов выслушать все пожелания, замечани и предложения :)

PS Готовая настроенная rootfs лежит здесь
Любой прибор, защищённый плавким предохранителем, сможет защитить этот предохранитель, сгорев первым.
Resident
 
Сообщения: 167
Зарегистрирован: 14 июн 2010, 17:19
прог. языки: Qt/C/C++

Re: Qt on mini2440 for Dummies

Сообщение Tsi329 » 04 окт 2010, 00:51

Спасибо за статью.
Не мог бы ты выложить фс сразу в пригодном для залития формате? jffs2, как я понимаю. И за одно твой вариант ядра (конфиг и пригодный для залития файл).
Это, конечно, прозвучит дико для многих. Но я очень хочу как можно быстрей прошмыгнуть утомительный этап конфигурирования миньки под QT4 и начать писать-паять. :)
Tsi329
 
Сообщения: 135
Зарегистрирован: 24 авг 2010, 11:48
Откуда: Минск
прог. языки: C++,C,Asm


Вернуться в mini2440

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2