MotoFan.Ru — все для Motorola > Гаджеты от Motorola > Motorola на Linux > Motorola ROKR Z6, Motorola RIZR Z6, Motorola RAZR2 V8, Motorola Z6w

Разработка софта под MOTOMAGX Полная версия
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16

 av Abram

 21.5.2008, 21:56

Ну вот и пришла нам пора писать под наши телефоны нативный софт smile.gif.

Итак, поехали. Для начала нам нужен Linux и Z6 SDK. Linux берем кто какой хочет, желательно 32-битный (64-битного SDK нет, а как он себя поведет под 64-битной ОС - не знаю). Пользователи Windows могут воспользоваться, например, andLinux: http://www.andlinux.org/. Я буду рассматривать Ubuntu. Для Debian или andLinux все то же самое. Разница с другими дистрибутивами - в основном только в способе установки програм. С этого момента я считаю, что у вас уже установлен Linux, настроена сеть, установлены subversion (svn) и ncftp. Если же нет:
Код
sudo apt-get install subversion ncftp

Небольшое введение насчет Linux я написал, дабы избежать пустых вопросов shuffle.gif
SDK берем здесь:
Код
svn co https://ezx.darktech.org/svn/trunk/arm-eabi

Не забывем иногда делать
Код
svn up

Я, например, иногда кое-что изменяю для совместимости с Е2. Патчи и фиксы, а также дополнения приветствуются! clap.gif
Кто не знает что такое SVN - тем в гугл.

Временно сабж лежит здесь: http://depositfiles.com/files/7781186 и здесь: http://narod.ru/disk/2474622000/arm-eabi.tar.gz.html
Теперь рассмотрим на примере

Возьмем, например, Z6SnesX (эмулятор SNES для Z6, будет выложен позже. Ребят, GPL - он и в Африке GPL, но кто скомпилит - не выкладывайте, имейте совесть! Дождитесь моего релиза)
Код
svn co https://fig.vam/svn/ne/dam

Рассмотрим немного порезаный Makefile:
Код
TOOLPREFIX:=    /home/abram/z6/arm-eabi
#TOOLPREFIX:=    /arm-eabi
#Remember to set your own TOOLPREFIX.
QTDIR    :=    $(TOOLPREFIX)/lib/qt-2.3.8
EZXDIR    :=    $(TOOLPREFIX)/lib/ezx-z6
UPLOAD_PATH :=  /mmc/mmca1/bin/
CC    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-gcc
CXX    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-g++
LD    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-g++
CFLAGS    =    -pipe -Wall -W -O2 -DNO_DEBUG $(INCPATH)
CXXFLAGS=    -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG $(INCPATH)
INCPATH    =    -I$(QTDIR)/include -I$(EZXDIR)/include -I $(TOOLPREFIX)/arm-linux-gnueabi/include
LDFLAGS    =    -s
LINK    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-gcc
LFLAGS    =    
LIBS    =    $(SUBLIBS) -L$(TOOLPREFIX)/arm-linux-gnueabi/lib -L$(QTDIR)/lib -L$(EZXDIR)/lib -lm -lqte-mt -lezxpm -ljpeg -lezxappbase -lezxtapi-xscale-r -llog_util -llighting
MOC    =    $(QTDIR)/bin/moc
UIC    =    $(QTDIR)/bin/uic

TAR    =    tar -cf
GZIP    =    gzip -9f

...пропустим...

install: $(TARGETS)
    ncftpput -u root -p "" 192.168.16.2 $(UPLOAD_PATH) $(TARGETS)

Для компиляции нужно лишь заменить переменную TOOLPREFIX.
Подробнее рассмотрим цель install: она автоматически заливает все на телефон cool.gif через ftp и зависит от целей компиляции. То есть, если выполнить make install - програма скомпилируется (если нужно) и установится на телефон в UPLOAD_PATH. Для этого нужна утилита ncftpput - установите ее с помощью менеджера пакетов своего дистрибутива.

Запуск програмы

