Открыть главное меню

Изменения

ElfPack2

1837 байт добавлено, 17:19, 9 октября 2011
м
Снята защита с «ElfPack2»
== Отличия от предыдущей версии и нововведения ==
ElfPack2 является улучшенной и полностью переработанной версией своего предшественника. Достаточно упомянуть, что объём кода увеличился почти в 4 раза, и при этом они не имеют общего кода.
*Для сборки эльфов используется компилятор GCC вместо ADS<br>Переход на GCC позволил реализовать полноценную систему импортов и динамических библиотек. 
*Основная библиотека функций имеет более сложный формат, при этом в ней хранится её версия и версия прошивки, для которой библиотека предназначена. При этом библиотека может быть перезагружена в любой момент - для этого более не требуется перезагружать телефон.
*Исправлена недоработка, связанная с передачей параметров в эльф в виде char вместо WCHAR
*Более совершенный обработчик auto.run
*Исправлена недоработка, связанная с передачей параметров в эльф в виде char вместо WCHAR.
== Нововведения ==*Более совершенный обработчик auto.run
*Добавлена полноценная система импортов функций по их именам. Если ранее для этой цели использовались механизмы сомнительной надёжности, что не раз приводило к различным проблемам, то теперь процедура загрузки эльфа стала гораздо более надёжной. Это в том числе означает, что для каждого загружаемого эльфа проверяется наличие в библиотеках всех требуемых им функций, и выводится сообщение об ошибке, если обнаружены несоответствия.
*В процесс сборки эльфа добавилось ещё одно звено - postlinker. Основная функция этой программы - подготовить эльф для загрузки в ElfPack2. Эльфы, не прошедшие такую обработку, запускаться не будут. Также postlinker создаёт стандартные библиотеки функий из sym-файлов.
 
*Важная особенность для русскоязычных разработчиков - теперь можно хранить исходники в кодировке UTF-8. За подробностями - ниже.
<pre>-v ^_^Nya1
</pre>
''Все же очень настаиваю называть версии в формате YYMMDDN, YYMMDD = дата, N - номер за день по возрастанию. Требуется для сравнения версий либ и определения самой свежей эльфом SyncLib [. ред.:[[Участник:Tim apple|Tim apple]]]
</li>
</ol>
А уже подготовленные образцы скриптов и файлов (а также собранный postlinker) Вы можете найти в Subversion (SVN) репозитории:
<tt>svn://svn.vilko.ru/libgen</tt>
 
О том, как пользоваться Subversion - в следующем разделе.
 
== Разработчикам ==
<tt>svn://svn.vilko.ru/elfpack2</tt> - исходный код эльфпака
<tt>svn://andy.wtf.la/elfpack2</tt> - зеркало
<tt>svn://svn.vilko.ru/elfs2</tt> - исходные коды эльфов для него
После установки клиента, чтобы скачать самые последние версии исходников с какого-либо репозитория:
#Cоздайте папку для проекта. '''Имя папки должно совпадать с именем репозитория.
#Нажмите на ней правой кнопкой мыши и выберите "SVN Checkout..."
#В поле "URL of repository" введите адрес репозитория. Остальные настройки менять не нужно.
== Инструментарий разработчика ==
Как уже упоминалось ранее, для сборки эльфов используется '''GCC'''. А именно, набор [http://www.devkitpro.org devkitPro], который широко используется для разработки под GameBoy Advance, Nintendo DS, GP32, Playstation Portable и GameCube. Из его состава, правда, понадобится только devkitARM часть, которая также включает множество бесполезных для разработчика эльфов приложений и требует много трафика для скачки. Возможно, найдутся желающие сделать специальный пакет программ для разработчиков эльфов...И уже есть первая версия настроенной среды разработки, собранная тов. '''DmT''': [http://forum.motofan.ru/index.php?showtopic=169109 EDK]
Скачать установщик можно здесь: [http://sourceforge.net/projects/devkitpro/files/Automated%20Installer/ Automated Installer]
del /Q *.o
del /Q telf3.elfpostlink prelink.elfren res.elf -o helloworld_snd.elf
pause
</pre>
*Файл std.sa выполняет функцию, аналогичную Lib.o предыдущей версии эльфпака
*Результат работы arm-eabi-ld мы передаём в postlink. Он создаёт результирующий файл res.elf - его мы переименовываем в helloworld_snd.elf и загружаем в телефон.
*Ключ -o у postlink задаёт имя результирующего файла
Для сборки C++ проекта используйте '''arm-eabi-g++''', а также добавьте следующие ключи:
-fno-enforce-eh-specs -fno-rtti -fno-use-cxa-get-exception-ptr -fno-exceptions -fno-non-call-exceptions
</pre>
 
=== Сборка shared library ===
</li>
<li>'''Исходники можно (и рекомендуется) сохранять в кодировке UTF-8:
:При этом будет корректно обрабатываться, например, такой код, содержащий кириллические символы:
 
<ul>
<pre>
WCHAR *str = L"Привет";
</pre>
Больше не нужно вводить такие строки посимвольно, а также для эльфов отпадёт проблема т.н. "неправильного ленга с кракозябрами".
Кто сталкивался с этим - поймёт.
</ul>
</li>
 
</ul>
 
 
== Заключение ==
 
Прогресс не стоит на месте, не стоит и нам с Вами - пора переходить на более совершенную технологию и постепенно отправить устаревший ElfPack1 в архив.
 
Тем более, что в новой версии для пользователей предоставляется значительно больше возможностей, а разработчикам нужно приложить относительно немного усилий для портирования своих эльфов на EP2.
 
[[Категория:Эльфостроение]]