motofan logo
61 страниц V < 1 2 3 4 5 > »         
> 

Учимся писать эльфов вместе, Обсуждение процесса кодинга

Andy51
сообщение 29.10.2007, 20:13 Закрепленное сообщение!


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



Вот и долгожданное обновление SDK до v0.2

Основные новшества с прошлой версии:
+ Добавлено множество функций в SDK
+ Добавлено два новых примера - на этот раз GUI

Что внутри:
Папка SDK - ну, и так ясно, заголовочные файлы. За описаниями функций заглядываем в эту папку.

helloworld_snd - первый пример эльфа. Несколько нестандартный HelloWorld, заменяет озвучку цифровой клавиатуры системными звуками. Предназначен в основном для изучения структуры приложения (Application), ну и как пример приложения, работающего в фоне.

helloworld_gui - классический HelloWorld эльф, на этот раз с использованием GUI. Выводит сообщение с помощью диалога Notice. Предназначен для изучения структуры простейшего GUI-приложения.

ListTest - пример использования диалога List. Значительно более сложный пример, предназначен для изучения возможностей и принципов управления диалогами.

make_*.bat - батники для сборки эльфов-примеров. Эльфы расчитаны на компиляцию с комплектом ADS. Из-за правил форума, я не могу включить его в SDK, однако оставляю ссылки
http://ifolder.ru/3937671
http://slil.ru/25060171
http://rapidshare.com/files/67580866/ads.7z.html

Lib.o - для функционирования эльфа под моим загрузчиком, необходимо подлинковать этот файл к проекту (в make.bat уже прописан).
Внимание! Этот файл не зависит от конкретной версии прошивки, под которую собирается эльф, но, тем не менее, зависит от версии библиотеки!
В этом SDK уже включен Lib.o для библиотеки v071218 (оч. старый - не забудьте обновить, если понадобятся новые функции)

Пара слов об т.н. Application.
В телефонах motorola есть система AFW, которая позволяет, не затрачивая лишних ресурсов процессора на обеспечение "полноценной" многозадачности, достаточно полноценно работать нескольким приложениям, ориентированным на диалог с пользователем. Как это работает: приложения представляют собой, фактически, набор обработчиков событий(ивентов, events) + структура данных приложения. Откликаясь на те или иные события, приложения поочерёдно обрабатывают списки накопившихся ивентов. Таким образом, мы фактически имеем невытесняющую многозадачность.
Есть теоретическая возможность писать и эльфы, выделенные в отдельный процесс(task), но эта часть всё ещё в разработке.

Книги по Си
  1. Руководство полного идиота по программированию (на языке Си) - Не смотря на такое название все азы разжёваны. Если вы вообще никогда не видели Си, начните с этой книги
  2. Герберт Шилдт, "Полный справочник по С (4-е издание)"
    Прикрепленный файл Spr_po_C.rar   ( 934.62 килобайт ) Кол-во скачиваний: 1070
  3. "Язык программирования C"
    Прикрепленный файл C_book.zip   ( 220.86 килобайт ) Кол-во скачиваний: 814
Исходники эльфов
  1. SRC by om2804
  2. SRC by G-XaD
SDK
  1. SDK by om2804
  2. SDK by G-XaD
Эльфостроение на motoWiki

Компилятор + исходники от om2804 для EP1 скачать

Сообщение отредактировал om2804 - 3.5.2011, 13:59
Прикрепленный файл SDKv02.rar   ( 24.88 килобайт ) Кол-во скачиваний: 2043
Прикрепленный файл C_book.zip   ( 220.86 килобайт ) Кол-во скачиваний: 814
Прикрепленный файл Spr_po_C.rar   ( 934.62 килобайт ) Кол-во скачиваний: 1070
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vilko
сообщение 18.11.2007, 10:57


Мотокодер
******

