MotoFan.Ru - все для моторола > Профи > Ломаем и строим (Inventions) > ELFs for Motorola. Эльфы, их разработка и портирование

Elf на (M)otorola, архивная тема Полная версия
Страницы: 1, 2, 3, 4

 av AstaRoth

 10.1.2007, 11:21

Изучаем Эльфы:
Мануал для сименс
Цитата
Q: Что такое Эльфы?
A: Эльфы - это одна из возможностей расширения функциональных возможностей телефона, которая состоит в исполнении непосредственно кода ARM-процессора аппаратов на платформах SGold и NewSGold, т.е. имеется возможность создавать собственные приложения, работающие аналогично cименсовскому программному обеспечению и использующие производственный стандарт ELF (Executable and Linking Format). Отсюда и название - эльфы.
*********
Q:Как установить эльфпак на телефон?
A: Для того чтобы установить эльфпак на свой телефон, нам понадобятся следующие патчи:
Большая Библиотека Функций
SWI-Hook
Загрузчик эльфов
API 14
Последовательность устанавливаемых патчей значения не имеет.
*********
Q: Что быстрее: java-приложение или эльф?
A: Поскольку эльфы исполняются непосредственно процессором без промежуточных надстроек типа java-машины, им доступна вся оперативная память и абсолютно все функции прошивки, созданные программистами Сименса. Скорость исполнения любых команд ограничена только мощностью процессора, поэтому она огромна, в десятки раз выше скорости исполнения java-приложений.
*********
Q: Где мне взять эльф (*.elf) для моего телефона и моей прошивки?
A: Эльфы не зависят (в рамках одной платформы) от модели аппарата и версии прошивки.
*********
Q: Как мне запустить эльфа (*.elf)?
A: Запуск эльфа производится либо как обычное приложения - нажатием кнопки джойстика в CardExplorer'е,
либо автоматически загружаются при включении аппарата, если эльф лежит в папке 0:\ZBin\Daemons
*********
Q: Какие папки нужно создать для работы эльфпака?
A: Необходимо создать структуру каталогов в соответствии с данным архивом
*********
Q: Как выгрузить эльфов?
A: Выгрузка эльфов (не являющихся демонами) возможна только после перезагрузки аппарата, если эта операция не предусмотрена в самом приложении. Чтобы выгрузить эльфа, висящего
демоном, перед перезагрузкой телефона его надо убрать из каталога ZBin\Daemons или сменить расширение файла elf на любое другое.


* Меню "Пуск" на сименсе, вопросы и ответы
* Эльфы на линукс
* Спецификация Эльфов под линукс

Возможно ли такое на моторе?? Хотя бы в принципе? ДА!

 av Vilko

 10.1.2007, 12:39

AstaRoth,
вполне. единственно что стандарт эльфа предполагает его загрузку с флехи в оперативку и запуск там. он не рассчитан на XIP.
а оперативки у нас в LTE всего 8мб, и бОльшая часть уже "поделена".

 av hobbit19

 10.1.2007, 12:45

Vilko

а эльфы те что от сименса после шлифовки непойдут нам ? или у нас
структура их будит абсолютна другая ?

 av Andy51

 10.1.2007, 16:38

hobbit19, структуру скорее всего можно сделать совместимой, а вот функции ОС, которые из эльфов вызываются - врядли:
Цитата(AstaRoth @ Среда, 10 Января 2007, 14:21)
библиотека функций
*

 av Vilko

 10.1.2007, 18:00

hobbit19,
API операционки различается. кучу "переходников" придецца делать

  SANYO_K

 10.1.2007, 22:15

О такой совместимости конечно вряд ли может идти речь. Что-то же похожее есть в модах прошивки от Elektro255 .
Цитата
I'm added JMP instruction from JAVA:
public static void jmp(int address)
where parameter is address to any procedure on flash or RAM.
If you will JMP to procedure in Thumb code you must add 1 to adress, if you will make jump to ARM code don't increment.
All procedures must have return (BX LR).
If you making another jump from procedure you must save linkregister on stack PUSH {LR}.
This function is only for assembler programmers, or somebody who want teach ASM for ARM processors smile.gif
To upload your code to RAM you can use Writebyte() from my lib, your code can use RAM to swap data between Java and ASM code.

 av Vilko

 11.1.2007, 8:32

SANYO_K,
ха, это новое, еще не видел. а выделение памяти он там реализовал? если да, то впринципе уже можно даж на яве сделать elf-loader
которая распаковывает elf в оперативку и стартует его там
еще б сделать стандартизированный api к операционке wink.gif

 av Паук

 12.1.2007, 7:29

Интересно, реально ли использовать под эти цели heap от явы?
По инструкции JMP соорудить обработку для использования хипа, а после BX LR - опять отдать память хипа ява-машине...

 av Andy51

 12.1.2007, 17:53

