Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Gumstix > Первая игра, запуск с карточки без установки библиотек


Автор: SVK 29.06.10, 13:06
После неудачной попытки с наскока одолеть сборку Qt приложений переведём своё внимание на снаряды полегче. (к Qt вероятно мы ещё вернёмся)

Наше приложение, в данном примере, будет базироваться на библиотеке Nano-X Window System - в прошлом, MicroWindows. Если более конкретно, то мы соберём один из прилагающихся к ней пример.

Конфигурация Nano-X задаётся содержимым файла microwindows/files/defconfig, который, чуть позже, нам ещё предстоит подредактировать.

Устанавливаем общие настройки сборки
~/gumstix/gumstix-oe/extras/profile
#
# Environment setup for gumstix oe
#

export GUMSTIXTOP="${HOME}/gumstix/gumstix-oe"
export OEBRANCH="${GUMSTIXTOP}/org.openembedded.snapshot"
export GUMSTIXBRANCH="${GUMSTIXTOP}/com.gumstix.collection"
export USERBRANCH="${GUMSTIXTOP}/user.collection"

export PATH="${GUMSTIXTOP}/bitbake/bin:$PATH"
export BBPATH="${GUMSTIXTOP}/build:${USERBRANCH}:${GUMSTIXBRANCH}:${OEBRANCH}"

umask 0002

#
# end gumstix oe
#


Запускаем сборку Nano-X (microwindows)
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    bitbake microwindows
Тем самым инициировав автоматическую скачку необходимых исходных кодов и их сборку; также автоматически будут собираться и все необходимые для этого проекта дополнительные модули. Зависимости указаны в скрипте сборки microwindows.bb, а именно: microwindows.inc.
Если Вы выходите в интернет через proxy, то в случае неуспеха, целесообразно установить соответствующие переменные окружения:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    export http_proxy=<ip>:<port>
    export ftp_proxy=<ip>:<port>

На выходе, получаем пакет для установки: ~/gumstix/gumstix-oe/tmp/deploy/glibc/ipk/armv5te/microwindows-*0.91-r2_armv5te.ipk

Все скаченные исходники автоматом складываются в: /usr/share/sources
И в процессе отработки собирающего скрипта разворачиваются в: ~/gumstix/gumstix-oe/tmp/work

Как уже и было сказано выше, для сборки приложения, мы возьмём один из примеров: ~/gumstix/gumstix-oe/tmp/work/armv5te-angstrom-linux-gnueabi/microwindows-0.91-r2/microwindows-0.91/src/demos/nanox

Мой взгляд пал на тетрис: ntetris.c, ntetric.h
Чтоб действовать в рамках bitbake, создаём (пусть, nxdemo) директорию в: ~/gumstix/gumstix-oe/user.collection/packages
В этой директории создаём сценарий сборки: nxdemo_1.0.0.bb
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    DESCRIPTION = "hello world sample program"
     
    DEPENDS = "microwindows"
     
    PR = "r0"
     
     
    SRC_URI = "file://ntetris.c\
               file://ntetris.h"
     
    S = "${WORKDIR}"
     
    do_compile () {
        ${CC} ${CFLAGS} ${LDFLAGS} -lgcc_s -lnano-X -lm ntetris.c -o nxdemo
    }
     
    do_install () {
        install -d ${D}${bindir}/
        install -m 0755 ${S}/nxdemo ${D}${bindir}/
    }
     
    FILES_${PN} = "${bindir}/nxdemo"
Создаём директорию files в nxdemo, куда и переносим интересующие нас исходники

Далее, bitbake nxdemo и получаем на выходе очередной пакет ~/gumstix/gumstix-oe/tmp/deploy/glibc/ipk/armv5te/nxdemo_*1.0.0-r0_armv5te.ipk

Имея эти два пакета, уже можно их попробовать запустить на эмуляторе, предварительно установив в систему: ipkg install <имя.ipk>
Также, понадобится установить libjpeg62_6b-r7_armv5te.ipk необходимый для nano-X - параметризуется конфигурацией nano-X перед сборкой


Всё это здорово, но для запуска на реальном железе это не совсем подходит - требуется мышь, да и обещан был запуск без установки в систему ;)

Мышь, в нашем случае, призван заменить тачскрин, т.е. необходимо nano-X скрестить с имеющимся tslib
Об этом информацию можно почерпнуть тут: Nano-X with tslib support
Копируем патч microwindows-tslib.patch в ~/gumstix/gumstix-oe/com.gumstix.collection/packages/microwindows/files
Вставляем команду необходимости его внедрения в скрипт сборки microwindows_0.91.bb
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    require microwindows.inc
     
    SRC_URI = " \
      ftp://ftp.microwindows.org/pub/microwindows/microwindows-src-${PV}.tar.gz \
      file://defconfig \
      file://pagesize.patch;patch=1 \
      file://staticwin.patch;patch=1 \
      file://microwindows-tslib.patch;patch=1 \
     "

Корректируем defconfig
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    ...
    SERMOUSE                 = N
    ...
    TSLIBMOUSE               = Y
    ...


Пересобираем nano-X
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    bitbake -c clean microwindows
    bitbake microwindows


Теперь можно устанавливать в устройство....

Для того, чтоб избежать установку, в данном случае, достаточно в систему прописать дополнительный путь к новым библиотекам.
Прописывать следует в файл /etc/ld.so.conf и затем перезагрузиться или выполнить ldconfig
В моём случае содержимое файла стало таковым (третья строчка моя):
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    /usr/local/lib
    /usr/X11R6/lib
    /media/hdd/usr/lib
hhd - это флешка отформатированная в былые годы под HHD, но думаю, что это не принципиально, а купить MicroSD для этого дела руки никак не доходят :)

Всё :huh: загружаемся, запускаемся, радуемся :D
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    root@gumstix-custom-verdex:~$ ls /dev/input
    event0        touchscreen0
    root@gumstix-custom-verdex:~$ cd /media/hdd
    root@gumstix-custom-verdex:/media/hdd$ cat /etc/ld.so.conf
    /usr/local/lib
    /usr/X11R6/lib
    /media/hdd/usr/lib
    root@gumstix-custom-verdex:/media/hdd$ usr/bin/nano-X &
    root@gumstix-custom-verdex:/media/hdd$ usr/bin/nxdemo


user posted image

p.s. прикладываю содержимое с флешки и microwindows-tslib.patch
p.p.s. исходное содержимое пакетов располагается в директориях install, для примера: ~/gumstix/gumstix-oe/tmp/work/armv5te-angstrom-linux-gnueabi/microwindows-0.91-r2/install

Сообщения были разделены в тему "Флуд"

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)