Написание собственных эльфов
Итак...
Для того чтобы писать собственные эльфы нам понадобится:
1. Хотя бы начальные знания C (книжку для начинающих можно взять тут .
2. Компилятор и IDE для него. Называется IAR Embedded Workbench ARM
скачать можно:
-на оффициальном сайте www.iar.com (~100mb полная версия)
-здесь http://cbn.narod.ru/elf.html, здесь и тут(~10mb урезанная, без помощи и т.п)
Само собой:
3. Прямые руки(хотя бы чуть-чуть
) и немного мозгов.
Все. С приготовлением закончили.
Устанавливаем (или распаковываем) IAR например в корень диска C:
Если у вас все есть, то можно начинать творить:)
Сначала можно посмотреть примеры уже написанных эльфов.
Например, банальный helloworld (брать тут).
Краткая инструкция:
1. Запускаем IAR IDE, открываем Open existing Workspace один из примеров. 2.
2. Щелкаем в левом окне вверху на название проекта и выбираем меню Project->Options->Arm. (окошко настроек не закрываем)
3. В настройках линкера Linker->Config, в разделе "linker command file" ставим флажок напротив Override Default, и выбираем *.xcl файл, который (в большинстве случаев) лежит в каталоге с исходниками. (окошко можно закрывать).
4. Компилируем Project -> Rebuild All
Полученный эльф лежит: каталог с исходниками\Release\Exe\
PS. Если нужен эльф для x65, то перед компиляцией комментируем // в файле "каталог с IAR\ARM\swilib.h" строку
#define NEWSGOLD, если для s75, то убираем комментарий.
PPS. Если ругается ругается на png.h и т.д. и т.п. берем этот архивчик
Продолжение
Пишем собственный эльф:
Cоздание эльфов стало совсем простым делом
Проще всего подправить исходники готового примера, так как созднано множество эльфов, и довольно просто подобрать эльф схожей структуры.
К проекту должны быть подключены файлы Func.asm (точка старта) и div.r79. Эти файлы можно взять из предыдущих архивов.
Корректируем в main.c функции:
onkey - обработка клавиш (return 1 для выхода из эльфа)
onredraw - перерисовка экрана (массива screen[132*176])
onstart, oncreate - функции вызываются при старте
onclose, onexit - функции вызываются при выходе
REDRAW() вызываем для перерисовки экрана (запуска onredraw)
И ВСЕ! У Вас готовое приложение. Специфику Сименса знать не нужно вообще!
Также предлагаю в эту тему задавать вопросы по программированию, чтобы получилось что-то типа FAQ'a
PS Примеры и исходники можно посмотреть в соответствующих разделах форума на сименс клабе, а также Здесь