В этой статье я хотел бы остановиться подробнее на разработке программ для Palm OS в Linux. Я использую дистрибутив ALT Linux Master 2.0 с настроенным репозитарием пакетов Sisyphus, откуда можно легко установить большинство необходимых программ. Конечно, все используемые программы можно скачать в интернете, и использовать бесплатно. Я не буду подробно описывать технологию программирования в Palm OS - достаточно много информации по этой теме можно найти в Интернете. Главными справочниками разработчика являются Palm OS Companion and Reference. На том же сайте вы можете найти много полезной документации, предназначенной для разработчиков: http://www.palmos.com/dev/support/docs/. Неплохой форум, посвященный разработке под Palm OS можно найти на сайте http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=palmos. Из конференций (news-groups) могу порекомендовать сервер news://news.falch.net/ — конференция pilot.programmer.gcc (на английском). Хороший каталог ресурсов по разработке для Palm на OpenNet. Кратко перечислю используемые программы:
Для работы с gcc надо на странице http://www.palmos.com/dev/tools/sdk/ перейти в раздел нужной версии SDK и скачать архив в разделе “Unsupported Palm OS SDK 5.0 for PRC-Tools”. Я надеюсь, что rpm установит файлы куда надо, а для архива tar.gz надо делать так:
Документацию можно найти на http://www.palmos.com/dev/support/docs/ в разных форматах. Нам больше подойдет вариант в HTML или PDF. Глава 3. Prc-toolsСкачать последнюю версию можно с домашней страницы prc-tools. На текущий момент это версия 2.2, которая поддерживает последние модели Palm-based устройств на ARM-процессорах и Palm OS SDK 5. В пакет prc-tools входят программы:
prc-tools во многом повторяет стандартный пакет gcc, и изначально являлся хаком 2.95 версии gcc. Поэтому команды и ключи prc-tools не покажутся необычными программисту, работавшему с gcc. Специфичные для Palm OS опции можно посмотреть на соответсвующей странице. Глава 4. POSEPOSE это эмулятор Palm OS-based машин. Существует версия для UNIX, MacOS, Windows. Исходники можно найти на соответствущей странице. Для дистрибутивов ALT Linux достаточно дать команду apt-get install pose. Так-же доступны пакеты pose-skins и pose-doc. Пакет pose-skins нужен для корректной работы с конкретными моделями Palm. Доступны шкурки для Palm, Handspring, Workpad, HandEra разных моделей. Для работы понадобиться ещё и образ системной памяти Palm (ROM Image Files), который по лицензионным ограничениям распространяться в составе дистрибутива не может. Для получения ROM Image Files необходимо подписаться на Palm OS Developer Program. Также можно скопировать ROM с самого устройства Palm. Для этого надо:
На последних моделях Palm getrom2.prc использовать нельзя. Достаточно нажать кнопку синхронизации и запустить pi-getrom. Теперь можно запустить и настроить POSE. В открывшемся окне POSE нажатием правой кнопки мыши вызывается меню. Выберите пункт New и заполните поля:
Вот как выглядит POSE, настроенный на Palm m505: Теперь можно устанавливать и отлаживать программы. Глава 5. Guickachu и pilrcПрограмма для Palm OS состоит из ресурсов. Сам код является специфичным типом ресурса. Также как и текст программы, ресурсы описываются текстовым файлом (стандартное расширение .rcp), который можно редактировать напрямую в текстовом редакторе. Для визуального редактирования ресурсов существуют такие программы как pilrcedit и guikachu. Pilrcedit — это Java-приложение, и мне показалось не слишком удобным. Guikachu написан под Gtk+/GNOME, использует XML, как формат сохраняемых файлов, и активно развивается. Последняя стабильная версия на текущий момент — 1.2.3. Скачать можно с домашней страницы. Для дистрибутивов ALT Linux, guikachu можно установить командой apt-get install guikachu. Чтобы преобразовать исходный файл guikachu в RCP-файл, достаточно дать команду guikachu2rcp name.guikachu или выбрать пункт Экспорт RCP из меню Файл. Guikachu поддерживает следующие типы ресурсов:
В формы можно добавлять: статический текст, поля, кнопки, списки, таблицы, пользовательские элементы. Интерфейс достаточно понятен и удобен. После получения rcp файла, его необходимо преобразовать в бинарный формат. Для этого служит программа pilrc (пользователи Sisyphus могут ее установить командой apt-get install pilrc). Синтаксис достаточно прост: pilrc -H name.h name.rcp. По этой команде создадутся необходимые .bin-файлы, и заголовочный файл с определениями идентификаторов. ЗамечаниеВсе идентификаторы ресурсов в Palm OS должны быть числовыми, но в программе удобнее пользоваться говорящими именами. Ключ -H позволяет автоматически сгенерировать заголовочный файл с “#define Имя Число”, давая возможность в программе использовать конструкции типа “case MY_BEST_BUTTON:” вместо “case 9991:”. Глава 6. Отладчик DDDm68k-palmos-gdb является версией стандартного gdb, пропатченного под Palm, поэтому можно использовать графические оболочки к gdb. Здесь я расскажу про отладку под ddd. Чтобы программа собралась с отладочной информацией, надо добавить ключ -g в вызове m68k-palmos-gcc. Размер окончательного .prc-файла увеличится мало — добавиться только заглушка, передающая управлению внешнему отладчику на хосте. Вся отладочная информация записывается в объектный модуль, который и надо загружать в отладчик. Для запуска ddd в качестве frontend к m68k-palmos-gdb надо дать ключ --debugger m68k-palmos-gdb: ddd --debugger m68k-palmos-gdb Первым делом стоит загрузить (Ctrl-O) объектник с отладочной информацией (тот файл, который указан в опции -o m68k-palmos-gcc). Чтобы стартовать сессию отладки в окне gdb надо дать команду target pilot localhost:6414. По указанному порту POSE общается с отладчиком. ЗамечаниеДля упрощения, можно создать в ddd кнопку. Для этого надо открыть меню Commands->Edit Buttons и в пункте Console Buttons ввести: target pilot localhost:6414. После этого над окном отладчика появиться кнопка с введенной командой. Теперь отладчик ждет, когда на pose запустят программу. При старте в эмуляторе программы, управление немедленно передастся в ddd, и экран POSE останется черный, пока не пойдет вывод из программы. Теперь можно как обычно устанавливать точки прерывания, просматривать значения переменных и т.д. Вот как выглядит сессия отладки: Глава 7. Среда разработки Под Linux можно собрать для себя эффективную среду разроботки. Выбор довольно широк: vi, emacs, Anjuta, KDevelop. Все эти программы можно настроить для разработки под Palm OS. Универсальным и мощным средством работы является make. Ниже приведен примера файла Makefile с комментариями. # Имя prc файла PRC = name.prc # Уникальный идентификатор приложения. # Должен быть зарегистрирован на сайте # http://dev.palmos.com/creatorid/ CID = TeSt # Имя приложения, показываемое в Launcher NAME = Name # Объектные файлы, из которых состоит программа OBJS = module1.o module2.o module3.o # Файл, созданный guikachu GUI = name.guikachu # Файл, создаваемый в результате работы guikachu2rcp RCP = name.rcp # Базовая программа вызова компилятора CCBASE = m68k-palmos-gcc -DOS35 -DPRC2 -fno-exceptions -fno-rtti # Для окончательного проекта эту опцию можно закомментировать DEBUG = -g CC = $(CCBASE) $(DEBUG) # Вызов команды, генерирующей зависимости файлов DEPEND = makedepend # Сначало надо вызывать pilrc, т.к. идентификаторы ресурсов # уже могут использоваться в программе all: $(RCP) $(PRC) # rcp файл зависит от guikachu $(RCP): $(GUI) guikachu2rcp $(GUI) pilrc -H $(NAME).h $(RCP) # prc файл зависит от ресурсов и объектных модулей $(PRC): $(RCP) $(OBJS) $(CC) $(OBJS) -o $(NAME) build-prc $(PRC) "$(NAME)" $(CID) $(NAME) *.bin # Выведем результат сборки, что-бы контролировать размер ls -l *.prc # Объектные модули получаются в результате компиляции всех файлов # с расширением .c (или .cpp) - # нужное раскоментировать # .cpp.o: .c.o: $(CC) -c $< # Для генерации зависимостей от .h файлов, используйте make dep #dep: *.cpp dep: *.c $(DEPEND) *.c # Очистить рабочую директорию clean: rm -f *.bin rm -f *.o rm -f $(NAME) rm -f *.grc rm -f *~ rm -f $(RCP) http://www.palmq.ru URL этой статьи: http://www.palmq.ru/sections.php?op=viewarticle&artid=76 |