tim apple
22.4.2009, 6:55
Из анонса:
Было решено отказаться от 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 - они спокойно работают совместно (ЕР2 даже запускает эльфы от ЕР1, если последний установлен)
- Хорошая новость - исходники будут доступны через SVN.
[close]
Whats new since EP1:
- Наконец-то появился контроль запускаемых эльфов на наличие всех необходимых для их работы функций. Если для эльфа чего-то нехватает, он просто не запустится.
- Библиотеки функций теперь не зависят от патча эльфпака. Тоесть, можно ими теперь меняться без проблем в пределах прошивки.
- В заголовке библиотек функций теперь указывается целевая прошивка и версия библиотеки.
- "Динамические" константы - в либе можно хранить объекты размером 4 байта и получать их по уникальным ID (2 байта).
Примеры использования: прошивко-зависимые ивенты, адреса, константы и пр. - Добавился конфигурационный файл.
- Графическая консоль - что-то вроде игровой консоли по ~, служит для вывода текстовой информации прямо на экран (необходим дисплей ATI). Эльфы имеют доступ к этой консоли.
- Список загруженных в память эльфов - теперь можно отследить повторную загрузку эльфа и не только.
- Динамические библиотеки с load- и run-time линковкой. Даешь плагины!
- Параметры в функцию Register(теперь _start) передаются в Unicode.
- Сделан API для установки коллбеков на обновление дисплея (полезно для вывода графики через драйвер прямо поверх системной)
[close]
12.08.2009 Начало тестирования.Начинаем выкладывать тестовые сборки ЕР2 под несколько прошивок. Целью не ставится портировать под все, а лишь на достаточное количество для проведения тестирования.
Тестирование закончено, всем спасибо. Имеем то, что имеем.Как этим пользоваться:- Делаем как написано в readme_for_*.txt - получаем ЕР2 в своем телефоне.
- По нажатию "быстрой" кнопки запускается MotoCMD2 - через него можно запускать другие эльфы (в том числе от ЕР1)
- Сообщаем сюда обо всех проблемах и задаем вопросы.
Примечание. "Быстрая" кнопка мульти-функциональная - действие зависит от длительности нажатия:
- ивент (см. FastRunEvent в elfpack.cfg)
- эльф (см. FastRunElf в elfpack.cfg)
- консоль
- перегрузка либы и конфига
Пояснение к конфигу:
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]
А знаете ли вы, что:- Консоль можно прокручивать качелькой громкости
- Строки в auto.run можно комментировать с помощью знака ;
- Название прошивки должно быть заводским, иначе либа не загрузится!
С уважением,
tim apple.
===========================================================
ВАЖНО! Вышла новая версия DevkitARM v.27, но она не совместипа с ЕР2. Используйте v.26 Нажмите для просмотра прикрепленного файла===========================================================
/* Самые свежие версии вы всегда можете скачать с SVN и собрать сами.
Более подробно смотрите в Wiki */
tim apple
22.4.2009, 7:31
в ЕР2 будет возможность отключить загрузку эльфов для предотвращения вечных ребутов изза кривой либы или эльфа в авторуне.
(Пока только для телефонов с three-pole клавиатурой - е398 и пр. На L7e/L9 и др. с two-pole клавиатурой - не реализовано)
ЕП2 умеет "говорить" о проблемах загрузки и пр. (Через консоль)
Alesha_Pl
22.4.2009, 8:41
Цитата(tim apple @ Сегодня, 10:55)
ЕР2 не заменяет ЕР1 - они спокойно работают совместно
Т.е. нам не надо будет сносить первый эльфпак перед установкой второго? И те эльфы, которые уже есть под первый эльфпак не обязательно будет переделывать, они будут продолжать нормально работать?
[
tim apple ] :
сносить ЕР1 не нужно. и есстественно все эльфы под ЕР1 будут и дальше нормально работать под ним.
но эльфы не совместимы между разными ЕР - требуется портация. в простейшем случае - это изменение имен ф-ций лоадера (Ldr* -> ldr*) и необходимые коррективы в параметрах.
авторан, либа и конфиг по умолчанию будут лежать в /b/Elf2.
я думаю ввести некое подобие обратной совместимости - при попытке запустить эльф от ЕР1 он передастся в ЕР1. (Сделано)
Alesha_Pl
22.4.2009, 9:08
tim apple, т.е. все же чтобы воспользоваться теми эльфами которые есть сейчас, надо будет либо перекомпилировать их (а процесс пока в моем представлении несколько более сложный бедет, хотя может просто кажется так), либо как-то передавать управление первому эльфпаку (что тоже я себе слабо представляю). Или оба эльaпака будут работать одновременно, один со своими эльфами, а другой со своими?
[
tim apple ] :
- компиляция не сложнее - всё прекрасно автоматизируется например батником.
- одновременно, каждый со своими.
tim apple, это порадовало особенно. Значит мы не останемся без нужных эльфов
.:DMX:.
22.4.2009, 14:25
а можете сказать для каких прошивок на Е398 будет выпущен ЕР2 и каков примерно прогресс в процентах готовности ЕР2?
[ tim apple ] :
там где ЕР1 смогли портировать - ЕР2 тоже пойдет (возможно не в полном функционале).
fkcoder
22.4.2009, 14:46
.:DMX:., EP2 будет выпущен не только для прошивок E398, уже есть работоспособные версии для L9 и L7e. К тому же будут доступны исходники, с ними можно хоть куда портировать
DDA-E398
22.4.2009, 14:49
Если, как написано в первом посте, эльфы станут легче, значит и памяти им нужно будет меньше. Я правильно думаю?
[ tim apple ] :
верно. только учтите что уменьшение идет в основном за счет удаления ненужной информации, оставляемой линкером. таких монстров как тюнс это уменьшит незначительно.
Andy51
22.4.2009, 15:30
Нет, идея постлинкера заключается совсем не в том, чтобы удалять мусор. Это он делает просто "заодно". Основная задача postlink - привести эльф к такому виду, чтобы загрузчик уже на телефоне мог с ним быстро и эффективно работать.
[ tim apple ] :
В закрепленке так и сказано - оптимизирует - просто я не стал объяснять подробнее.
А вопрос был лишь о размере эльфа. Но спасибо за развернутое объяснение =)
Andy51
22.4.2009, 16:38
Цитата(CrayZor @ Сегодня, 19:34)
юзер сам следит что именно запускает.
Проще говоря, в EP1 и EP2 используются различные функции для загрузки эльфов. Вот и всё.
[
tim apple ] :
Обновлено. ЕР2 перенаправляет запуск эльфов от ЕР1 в загрузчик последнего (спасибо, что сделал там через ивент)
CrayZor
22.4.2009, 17:26
Ясно, спасибо за пояснение. Меня интересует такой вопрос, возможна ли на ЕР2 работа с драйвером дисплея напрямую, возможно ли будет подключать отдельные кодеки, и возможно ли будет написать таскменеджер?
Добавлено позже (22.4.2009, 17:28):Цитата
т.к. либа загружается лишь один раз, а использоваться может несколькими эльфами, то получаем экономию по памяти.
либу можно обновлять независимо от эльфов
увеличивается переносимость эльфов - на каждой платформе/проше либа содержит правильный код. а эльфы одни и теже
А разве на ЕР1 не так?
[
tim apple ] :
- работать с драйвером дисплея напрямую можно и без ЕР2.
- таскменеджер (список запущенных эльфов) уже
разрабатывается готов.
- я имел ввиду *.so-либы пользователей. библиотека ф-ций в ЕР2 является so. в ЕР1 фактически аналог.
fkcoder
29.4.2009, 7:04
syberside, например в ЕП2 контролируется импорт функций из либы, чего нет в ЕП1. То есть когда какой то функции которая используется в эльфе нет в либе то эльфпак так и напишет.
А про историю по-подробнее
syberside
30.4.2009, 1:02
ну я про то что также при использовании эльфов ни стого ни с сего ребуты будут?
[ tim apple ] :
ну зависит от причин конечно. а что касается ЕР2 то:
- если в либе не хватает функций то эльф не будет загружен
- ЕР2 написан с нуля и намного сложнее - ошибки есть, но будем стараться исправить
Swift
2.5.2009, 19:21
Так как я понял эльфы от телефонов с ЕР2 зависеть не будут, типо создал эльф и он на все телефоны идёт хорошо?Правильно?
[ tim apple ] :
не совсем. это реально если разработчик побеспокоится о переносимости кода:
- либо проверять на какой прошивке запущен эльф и учесть особенности реализации для каждой
- либо вынести платформо-зависимые участки кода в отдельную либу (при этом юзер должен будет иметь у себя нужную либу)
- либо комбинированный подход.
хотя это не всегда рационально - бывает что лучше создавать отдельные билды.
logotoy73
9.5.2009, 9:10
Обьясните тупому. За счет чего происходит экономия памяти. Ну с постлинкером понятно. А вот с использованием библиотек .so не пойму. Ведь если сейчас используется только динамическая компоновка, то значит при загрузки эльфа будут взяты нужные данные из библиотеки и размещены в эльфе, в памяти. Т. е. закрепляются в памяти эльфа. Немного сумбурно но думаю понятно обьяснил . Но тогда получается что никакой экономии нет, сам эльф будет весить мало, а в памяти развернется во всей красе . Просто удобство использования разными эльфами одной библиотеки с готовыми данными.
[ tim apple ] :
Ответ кроется в последнем предложении - тут не просто удобство, ведь код ф-ции будет в одном экземпляре, а не в каждом эльфе по копии.
fkcoder
9.5.2009, 9:24
logotoy73, с чего ты взял что он там развернется? Не все же эльфы будут либы юзать. И экономия памяти составляет достаточно много по сравнению с эльфом не обработанным постлинкером
logotoy73
9.5.2009, 9:54
С постлинкером мне всё понятно. Я про другое. К примеру взять Tunes, часть функции вынести в библиотеку. Сам эльф будет весить меньше. Так? Но при запуске в процессе загрузки в память он дополнится этими функциями и в памяти опять будет монстр :-) . Под этим я имел в виду когда сказал развернется.
[ tim apple ] :
всё верно, если библиотека используется только для одного эльфа.
Andy51
9.5.2009, 13:59
Цитата(logotoy73 @ Сегодня, 13:54)
при запуске в процессе загрузки в память он дополнится этими функциями и в памяти опять будет монстр
А вот здесь кстати может быть ещё одно преимущество - можно с помощью библиотек разбить "монстра" на части, и тогда не понадобится возиться с патчами на добавление очень-больших-блоков памяти.
K-E-N-N-Y
9.5.2009, 14:06
Прочитал последние посты и не совсем понял с загрузкой эльфов в память.
Как сильно это отобразиться на работе эльфов?
Вообще интересно,будет ли например тот же Tunes работать быстрее чем на EP1?
[ tim apple ] :
ЕР отвечает за загрузку эльфа в память и некоторые сервис-функции. на работу самого эльфа не влияет.
logotoy73
9.5.2009, 14:38
Т. е. понадобилась эльфу какая то библиотека, уже загруженная в память, компоновшик открыл её, получаем к примеру указатели на нужные функции, указатели подставляются в код эльфа, закрываем библиотеку. Так? Может не совсем понятно но думаю мысль ясна? Тогда действительно экономия памяти, которой не так уж и много. Просто не совсем понятен принцип работы с библиотеками.
[ tim apple ] :
почти прав. мысли шире: so-либы - это уже не просто набор указателей на ф-ции прошивки (как в стандартная либе), а код новых ф-ций и данные.
библиотека потом не закрывается - ведь эльф ее использует. а закрывается лишь когда закроются все эльфы, использующие ее.
baat
18.5.2009, 15:35
lavmen, +1
ati и на первом эльфпаке есть... можешь и на нём неплохие игры делать!
второй эльфпак просто более коректно собран, и из новых сверхвозможностей разве что менеджер запущенных приложений и возможность подключение общей внешней либы... всё в первом есть... ни 3д ни зверского увелечение скорости...