MotoFan.Ru — всё для Motorola > Разработки > Ломаем и строим! > Эльфы, их разработка и портирование

ElfPack v2.0, начало всеобщего тестирования Полная версия
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23

 no av tim apple

 22.4.2009, 6:55

Из анонса:
Spoiler:

Было решено отказаться от ADS в пользу GCC - а конкретно devkitARM. Процесс сборки эльфа дополнился новым этапом - постлинк-обработкой.
  • *.c -> [GCC] -> *.o
  • *.o -> [AR] -> *.a (необязательно - но удобно хранить прекомпилированные библиотеки вроде libc.o в одном файле)
  • *.o + *.a -> [LD] -> *.so -> [POSTLINKER] -> [EP2]*.so (это и есть динамическая библиотека)
  • *.o + *.a + *.so -> [LD] -> *.elf -> [POSTLINKER] -> [EP2]*.elf (готовый к выполнению на телефоне эльф)
Постлинкер оптимизирует эльф, а также делает его меньше путем вырезания всякого шлака.
Использование GCC позволило перейти на открытую архитектуру, и в частности, добавить поддержку общих динамических библиотек (*.so).

Что уже сделано:
  • Работоспособная сборка для L7e.0A, L9.05, E1.79
  • Полная поддержка 2х типов динамических библиотек
  • Несколько эльфов - HelloWorld, DRMChanger, MotoCMD2, ProcessManager, Matrix (работа с ATI), ScrShot (аналог Screener-a), LibTest, несколько инет-эльфов.
Делается:
  • Открытое бетта-тестирование (поиск и фикс багов)
  • Изменение кода, преимущественно для красоты и удобства
Что еще предстоит сделать:
  • Исправить обнаруженные баги
  • Описать новый API и портирование с ЕР1
  • Зарелизить
Примечания:
  • ЕР2 не заменяет ЕР1 - они спокойно работают совместно shades.gif (ЕР2 даже запускает эльфы от ЕР1, если последний установлен)
  • Хорошая новость - исходники будут доступны через SVN. spiteful.gif
[close]


Whats new since EP1:
Spoiler:
  • Наконец-то появился контроль запускаемых эльфов на наличие всех необходимых для их работы функций. Если для эльфа чего-то нехватает, он просто не запустится.
  • Библиотеки функций теперь не зависят от патча эльфпака. Тоесть, можно ими теперь меняться без проблем в пределах прошивки.
  • В заголовке библиотек функций теперь указывается целевая прошивка и версия библиотеки.
  • "Динамические" константы - в либе можно хранить объекты размером 4 байта и получать их по уникальным ID (2 байта).
    Примеры использования: прошивко-зависимые ивенты, адреса, константы и пр.
  • Добавился конфигурационный файл.
  • Графическая консоль - что-то вроде игровой консоли по ~, служит для вывода текстовой информации прямо на экран (необходим дисплей ATI). Эльфы имеют доступ к этой консоли.
  • Список загруженных в память эльфов - теперь можно отследить повторную загрузку эльфа и не только.
  • Динамические библиотеки с load- и run-time линковкой. Даешь плагины!
  • Параметры в функцию Register(теперь _start) передаются в Unicode.
  • Сделан API для установки коллбеков на обновление дисплея (полезно для вывода графики через драйвер прямо поверх системной)
[close]


12.08.2009 Начало тестирования.
Начинаем выкладывать тестовые сборки ЕР2 под несколько прошивок. Целью не ставится портировать под все, а лишь на достаточное количество для проведения тестирования.

Тестирование закончено, всем спасибо. Имеем то, что имеем.

Как этим пользоваться:
  1. Делаем как написано в readme_for_*.txt - получаем ЕР2 в своем телефоне.
  2. По нажатию "быстрой" кнопки запускается MotoCMD2 - через него можно запускать другие эльфы (в том числе от ЕР1)
  3. Сообщаем сюда обо всех проблемах и задаем вопросы.
Примечание. "Быстрая" кнопка мульти-функциональная - действие зависит от длительности нажатия:
  1. ивент (см. FastRunEvent в elfpack.cfg)
  2. эльф (см. FastRunElf в elfpack.cfg)
  3. консоль
  4. перегрузка либы и конфига
Пояснение к конфигу:
Spoiler:

EnableConsole = 0/1 - выкл/вкл поддержку консоли.
AutoShowConsole = 0/1 - автоматически показывать консоль при выводе в нее.
DebugMode = 0/1 - режим отладки, ЕР2 выводит системные сообщения.
ShowLogo = 0/1 - показ лого при запуске.
SkipAutorun = 0 пропустить обработку авторана (1-да,0-нет)

DefLibraryPath = file://b/Elf2/library.bin путь к либе
AutorunPath = file://b/Elf2/auto.run путь к авторану

FastRunElf = file://b/Elf2/MotoCMD2.elf пусть к эльфу, запускаемому по "быстрой" кнопке
FastRunEvent = 0x02dc посылать ивент по "быстрой" кнопке