Для запуска програмы подключаемся к телефону через telnet, cd в нужную папку и запускаем smile.gif. Например,
Код
./Z6SnesX

Имейте ввиду, перед запуском програм из telnet нужно установить необходимые переменные окружения! Для этого скопируем прямо в консоль содержимое файла /etc/initservices/services/ezxenv.sh
Для Z6 это:
Код
#! /bin/sh
#set up environment
export QTDIR=/usr/lib/ezx
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/lib:/lib:/usr/language/vui/english/lib:/usr/language/vui/mandarin/lib:/usr/language/vui/common/lib:/usr/local/lib
export LD_HWCAP_MASK=
export EZX_PLUGINS_DIR=/hatcreek/plugins

# font path
if test -f /usr/language/fonts/fontdef.cfg;
then
    export EZX_RES_FONT_PATH=/usr/language/fonts
else
    export EZX_RES_FONT_PATH=$QTDIR/lib/fonts
fi

# slidertone path
export EZX_RES_SOUNDS_SLIDERTONE_PATH=/usr/data_resource/sound/slider_tones

# icon path
export EZX_RES_ICON_PATH=/usr/data_resource/icon

# string path
export EZX_RES_STRING_PATH=/usr/language/string

export EZX_NATIVE_APP_PATH=/usr/SYSqtapp
export EZX_PRELOAD_APP_PATH=/usr/data_resource/preloadapps
export AM_SYS_STATE_SHM_PATH=/usr/SYSqtapp/am

# per LIBll14192, set LOCPATH
export LOCPATH=/usr/language/string
export PREF_LANGUAGE_PATH=${LOCPATH}
export EZX_LANG=/usr/language/

export EZX_LOCAL_PATH=/ezxlocal/
export EZX_LOCAL_DOWNLOAD_PATH=${EZX_LOCAL_PATH}download/
export EZX_LOCAL_APP_WRITE_PATH=/ezxlocal/download/appwrite
export EZX_APP_WRITE_PATH=/ezxlocal/download/appwrite

export LJ_DATA_VISIBLE=/ezxlocal/download/mystuff/.system
export LJ_DATA_PRIVATE=/ezxlocal/download/appwrite
export LJ_CONFIG=/ezxlocal/download/appwrite

export TPA_HOME=${EZX_LOCAL_PATH}

#sound path
export EZX_RES_SOUNDS_PATH=/usr/data_resource/sound
export EZX_RES_SOUNDS_UISOUNDS_PATH=/usr/data_resource/sound/ui_sounds
export EZX_RES_SOUNDS_RINGTONES_PATH=/usr/data_resource/sound/ringtones

#dm
export dm_setting_root=${EZX_APP_WRITE_PATH}/setup
export dm_setting_plugin=/usr/lib/ezx/lib/dm_plugin

export EZX_EXTRA_SYS_DATA_PATH='/ezxlocal/.system/'

#java
export J2ME_SECURITY_DIR='/ezxlocal/download/java'
export JAVA_HOME_CARD1='/mmc/mmca1/.system/java'
export JAVA_HOME_CARD2='/mmc/mmcb1/.system/java'

export J2ME_SYSDATA_DIR=${LJ_DATA_VISIBLE}/java
export JAVA_HOME_FLASH=${LJ_DATA_VISIBLE}/java

export MIDP_SYSDIR='/ezx_user/download/appwrite/java'
export J2ME_POLICY_DIR='/usr/securesetup'

export MYSTUFF_DATA_PATH='/ezxlocal/download/mystuff/'

#browser
export BROWSER_FS_ROOT=/ezxlocal/download/browser

export FLASH_MOUNT_PATH=/ezxlocal
export EZX_INSTALLED_QT_PATH=/ezxlocal
export MYSTUFF_DATA_PATH=/ezxlocal/download/mystuff/

Для V8 и других не знаю sad.gif. Кто скажет - с меня плюс. Хотя скорее всего такой же.
Итак, запускаем и вуаля! - видим на экране телефона свою програму clap.gif. Или не видим. Или видим Segmentation fault - это уж кто как напишет wink.gif.

Удачи!
Разбор библиотек
Читаем здесь: https://ezx.darktech.org/wiki/ReverseSo

Флуд и оффтоп наказываю! Уже трое людей получило по -2 с удалением сообщения
На вопросы отвечаю smile.gif

 av Bogd@n

 22.5.2008, 11:08

это теперь можно теперь любой софт с компового линуха на мобилу портировать?

Не любой, конечно! - Abram

по каким принципам определяется подлежит сфот портированию или нет?

Зависит от используемых библиотек, в основном. Например, большинство графических програм портировать очень сложно. С некоторыми проще - например, у XMMS2 рабочий бинарник и бинарник интерфейса находятся отдельно. Также не стоит забывать, что на телефоне все-таки спецефический Linux - Abram

 av azt59

 22.5.2008, 12:57

Вопросик по SDK..
сливаем его с нета кладём куда удобно а дальше что? требуется ли какаято настройка компиляторов или самого СДК и тд...
расскажи по поведу тулчейна...
//ну это до полноты мануала)

Нет, никаких настроек не нужно. Все что нужно - все в Makefile. Конечно же, для некоторых программ другие системы сборок, но направление я дал - Abram

 no av Wisher

 22.5.2008, 22:07

это теперь можно портировать с е2 или с минга черный и белый список звонящих?

С Е2 можно портировать почти всё. Сорцы в студию smile.gif - Abram

не уверен что есть сырцы, китайцы писали http://forum.motofan.ru/index.php?act=Attach&type=post&id=141465

Тогда наверное не судьба biggrin.gif - Abram

 no av ruffus_kz

 23.5.2008, 16:28

Если портировать какую-либо программу для работы с Интернетом, например консольную ICQ, подключится ли она к серверу. Или gprs/edge требует нечто иное?

Нужно ковырять NAPI и DSM. Не подключится sad.gif. Даже wget не работает. Есть мысль посмотреть в сторону BindToSocket... Но для сетевых функций нет хедеров sad.gif. Если кто может помочь - я не против biggrin.gif - Abram

 no av _brn

 24.5.2008, 9:32

Цитата(Abram @ 22.5.2008, 1:56) *


Необходима помощь в доводке до ума этого проекта:
Код
svn co https://ezx.darktech.org/svn/trunk/projects/regman

Это даст нам возможность реализовать на Z6 менеджер установленного софта.



Не удается получить его с svn. Какая-то ошибка 200

Тьфу, перепутал линк. "был пьян. вспылил" smile.gif. Уже поправил. s/browser/svn/ - Abram

 av Ivan A-R

 24.5.2008, 12:06

Цитата(_brn @ 24.5.2008, 13:32) *

Не удается получить его с svn. Какая-то ошибка 200


Правильно
Код
svn co https://ezx.darktech.org/svn/trunk/projects/regman/

 no av _brn

 28.5.2008, 17:32

Так. появилось свободное время. Могу заняться.
Что вообще требуется от менеджера пакетов? Какой формат пакетов? Может выделим в отдельную тему? Наметим ключевые точки развития проекта?

Не собирает "ld cannot find -lezxam"

В makefile есть строки
Код
CC    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-gcc
CXX    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-g++
LD    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-g++

ИМХО, должно быть
Код
CC    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-gcc
CXX    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-g++
LD    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-ld


Хотя так тоже не собирает

  BeZ

 28.5.2008, 18:53

все нормально собирается...
я собирал это...

может ты toolprefix не правильно указал?
вродебы это единственное, что необходимо проверить у себя на машине...

так же пересобирал Z6Snes...
правда не без помощи Abrama...

так же уже второй день экспериментирую GUI...

все это делаю под форточками с установленным в них andLinux...

 av Abram

 28.5.2008, 19:37

Цитата(_brn @ 28.5.2008, 20:32) *

Так. появилось свободное время. Могу заняться.
Что вообще требуется от менеджера пакетов? Какой формат пакетов? Может выделим в отдельную тему? Наметим ключевые точки развития проекта?

Не собирает "ld cannot find -lezxam"

В makefile есть строки
Код
CC    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-gcc
CXX    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-g++
LD    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-g++

ИМХО, должно быть
Код
CC    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-gcc
CXX    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-g++
LD    =    $(TOOLPREFIX)/bin/arm-linux-gnueabi-ld


Хотя так тоже не собирает

Регистрируйся на https://ezx.darktech.org, там открыт проэкт и несколько тикетов. Высылай наработки, дам доступ на аплоад.

Добавлено позже (28.5.2008, 22:48):
Цитата(_brn @ Сегодня, 20:32)

Не собирает "ld cannot find -lezxam"
*


Либы нет... Щас посмотрю, если что - солью.

Добавлено позже (28.5.2008, 22:52):
Добавил нужную библиотеку, svn up в папке с тулчейном и пробуй собирать.
С Makefile-ом все нормально.

  BeZ

 29.5.2008, 12:45

И так, в процессе тренировки и изучении SDK
родилась программка (тестовая).
Пока что это все с чем я успел разобраться )))

Возможности:
-редактирование JavaHeap
-редактирование время обнаружения Bluetooth

выкладываю с исходниками... там правда бардак, но разобраться можно...
так же в архиве скомпиленое приложение TestMain
его можно закачать в /mmc/mmca1/bin
запускать через telnet (см. самый первый пост темы) или через скрипт, скрипт сами делайте (как запустить snes без WKTools)...
Кому прога не интересна, можете даже ничего не писать об этом...
Еще раз напомню, что программка с исходниками чисто в образовательных целях...

За качество кода не ругайте... Если честно, то я знаю немного основы с++б а здесь еще и Qt используется, с которым я начал знакомиться пару дней назад...
Возможно, что скоро что-то интересное появится ))))
Нажмите для просмотра прикрепленного файла

Код

svn co https://ezx.darktech.org/browser/trunk/projects/TestApp

 no av FFEHOT

 29.5.2008, 14:31

а на висту нельзя SDK поставить?

Не задавай глупых вопросов. ИМХО человек, который не может различить Windows и Linux не сможет писать софт. Ах да, и ещё... На Delphi, C++ Builder, Quick Basic, Visual Basic и что там ещё писать тоже нельзя. Представь себе. - Abram

 no av _brn

 29.5.2008, 15:05

Теперь не может найти файлы, лежащие в /arm-eabi/arm-linux-gnueabi/lib/libc.so.6. Похоже что где-то прописан полный путь, а не относительный.

ps: после создания символической ссылки в корневой директории на arm-eabi собралось. Не особо напрягает, но хранить какие-то ссылки не хочется.

ln -s arm-eabi /arm-eabi и все работает. Линк специально оставлен таким (в корне в смысле, чтобы никого особо не напрягало, у всех ведь директории разные) - Abram

 no av eug

 29.5.2008, 18:19

Цитата(_brn @ 29.5.2008, 19:05) *

Теперь не может найти файлы, лежащие в /arm-eabi/arm-linux-gnueabi/lib/libc.so.6. Похоже что где-то прописан полный путь, а не относительный.

ps: после создания символической ссылки в корневой директории на arm-eabi собралось. Не особо напрягает, но хранить какие-то ссылки не хочется.

в arm-eabi/arm-linux-gnueabi/lib/libc.so поправь пути в секции GROUP
у тебя там сейчас что-то типа
Код
GROUP ( /arm-eabi/arm-linux-gnueabi/lib/libc.so.6 ...

ставь свой путь

IMHO не самый хороший вариант, svn up может неадекватно себя вести. Кстати, не забываем о нем smile.gif. А если у кого есть доступ для checkin - тогда это ещё и зальётся в репозиторий, и потом перенесётся всем кто сделает update. Хорошо? Лучше уж сделать симлинк как предлагалось выше. Для совместимости. - Abram

 no av nairosha

 30.5.2008, 8:35

http://developer.motorola.com/docstools/mo...vame/downloads/
а что это за sdk?

написано же для Java - BeZ

  BeZ

 30.5.2008, 11:42

Обновлено приложение TestApp.
Продолжаем изучение SDK.
Код

svn co https://ezx.darktech.org/svn/trunk/projects/TestApp


Отображает текущие дату, время, сколько памяти всего, сколько занято, текущую частоту ЦП

  BeZ

 1.6.2008, 15:26

в svn появился терминал для V8, разместил tikva
Код

svn co https://ezx.darktech.org/svn/trunk/projects/konzr


для z6 тоже компилится и запускается ))))
вот скомпилил
выкладываю с исходниками
залить куда нить бинарник konzr и файл proggy.font