Группа: Легенды MotoFan.Ru
Сообщений: 1 331
Регистрация: 23.6.2003
Из: Москва
Пользователь №: 71
Модель телефона: E398+, Е1000, ...

Рейтинг: 1108.5



весь stdlib (libc) в прошивке присутствует. так что ищите и пользуйтесь без сомнений )
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
S@modelkin
сообщение 18.11.2007, 11:26


Интересующийся
**

Группа: Пользователи
Сообщений: 81
Регистрация: 18.11.2007
Из: Нововаршавка, Омская обл.
Пользователь №: 154 260
Модель телефона: L7
Прошивка: Iron FX E0R

Рейтинг: 33



Опять вопросы возниклиsmile.gif
1) В gnuarm есть прога: arm-elf-jar.exe. В описании вроде бы(точно не знаю), написано, что она из jar делает elf. Это реально?
2) Чё-то я туплю или чё...smile.gif Как это взять из эльфа gsm_flash_dev?

Сообщение отредактировал S@modelkin - 18.11.2007, 11:31
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vilko
сообщение 18.11.2007, 11:28


Мотокодер
******

Группа: Легенды MotoFan.Ru
Сообщений: 1 331
Регистрация: 23.6.2003
Из: Москва
Пользователь №: 71
Модель телефона: E398+, Е1000, ...

Рейтинг: 1108.5



S@modelkin,
найти нужную функцию в эльфе по имени.
сделать ее паттерну. найти функцию по паттерну в целевой прошивке.
дописать в либу эту функцию с использованием адреса...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 18.11.2007, 11:32


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



Цитата(S@modelkin @ Сегодня, 14:26)

В gnuarm есть прога: arm-elf-jar.exe. В описании вроде бы(точно не знаю), написано, что она из jar делает elf. Это реально.
*

Ну, пробуй... Расскажешь, если что получится
Цитата(S@modelkin @ Сегодня, 14:26)

Как это взять из эльфа gsm_flash_dev?
*


тут

Добавлено позже (18.11.2007, 14:35):
Цитата(Vilko @ Сегодня, 14:28)

найти функцию по паттерну в целевой прошивке.
дописать в либу эту функцию с использованием адреса...
*

Два этих пункта комплект портации делает самостоятельно, нужно просто добавить паттерну в functions.pat. Да, ещё в LTE2 многие функции libc находятся в IROM - это уж надо добавлять их в LTE2_IROM.sym
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G-XaD
сообщение 8.12.2007, 2:06


Мастер
****

Группа: Разработчики
Сообщений: 171
Регистрация: 6.11.2007
Из: Donetsk City / Ukraine
Пользователь №: 153 083
Модель телефона: E1, k810
Прошивка: r373_g_0e.30.79r

Рейтинг: 323



Andy51,

Решил рассказать об ошибках
1) В файле SDK\dl.h неправильный код кнопки камеры. Я у себя исправил на
Код
#define KEY_CAM     0x3F // was 64

2) Помоему кусок кода неработает.
Код
    if( AFW_InquireRoutingStackByRegId( reg_id ) == RESULT_OK )
    {
        return RESULT_FAIL; // Нам не нужен второй экземпляр
    }

Судя по логеру я запускал 2 одинаковых приложения и получал 2 ответа на одно нажатие кнопки.
Немного порывшись в прошивке я нашел вызов функции AFW_AddAppToRoutingStack, это очень похоже на корень проблемы wink.gif

Сообщение отредактировал G-XaD - 8.12.2007, 2:07
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 18.12.2007, 19:35


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



SDK обновлён до v0.2. Много изменений - всего и не припомню... В общем, SDK вырос больше чем в два раза smile.gif

Ну, и конечно же, не забываем обновить библиотеку!

Сообщение отредактировал Andy51 - 18.12.2007, 19:38
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 19.12.2007, 17:17


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