Пути поиска общих либ
LibsPath1 = file://b/Elf2
LibsPath2 = file://c/libs
LibsPath3 = "file://a/shared libs"
[close]


А знаете ли вы, что:С уважением, tim apple.

===========================================================
ВАЖНО! Вышла новая версия DevkitARM v.27, но она не совместипа с ЕР2. Используйте v.26 Нажмите для просмотра прикрепленного файла
===========================================================

/* Самые свежие версии вы всегда можете скачать с SVN и собрать сами.
Более подробно смотрите в Wiki */

 no av tim apple

 22.4.2009, 7:31

в ЕР2 будет возможность отключить загрузку эльфов для предотвращения вечных ребутов изза кривой либы или эльфа в авторуне.
(Пока только для телефонов с three-pole клавиатурой - е398 и пр. На L7e/L9 и др. с two-pole клавиатурой - не реализовано)

ЕП2 умеет "говорить" о проблемах загрузки и пр. (Через консоль)

 av Alesha_Pl

 22.4.2009, 8:41

Цитата(tim apple @ Сегодня, 10:55)

ЕР2 не заменяет ЕР1 - они спокойно работают совместно
*



Т.е. нам не надо будет сносить первый эльфпак перед установкой второго? И те эльфы, которые уже есть под первый эльфпак не обязательно будет переделывать, они будут продолжать нормально работать?

[ tim apple ] :
сносить ЕР1 не нужно. и есстественно все эльфы под ЕР1 будут и дальше нормально работать под ним.
но эльфы не совместимы между разными ЕР - требуется портация. в простейшем случае - это изменение имен ф-ций лоадера (Ldr* -> ldr*) и необходимые коррективы в параметрах.

авторан, либа и конфиг по умолчанию будут лежать в /b/Elf2.
я думаю ввести некое подобие обратной совместимости - при попытке запустить эльф от ЕР1 он передастся в ЕР1. (Сделано)

 av Alesha_Pl

 22.4.2009, 9:08

tim apple, т.е. все же чтобы воспользоваться теми эльфами которые есть сейчас, надо будет либо перекомпилировать их (а процесс пока в моем представлении несколько более сложный бедет, хотя может просто кажется так), либо как-то передавать управление первому эльфпаку (что тоже я себе слабо представляю). Или оба эльaпака будут работать одновременно, один со своими эльфами, а другой со своими?

[ tim apple ] :
- компиляция не сложнее - всё прекрасно автоматизируется например батником.
- одновременно, каждый со своими.

tim apple, это порадовало особенно. Значит мы не останемся без нужных эльфов smile.gif

 av .:DMX:.

 22.4.2009, 14:25

а можете сказать для каких прошивок на Е398 будет выпущен ЕР2 и каков примерно прогресс в процентах готовности ЕР2?

[ tim apple ] :
там где ЕР1 смогли портировать - ЕР2 тоже пойдет (возможно не в полном функционале).

 av fkcoder

 22.4.2009, 14:46

.:DMX:., EP2 будет выпущен не только для прошивок E398, уже есть работоспособные версии для L9 и L7e. К тому же будут доступны исходники, с ними можно хоть куда портировать

 av DDA-E398

 22.4.2009, 14:49

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

[ tim apple ] :
верно. только учтите что уменьшение идет в основном за счет удаления ненужной информации, оставляемой линкером. таких монстров как тюнс это уменьшит незначительно.

 av Andy51

 22.4.2009, 15:30

Нет, идея постлинкера заключается совсем не в том, чтобы удалять мусор. Это он делает просто "заодно". Основная задача postlink - привести эльф к такому виду, чтобы загрузчик уже на телефоне мог с ним быстро и эффективно работать.


[ tim apple ] :
В закрепленке так и сказано - оптимизирует - просто я не стал объяснять подробнее.
А вопрос был лишь о размере эльфа. Но спасибо за развернутое объяснение =)

 av Andy51

 22.4.2009, 16:38

Цитата(CrayZor @ Сегодня, 19:34)

юзер сам следит что именно запускает.
*

Проще говоря, в EP1 и EP2 используются различные функции для загрузки эльфов. Вот и всё.

[ tim apple ] :
Обновлено. ЕР2 перенаправляет запуск эльфов от ЕР1 в загрузчик последнего (спасибо, что сделал там через ивент)

 av CrayZor

 22.4.2009, 17:26

Ясно, спасибо за пояснение. Меня интересует такой вопрос, возможна ли на ЕР2 работа с драйвером дисплея напрямую, возможно ли будет подключать отдельные кодеки, и возможно ли будет написать таскменеджер?

Добавлено позже (22.4.2009, 17:28):
Цитата
т.к. либа загружается лишь один раз, а использоваться может несколькими эльфами, то получаем экономию по памяти.
либу можно обновлять независимо от эльфов
увеличивается переносимость эльфов - на каждой платформе/проше либа содержит правильный код. а эльфы одни и теже

А разве на ЕР1 не так?

[ tim apple ] :
- работать с драйвером дисплея напрямую можно и без ЕР2.
- таскменеджер (список запущенных эльфов) уже разрабатывается готов.
- я имел ввиду *.so-либы пользователей. библиотека ф-ций в ЕР2 является so. в ЕР1 фактически аналог.

 av fkcoder

 29.4.2009, 7:04

syberside, например в ЕП2 контролируется импорт функций из либы, чего нет в ЕП1. То есть когда какой то функции которая используется в эльфе нет в либе то эльфпак так и напишет.
А про историю по-подробнее

 av syberside

 30.4.2009, 1:02

ну я про то что также при использовании эльфов ни стого ни с сего ребуты будут?

[ tim apple ] :
ну зависит от причин конечно. а что касается ЕР2 то:
- если в либе не хватает функций то эльф не будет загружен
- ЕР2 написан с нуля и намного сложнее - ошибки есть, но будем стараться исправить

 av Swift

 2.5.2009, 19:21

Так как я понял эльфы от телефонов с ЕР2 зависеть не будут, типо создал эльф и он на все телефоны идёт хорошо?Правильно?

[ tim apple ] :
не совсем. это реально если разработчик побеспокоится о переносимости кода:
- либо проверять на какой прошивке запущен эльф и учесть особенности реализации для каждой
- либо вынести платформо-зависимые участки кода в отдельную либу (при этом юзер должен будет иметь у себя нужную либу)
- либо комбинированный подход.

хотя это не всегда рационально - бывает что лучше создавать отдельные билды.

 av logotoy73

 9.5.2009, 9:10

Обьясните тупому. За счет чего происходит экономия памяти. Ну с постлинкером понятно. А вот с использованием библиотек .so не пойму. Ведь если сейчас используется только динамическая компоновка, то значит при загрузки эльфа будут взяты нужные данные из библиотеки и размещены в эльфе, в памяти. Т. е. закрепляются в памяти эльфа. Немного сумбурно но думаю понятно обьяснил . Но тогда получается что никакой экономии нет, сам эльф будет весить мало, а в памяти развернется во всей красе . Просто удобство использования разными эльфами одной библиотеки с готовыми данными.

[ tim apple ] :
Ответ кроется в последнем предложении - тут не просто удобство, ведь код ф-ции будет в одном экземпляре, а не в каждом эльфе по копии.

 av fkcoder

 9.5.2009, 9:24

logotoy73, с чего ты взял что он там развернется? Не все же эльфы будут либы юзать. И экономия памяти составляет достаточно много по сравнению с эльфом не обработанным постлинкером

 av logotoy73

 9.5.2009, 9:54

С постлинкером мне всё понятно. Я про другое. К примеру взять Tunes, часть функции вынести в библиотеку. Сам эльф будет весить меньше. Так? Но при запуске в процессе загрузки в память он дополнится этими функциями и в памяти опять будет монстр :-) . Под этим я имел в виду когда сказал развернется.

[ tim apple ] :
всё верно, если библиотека используется только для одного эльфа.

 av Andy51

 9.5.2009, 13:59

Цитата(logotoy73 @ Сегодня, 13:54)

при запуске в процессе загрузки в память он дополнится этими функциями и в памяти опять будет монстр
*

А вот здесь кстати может быть ещё одно преимущество - можно с помощью библиотек разбить "монстра" на части, и тогда не понадобится возиться с патчами на добавление очень-больших-блоков памяти.

 av K-E-N-N-Y

 9.5.2009, 14:06

Прочитал последние посты и не совсем понял с загрузкой эльфов в память.
Как сильно это отобразиться на работе эльфов?
Вообще интересно,будет ли например тот же Tunes работать быстрее чем на EP1?

[ tim apple ] :
ЕР отвечает за загрузку эльфа в память и некоторые сервис-функции. на работу самого эльфа не влияет.

 av logotoy73

 9.5.2009, 14:38

Т. е. понадобилась эльфу какая то библиотека, уже загруженная в память, компоновшик открыл её, получаем к примеру указатели на нужные функции, указатели подставляются в код эльфа, закрываем библиотеку. Так? Может не совсем понятно но думаю мысль ясна? Тогда действительно экономия памяти, которой не так уж и много. Просто не совсем понятен принцип работы с библиотеками.

[ tim apple ] :
почти прав. мысли шире: so-либы - это уже не просто набор указателей на ф-ции прошивки (как в стандартная либе), а код новых ф-ций и данные.
библиотека потом не закрывается - ведь эльф ее использует. а закрывается лишь когда закроются все эльфы, использующие ее.

 av baat

 18.5.2009, 15:35

lavmen, +1
ati и на первом эльфпаке есть... можешь и на нём неплохие игры делать!
второй эльфпак просто более коректно собран, и из новых сверхвозможностей разве что менеджер запущенных приложений и возможность подключение общей внешней либы... всё в первом есть... ни 3д ни зверского увелечение скорости...
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23

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


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