но мне не нравится как спец символы по кнопкам раскиданы, а не на цифру 1 повешены
попробую переделать

вот раскладка клавиш (это кусок из кода, кому надо тот разберется):
Код


        "\x1b\x03\x04", "abc[" , "def]" ,
        "ghi;"        , "jkl'" , "mno\\",
        "pqrs,"       , "tuv." , "wxyz/",
        "-=`"         , " "

        "\x1b\x03\x04", "ABC{" , "DEF}" ,
        "GHI:"        , "JKL\"", "MNO|" ,
        "PQRS<"       , "TUV>" , "WXYZ?",
        "_+~"         , " "


        "1!\x1b\x03\x04"    , "2@\x01\x02\x03"   , "3#\x04\x05\x06" ,
        "4$\x7\x8\x9"       , "5%\x0a\x0b\x0c"   , "6^\x0d\x0e\x0f" ,
        "7&\x10\x11\x12\x13", "8*\x14\x15\x16", "9(\x17\x18\x19\x1a",
        "+-*/"              , "0)\x1b\x1c\x1d\x1e\x1f"


Нажмите для просмотра прикрепленного файла

 av Abram

 3.6.2008, 12:28

На v8 на такой строке
Код
ZLabel* label = new ZLabel(QString("DateTime: "), this, "ZLabel",0, (ZSkinService::WidgetClsID4);
)
тело выдает
Код
*** glibc detected *** free(): invalid pointer: 0x00036bb8 ***

Кто разрабатывает софт под V8 - курите вот это https://ezx.darktech.org/wiki/ReverseSo и ищите ошибку. Скорее всего, что-то в хедерах.


--------------------------------------------
методом "тыка" выяснилось, что такая конструкция работает
ZLabel* label = new ZLabel(QString("DateTime: "), NULL, "ZLabel",0, (ZSkinService::WidgetClsID4);
BeZ

 av Alternative_NickName

 3.6.2008, 14:19

Выкладываю рабочий MPlayer для V8.

Без разницы, куда вы положите файлы из архива, главное, чтобы в

Код
/ezxlocal/download/mystuff/


была папка bin (важно - с маленькой буквы!) , а в ней бинарник mplayer.

Музыку играет, видео показывает smile.gif

Запуск: ./z6mplayer

Нажмите для просмотра прикрепленного файла

Можно положить напрямую в /ezxlocal/download/mystuff/bin. Будет работать!
Нажмите для просмотра прикрепленного файла

 av Abram

 3.6.2008, 20:26

Цитата(Alternative_NickName @ 3.6.2008, 17:19) *

Выкладываю рабочий MPlayer для V8.

Без разницы, куда вы положите файлы из архива, главное, чтобы в

Код
/ezxlocal/download/mystuff/


была папка bin (важно - с маленькой буквы!) , а в ней бинарник mplayer.

Музыку играет, видео показывает smile.gif

Запуск: ./z6mplayer

Нажмите для просмотра прикрепленного файла

Можно положить напрямую в /ezxlocal/download/mystuff/bin. Будет работать!
Нажмите для просмотра прикрепленного файла

Сабж - в отдельную тему. Если руки чешутся - сделай универсальный лаунчер для Z6/V8 (я буду делать после менеджера софта). Разница ведь только в папке, из которой запускается mplayer.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16

Полная версия:


MotoFan.ru (©) 2021    Слушать Radio