Кстати говоря, я добавлял работу с редактируемыми формами и полями практически наобум. И, соответственно, не проверял этого, так что предоставляю разработчикам простор для исследований smile.gif
Также обратите внимание на функции файлового поиска, добавленные в filesystem.h - таким способом я получал список файлов в FBrowser. Назначение большинства флагов в FS_SEARCH_PARAMS_T также туманно.
В dl.h я добавил функции таймера. Как он работает я думаю, я понял, но опять же не проверял. При активации таймера с помощью APP_UtilStartTimer начинается отсчёт времени. Когда таймер срабатывает, возникает соответствующий ивент, который и надо обработать. APP_UtilStopTimer, насколько я понимаю, нужен только в случае циклического таймера. Я полагаю, многие обратят внимание на то, что с помощью этих функций возможно создать только один таймер. Дело в том, что это - утилитные функции, которые в свою очередь вызывают функции таймера более "низкого" уровня. Так что возможность создания нескольких таймеров присутствует, если добавить в SDK соответствующие функции.
Кстати говоря, в прошивке кроме таймеров есть ещё т.н. Alarms - насколько я понимаю, предназначены они для долгосрочного планирования ( по-моему, использовать таймер с миллисекундным разрешением - не есть хорошо для задачи, которая должна сработать через, скажем, неделю smile.gif )

Да, и в обновлённую библиотеку были включены все новые функции разработчиков на сегодняшний день.

Сообщение отредактировал Andy51 - 19.12.2007, 17:22
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G-XaD
сообщение 21.12.2007, 15:29


Мастер
****

Группа: Разработчики
Сообщений: 171
Регистрация: 6.11.2007
Из: Donetsk City / Ukraine
Пользователь №: 153 083
Модель телефона: E1, k810
Прошивка: r373_g_0e.30.79r

Рейтинг: 323



Выкладую исходники (если кому интересно) очень косячного tomato.gif файл-браузера. В принципе для ознакомления работы с поиском фалов. Через некоторое время юзания вылазит ребут, хотя с памятью вроде нормально работаю. В акшены нельзя вроде кинуть строку юникод, поэтому в там строки из лэнга - они означают "сменить диск". Иконки в дрм особо не искал. Потом какнибудь доделаю wink.gif

Требуется наличие в либе функций
Код
u_strcmp A E35000001351000003A00000012FFF1E
u_strncmp A E3520000135000001351000003A00000


Уже есть в библиотеке v071218 - A51

Сообщение отредактировал Andy51 - 21.12.2007, 16:39
Прикрепленный файл Motocmd.rar   ( 13.31 килобайт ) Кол-во скачиваний: 316
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 21.12.2007, 17:11


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



Цитата(G-XaD @ Сегодня, 18:29)

В акшены нельзя вроде кинуть строку юникод
*

Как это нельзя? Я помню, как китайцы жаловались, что в предыдущем FBrowser у них не отображались некоторые действия, которые я задавал по-русски в коде...
Цитата(G-XaD @ Сегодня, 18:29)

Через некоторое время юзания вылазит ребут, хотя с памятью вроде нормально работаю
*

Кхем...
Код
// Эта функция выделяет память! После ее использования обязательно освобождать эту память!
Ты писал? Так чего не соблюдаешь? laugh.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
RekGRpth
сообщение 12.1.2008, 10:33


Начинающий патчер
****

Группа: Пользователи
Сообщений: 234
Регистрация: 6.11.2006
Пользователь №: 106 009
Модель телефона: RoverPC N6
Прошивка: WM 6.1

Рейтинг: 359.5



ListTest.elf - для использования ввода строк, требует функцию
AFW_TranslateEvEvD T B5701C161C0D1C042800D01248682300
Прикрепленный файл ListTest.rar   ( 3.52 килобайт ) Кол-во скачиваний: 286
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Учимся писать эльфов вместе, Обсуждение процесса кодинга · Эльфы, их разработка и портирование · Forum
 

61 страниц V < 1 2 3 4 5 > » 
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 19.3.2024, 8:15

Форум живёт: