User Tools

Site Tools


palmemulator

Статья объясняет термины “эмулятор” (emulator) и “симулятор” (simulator), а также описывает специфику использования образов ROM.

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

На заре PalmOS для отладки программ использовался симулятор. Поскольку PalmOS многое унаследовал от MacOS, то вполне реально было создать набор библиотек, эмулирующий PalmOS API. Сборка программы с этими библиотеками позволяла запускать пальмовые программы под MacOS. Поскольку процесс отладки требовал MacOS и перекомпиляции программы, эта технология прожила недолго.

Следующим продуктом был эмулятор POSE. POSE вышел из эмулятора CoPilot и эмулятора амиги UAE, сменил несколько раз коллектив разрабочиков и успел побывать под патронажем Palm Inc. POSE - это редкий случай создания OpenSource эмулятора, пригодного к разработке под разнообразными платформами.

Что делает POSE? POSE эмулирует аппаратное устройство, поверх которого запускается PalmOS версий 1.x-4.x. POSE знает архитектурную специфику многих моделей устройсов от Palm, тем самым позволяя загружать в него различные образы ROM. Комбинация из “живого”, скопированного с реального устройства ROM со знанием архитектуры конкретного устройства позволяет очень близко эмулировать различные устройства.

Поскольку POSE исполняет реальный код конкретных версий PalmOS, то запуск программы под эмулятором вполне адекватен запуску на машинке. Отличия могут быть в следующих областях: точные временные замеры и работа с сетью.

Для работы с последовательным и инфракрасным портом в POSE есть возможность переназначить их на настоящие порты десктопа. Работа с сетью также может быть перенаправлена на существующий TCP стек десктопа.

POSE пригоден для тестовых прогонов новых программ. 98% всех программ прекрасно работают под POSE. Остальные не работают из-за использования различных схем защиты от копирования.

Компании, лицензировавшие PalmOS выпускали свои версии POSE. Handera включила поддержку своих устройств в основную версию POSE. POSE для Handspring, Sony, Fossil следует искать на сайтах соответствующих компаний. Эти версии более капризные чем основная, не всегда функционируют как реальное устройство и часто работают только под Windows.

ВОзникает вопрос, где взять образы ROM? Ответ номер один: со своей машинки. В состав эмулятора входит ROMTransfer.prc, который следует загрузить на устройство и выбрать в меню POSE опцию Transfer ROM. Если ваше устройство подключается через USB, то следует запускать POSE на той машине, где стоит Palm Desktop и перед запуском POSE скопировать в его каталог файлы usb*.dll из каталога Palm Desktop. Без этого действия в списке доступных способов подключения не будет USB. Также неплохо выгрузить HotSync Manager перед скачиванием образа. Технология позволяет скачивать образы даже от PalmOS 5, которые, впрочем, не работают под POSE.

Образы от недоступных устройств можно скачать в интернете. Для зарегистрированных разработчиков большинство образов лежит на сайте palmsource.com, для остальных есть поисковики.

Часть образов (особенно лежащие на palmsource.com) относятся к debug ROM image. Это отладочные образы, которые выявляют больше ошибок и некорректных использований, чем стандартные образы. Не стоит пытаться прошивать отладочные образы в реальное устройство.

Следующим инструментом для разработки был симулятор. Новый продукт со старым именем существует только под Windows, но по своей сути близок к оригинальному симулятору. Симулятор - это порт PalmOS 5 под Windows. В отличии от эмулятора, симулятор имитирует не устройство, а операционную систему PalmOS. Если эмулятор имитировал железо машинки, на которой выполнялся обычный код PalmOS, то симулятор имитирует PalmOS API, функции которого реально выполняются в dll. У такого подхода есть плюс - это скорость. Но есть и принципиальный минус - симулятор далек от реального устройства. То, что программа запускается под эмулятором вовсе не означает, что она запустится на реальной машине.

Другая специфика симулятора - это исполнение родного кода. Для машинок на PalmOS 5 родным кодом является код ARM-процессора. Программирование нативных программ недокументировано (см YetAnotherHackManager) и предполагается, что большая доля ПО будет написана на старом коде для процессоров DragonBall. Эмулятор PACE исполняет этот код, и только фрагменты критичные к скорости можно писать на ARM-коде.

Аналогично, программы запускаемые на симуляторы на 99% должны быть написаны на DragonBall. Оптимизированные фрагменты для тестирования на симуляторе нужно писать как обычную dll под windows. Это означает, что программа, вызывающая ARM-код не будет работать на симуляторе.

Компании, выпускающие специфические модели на PalmOS 5, выпускают свои версии симулятора. Эти версии учитывают специфику конкретных устройств, landscape разворот экрана итд. Симулятор от игровой приставки TapWave позволяет использовать джойпады для имитации джойстиков устройства Zodiac.

Поскольку симулятор ничего не знает о конкретном устройстве, а тем более не умеет исполнять ARM код, то подсовывать ему образ ROM от машинки не имеет смысла. Единственный правильный образ идет в составе симулятора. Именно его и нужно загружать. Замечу, что содержимым многих модулей в образе является указание на dll-файлы, где собственно и содержится ядро PalmOS и его расширения.

palmemulator.txt · Last modified: 2003/10/07 12:50 by 127.0.0.1