OpenWiki

Palm Emulator

Edit this page (last edited October 7, 2003)
Palm Notes | Recent Changes | Title Index | User Preferences | Random Page | Help
Статья объясняет термины "эмулятор" (emulator) и "симулятор" (simulator), а также описывает специфику использования образов ROM.

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

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

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

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

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

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

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

Компании, лицензировавшие Palm OS выпускали свои версии 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 перед скачиванием образа. Технология позволяет скачивать образы даже от Palm OS 5, которые, впрочем, не работают под POSE.

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

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

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

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

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

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

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


Palm Notes | Recent Changes | Title Index | User Preferences | Random Page | Help
Edit this page
Print this page | View XML
Find page by browsing, searching or an index
Edited October 7, 2003 (diff)
Valid XHTML 1.0!Valid CSS!