Паук, вполне smile.gif ~700кб останется - хватит для простеньких приложений
Цитата(Паук @ Пятница, 12 Января 2007, 10:29)
По инструкции JMP соорудить обработку для использования хипа
*


А зачем? Можно просто использовать функции выделения памяти самой JVM.
Есть ещё две проблема: насколько я понимаю, параллельно эльфу, загруженному таким "явным" загрузчиком, будет работать и JVM, что не есть хорошо в плане вычислительных ресурсов sad.gif

Уж лучше сделать нормальный загрузчик, который создавал бы отдельный процесс...
В таком случае становятся возможными эльфы, работающие "в фоне"

 av Andy51

 20.1.2007, 20:36

Stalker.mg, адреса тебе вернёт функция выделения heap. См. код загрузки мидлета

 av lv333

 22.1.2007, 15:47

Цитата(AstaRoth @ Понедельник, 22 Января 2007, 17:36)
В первых постах было предложение-делать эмуль на яве ( идея на мой взгляд не лучшая), или я что-то не понимаю....
*



biggrin.gif Тогда уж на яве эмулировать функции win32 например biggrin.gif
А имелось ввиду лоадер на яве так как в проше от elektro255 есть теоретически такая возможность как передача управления коду в памяти и его загрузка туда разумеется. Только здесь есть такая проблема как выделения этой самой памяти и нормальное распределения ресурсов для этого кода (обработка прерываний например). Одним словом нужно создать некое системное окружения. smile.gif

 av Akceptor

 23.1.2007, 10:26

Цитата(f0f @ Вторник, 23 Января 2007, 10:50)
Извините конечно за тупые вопросы, но стоит ли вообще овчика выделки? Какие у эльфа преимущестава по сравнению с явой?
*


СКОРОСТЬ и ФУНКЦИОНАЛЬНОСТЬ
Ява выполняется в виртуальной машине и потому она медленная и сильно ограниченая. Эльфы написаны под процессор тела и работать будут быстро. По сути мы получим те же патчи, только запускаемые, а не вшитые в прошивку (как ексешники в винде wink.gif

 no av Osta

 23.1.2007, 12:23

Цитата(lv333 @ Понедельник, 22 Января 2007, 16:47)
Только здесь есть такая проблема как выделения этой самой памяти и нормальное распределения ресурсов для этого кода
*


из своего , пока печального опыта скажу так:
я не нашёл за неделю кусочка в 240h байт оперативки на прошивке от с650 :-(

с отключением чего-либо и занятия этой особожденной памяти наверное вообще жуть,
хотя как говориться "а вот elektro255... " :-)

 av Akceptor

 23.1.2007, 13:01

Цитата(Osta @ Вторник, 23 Января 2007, 13:23)
из своего , пока печального опыта скажу так:
я не нашёл за неделю кусочка в 240h байт оперативки на прошивке от с650 :-(
*


У нас то флэшка побольше чем на с650, может и оперативка найдется. А на с650 и дуалбут впихать некуда

 av lv333

 23.1.2007, 13:28

Ближе к делу: smile.gif
На сегоднешний день из бинарных кодов мы имеем dualboot от Vilko. Есть так же библиотека от elektro255 в которой в свою очередь есть функции:

Код

записать код в память по адрессу:
static void writebyte(int address,int value)
а так же передать ему управления:
static void jmp(int address)


Так что лоадер хоть на том же мидлет паскале хоть на джаве можно прямо сейчас написать - это не есть проблема smile.gif
Главное знать адреса куда можно записать и иметь что туда записать(код который не вызовет полного краха всей системы smile.gif)
Попытатся выполнить таким способом dualboot думаю не стоит, smile.gif он все таки был написан для однозадачного и однопользовательского режима. biggrin.gif Но написать свой бинарик, аналог проги Hello World думаю вполне реально.

 av Freemmy

 23.1.2007, 14:22

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

 av lv333

 23.1.2007, 14:30

Цитата(Stalker.mg @ Вторник, 23 Января 2007, 16:19)
давай, напиши. ничего не выйдет, static void writebyte(int address,int value) записывает бинарник куда ему скажут, а эльф мало просто записать. тут все гораздо сложней. как по твоему джампы будут выполняться если они написаны в нем изначально относительно его адресации а потом станут выполнятся относительно общей адресации, я промолчу к чему это приведет
*



блин, ну я же написал вроде:

Цитата
Главное знать адреса куда можно записать и иметь что туда записать(код который не вызовет полного краха всей системы smile.gif)


А насчет адресации, конечно нужно иметь таблицу что и где лежит и по какому адресу. Иначе ничего не получится. smile.gif И это еще не все код должен взаимодействовать с аппаратными ресурсами телефона: например если берет на себя вывод на экран, то при выходе должен его обновлять, если принимает ввод с клавиатуры то анологично должен его возвращать, если занимает память должен ее освобождать и т.д.


Цитата(Freemmy @ Вторник, 23 Января 2007, 16:22)
lv333, ты хочеш сказать что если написать лоадер на яве, он будет распаковывать эльф в оперативку, затем яву закрываеш а эльф работает?  huh.gif
и разве проблема стоит только в нахождении куска адреса?
думаю  под обычную мелкую прогу места навалом будет
*



Нет не только, читай выше.

 av om2804

 30.1.2007, 15:18

Цитата(Stalker.mg @ Понедельник, 29 Января 2007, 14:32)
эльф вроде исполняемый а не интерпритируемый код. поэтому просто джамп на его начало
*



Тогда в чем проблема? Написать загрузчик на ява. Пусть он грузит код на ассме (или 16ричный код ) в адреса хипа и jmp ставит

 av Vilko

 31.1.2007, 7:32

эх, ё.... ща начнется флуд на тему "что же такое эльф"...
читаем, делаем выводы:

 av AstaRoth

 24.2.2007, 12:47

Это - архивная тема типа "А с чего всё начиналось"

Так уж получилось, что данная тема наших глубокоуважаемых программистов не заинтересовала или они посчитали ее нереализуемой, я по прежнему считаю, что ЭЛЬФЫ возможно адаптировать под мотор, нужно адаптировать уже имеющиеся семеновские эльфы, а более насущный и сложный вопрос - запуск самого эльфа на теле - или писать загрузчик или рассматривать другие варианты ( запуск через яву на мой взгляд утопия - так как эльф тем и хорош, что работает напрямую с процом минуя яву - за счет чего и идет прирост производительности).
Тема обсуждения на сименсклабе

Вот такая тема: http://cbn.narod.ru/documents/elf_info.html
http://www.siemens-club.org/faq/index.php?...e&faqID=231
В кратце:


Помимо патчей существует еще одна возможность расширения функциональных возможностей телефона. Она состоит в исполнении непосредственно кода ARM-процессора аппаратов на платформах SGold и NewSGold, т.е. имеется возможность создавать собственные приложения, работающие аналогично cименсовскому программному обеспечению и использующие производственный стандарт ELF (Executable and Linking Format). Отсюда и название - эльфы.

Поскольку эльфы исполняются непосредственно процессором без промежуточных надстроек типа java-машины, им доступна вся оперативная память и абсолютно все функции прошивки, созданные программистами Сименса. Скорость исполнения любых команд ограничена только мощностью процессора, поэтому она огромна, в десятки раз выше скорости исполнения java-приложений.

Подобные приложения распространяются в виде файлов с расширением *.elf. Эльфы не зависят (в рамках одной платформы) от модели аппарата и версии прошивки. Исполняются они либо как обычные приложения - нажатием кнопки джойстика в Card Explorer'е, либо вешаются в памяти демонами при загрузке аппарата.

Перед использованием эльфов необходимо ознакомиться с понятиями ELFpack и ELFloader. ELFpack - патч, позволяющий загружать эльфов, абстрагируя их от конкретной версии прошивки (по аналогии с Библиотекой функций в Мастер-Патче). ELFloader - часть ELFpack'а, отвечающая непосредственно за загрузку кода приложения в оперативную память и передачу ему управления. © siemens-club.org


Все эльфы для сименс - читаем описалово, делаем выводы
основы программирования-изучаем, берем опыт ковырятелей сименса
Общие вопросы по эльфам на семенах


Тема обсуждения на спрочтите правила форума Motofan !е

========================
Описание Эльф-формата (eng) PDF

========================

Были написаны Bin Loader (автор: om2804) и бинарик (автор: Andy51). Бинарик выводит текст на экран, выход по любой кнопке. Закинуть в корень флешки, т.е. b/test.bin. Bin Loader грузит бинарик в RAM и от туда его выполняет. Т. к. это ява ставим через MMM. Бинарик работает только на моде от elektro255


Исходник

Компилер

BinLoader


Бинарники для Electro255 v3 и v4 -Также переименовать в test.bin и на флешку.

--------

!!! Первый эльфлоадер !!! (с) om2804 (не стесняемся-благодарим комрада за труды ТУТ)

Нажмите для просмотра прикрепленного файла обновленный bin loader 1.2.2 + адрес теперь в hex + округление адреса до кратного 4 Нажмите для просмотра прикрепленного файла


********* Первый эльфпак для моторола! ! !


ТЕМА Автор Andy51

(+) Особая благодарность om2804

(+) Ну и ессно без Vilko некуда

(+) Спасибо Exebyte

(+)
********
Страницы: 1, 2, 3, 4

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


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