На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > Первая игра, запуск с карточки без установки библиотек , [nano-X] [tslib] [bitbake]
      После неудачной попытки с наскока одолеть сборку 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)
      ExpandedWrap disabled
        bitbake microwindows
      Тем самым инициировав автоматическую скачку необходимых исходных кодов и их сборку; также автоматически будут собираться и все необходимые для этого проекта дополнительные модули. Зависимости указаны в скрипте сборки microwindows.bb, а именно: microwindows.inc.
      Если Вы выходите в интернет через proxy, то в случае неуспеха, целесообразно установить соответствующие переменные окружения:
      ExpandedWrap disabled
        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
      ExpandedWrap disabled
        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
      ExpandedWrap disabled
        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
      ExpandedWrap disabled
        ...
        SERMOUSE                 = N
        ...
        TSLIBMOUSE               = Y
        ...


      Пересобираем nano-X
      ExpandedWrap disabled
        bitbake -c clean microwindows
        bitbake microwindows


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

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

      Всё :huh: загружаемся, запускаемся, радуемся :D
      ExpandedWrap disabled
        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

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

      Прикреплённый файлПрикреплённый файлusr.zip (192.85 Кбайт, скачиваний: 658)
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0219 ]   [ 15 queries used ]   [ Generated: 28.03.24, 21:27 GMT ]