The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Разработка программ для PalmOS под Linux (palm gcc debug)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: palm, gcc, debug,  (найти похожие документы)
From: Сергей Индлин <indlin на abc92 тчк ru> Date: Mon, 2 Aug 2004 14:31:37 +0000 (UTC) Subject: Разработка программ для PalmOS под Linux Оригинал: http://www.abc92.ru/articles/palm/linuxdev Разработка программ для PalmOS(TM) под Linux Сергей Индлин <indlin на abc92 тчк ru> JID: serj на abc92 тчк ru История переиздания Издание 0.3 05 Dec 2002 Alexandre Prokoudine Разметка оптимизирована для проекта документации ALT Linux. Издание 0.2 04 Dec 2002 Добавлена лицензия FDL Издание 0.1 02 Dec 2002 Начальный вариант Аннотация Эта статья посвящена программам под Linux, позволяющим разрабатывать приложения для PalmOS(TM). Содержание 1. Введение 2. PalmOS SDK 3. Prc-tools 4. POSE 5. Guikachu и pilrc 6. Отладчик DDD 7. Среда разработки Глава 1. Введение ----------------- В этой статье я хотел бы остановиться подробнее на разработке программ для PalmOS(TM) в Linux. Я использую дистрибутив ALT Linux Master 2.0 (http://www.altlinux.ru/) с настроенным репозитарием пакетов Sisyphus (http://www.altlinux.ru/index.php?module=sisyphus ), откуда можно легко установить большинство необходимых программ. Конечно, все используемые программы можно скачать в интернете, и использовать бесплатно. Я не буду подробно описывать технологию программирования в PalmOS(TM) -- для этого много документации можно найти в Интернете. Главными справочниками разработчика являются Palm OS Companion and Reference (http://www.palmos.com/dev/support/docs/palmos50-html.zip). На том же сайте вы можете найти много полезной документации, предназначенной для разработчиков: http://www.palmos.com/dev/support/docs/. Неплохой форум, посвященный разработке под PalmOS(TM) можно найти на сайте http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=palmos. Из конференций (news-groups) могу порекомендовать сервер news://news.falch.net -- конференция pilot.programmer.gcc (на английском). Хороший каталог ресурсов по разработке для Palm на OpenNet (http://www.opennet.ru/prog/sml/71.shtml). Кратко перечислю используемые программы: PalmOS SDK библиотеки и заголовочные файлы; prc-tools собственно кросс-компилятор gcc и другие инструменты для компиляции и сборки программ под PalmOS(TM); pose эмулятор Palm. Позволяет отлаживать программы с помощью m68k-palmos-gdb, без риска потерять все данные на реальном устройстве; pilrc компилятор ресурсов для PalmOS(TM). Преобразует rcp (текстовый файл описания ресурсов) в бинарные файлы формата PalmOS(TM) guikachu графический редактор ресурсов PalmOS(TM) (на базе gtk/gnome). Позволяет "рисовать" интерфейс приложений PalmOS(TM) ddd графический frontend к отладчику gdb, включая m68k-palmos-gdb; gvim редактор исходных текстов. Подойдет любой привычный редактор или среда; Глава 2. PalmOS SDK ------------------- Для работы с gcc надо на странице http://www.palmos.com/dev/tools/sdk/ перейти в раздел нужной версии SDK и скачать архив в разделе "Unsupported Palm OS SDK 5.0 for PRC-Tools". Я надеюсь, что rpm установит файлы куда надо, а для архива tar.gz надо делать так: 1. создать каталог /usr/local/palmdev/sdk35 и линк на неё -- /usr/local/palmdev/sdk (что-бы легко переключаться между версиями SDK): mkdir /usr/local/palmdev/sdk35 ln -s /usr/local/palmdev/sdk35 /usr/local/palmdev/sdk 2. Из архива скопировать содержимое каталога Palm OS 3.5 Support/Incs в каталог /usr/local/palmdev/sdk35/include, и Palm OS 3.5 Support/GCC Libraries -- в /usr/local/palmdev/sdk35/lib Документацию можно найти на http://www.palmos.com/dev/support/docs/ в разных форматах. Нам больше подойдет вариант в HTML или PDF. Глава 3. Prc-tools ------------------ Скачать последнюю версию можно с домашней страницы prc-tools (http://prc-tools.sourceforge.net/). На текущий момент это версия 2.2, которая поддерживает последние модели Palm-based устройств на ARM-процессорах и PalmOS SDK 5. В пакет prc-tools входят программы: build-prc строит из бинарных файлов и ресурсов файл .prc готовый к установки на Palm; m68k-palmos-ar позволяет создавать свои библиотеки m68k-palmos-c++ для Palm можно писать программы на C++ (это тема отдельного разговора и многочисленных споров); m68k-palmos-gdb отладчик программ. Можно использовать линк с реальным устройством или эмулятором POSE; Другие инструменты prc-tools во многом повторяет стандартный пакет gcc, и изначально являлся хаком 2.95 версии gcc. Поэтому команды и ключи prc-tools не покажутся необычными программисту, работавшему с gcc. Специфичные для PalmOS(TM) опции можно посмотреть на соответсвующей странице (http://prc-tools.sourceforge.net/doc/prc-tools.html). Глава 4. POSE ------------- POSE это эмулятор PalmOS(TM)-based машин. Существует версия для UNIX(TM), MacOS(TM), Windows(TM). Исходники можно найти на соответствущей странице (http://www.palmos.com/dev/tools/emulator/). Для дистрибутивов 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 (http://www.palmos.com/dev/tools/emulator/#roms ). Также можно скопировать ROM с самого устройства Palm. Для этого надо: 1. Установить и настроить пакет pilot-link (см. мою статью Подключение и работа с PalmOS наладонниками в Linux, http://www.abc92.ru/articles/palm/synclinux); 2. Установить на Palm программу getrom2.prc: pilot-xfer -i /usr/share/pilot-link/getrom2.prc Для старых моделей, с объёмом ROM в 512Кб можно использовать getrom.prc; 3. Запустить на Palm установленную программу getrom и нажать кнопку Start. В Linux запустить программу pi-getrom; 4. Полученный pilot.rom можно загружать в POSE. Замечание На последних моделях Palm getrom2.prc использовать нельзя. Достаточно нажать кнопку синхронизации и запустить pi-getrom. Теперь можно запустить и настроить POSE. В открывшемся окне POSE нажатием правой кнопки мыши вызывается меню. Выберите пункт New и заполните поля: * В поле ROM file надо открыть пункт Other и выбрать файл, скачанный с помощью pi-getrom; * В поле Device появиться номер модели; * В поле Skin выберите шкурку; * В поле RAM size -- размер памяти вашего виртуального Palm; Теперь можно устанавливать и отлаживать программы. Глава 5. Guikachu и pilrc ------------------------- Программа для PalmOS(TM) состоит из ресурсов. Сам код является специфичным типом ресурса. Также как и текст программы, ресурсы описываются текстовым файлом (стандартное расширение .rcp), который можно редактировать напрямую в текстовом редакторе. Для визуального редактирования ресурсов существуют такие программы как pilrcedit и guikachu. Pilrcedit (http://www.wn.com.au/rnielsen/pilrcedit/) -- это Java-приложение, и мне показалось не слишком удобным. Guikachu написан под Gtk+/GNOME, использует XML, как формат сохраняемых файлов, и активно развивается. Последняя стабильная версия на текущий момент -- 1.2.3. Скачать можно с домашней страницы (http://cactus.rulez.org/projects/guikachu). Для дистрибутивов ALT Linux, guikachu можно установить командой apt-get install guikachu. Чтобы преобразовать исходный файл guikachu в RCP-файл, достаточно дать команду guikachu2rcp name.guikachu или выбрать пункт Экспорт RCP из меню Файл. Guikachu поддерживает следующие типы ресурсов: * Форма; * Диалог; * Меню; * Строка; * Списки строк; * Текстовые поля; В формы можно добавлять: статический текст, поля, кнопки, списки, таблицы, пользовательские элементы. Интерфейс достаточно понятен и удобен. После получения rcp файла, его необходимо преобразовать в бинарный формат. Для этого служит программа pilrc (http://www.ardiri.com/index.php?redir=palm&cat=pilrc) (пользователи Sisyphus могут ее установить командой apt-get install pilrc). Синтаксис достаточно прост: pilrc -H name.h name.rcp. По этой команде создадутся необходимые .bin-файлы, и заголовочный файл с определениями идентификаторов. Замечание Все идентификаторы ресурсов в PalmOS(TM) должны быть числовыми, но в программе удобнее пользоваться говорящими именами. Ключ -H позволяет автоматически сгенерировать заголовочный файл с "#define Имя Число", давая возможность в программе использовать конструкции типа "case MY_BEST_BUTTON:" вместо "case 9991:". Глава 6. Отладчик DDD --------------------- m68k-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. Все эти программы можно настроить для разработки под PalmOS(TM). Универсальным и мощным средством работы является 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://forum.abc92.ru/phpBB2/viewforum.php?f=7 Данная статья распространяется под лицензией GNU Free Documentation License версии 1.2 (http://www.gnu.org/copyleft/fdl.html ). Исходный текст в формате docbook доступен для загрузки (http://www.abc92.ru/articles/palm/linuxdev/linuxdev.docbook). © "A.B.C.-92" 2002

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру