Сам
не особо верю в происходящее, но я, кажется, действительно пишу статью
о программировании на PSP, причем намного более сложную, чем в
состоянии понять мой далекий от C/C++ мозг. BonifacE взял паузу
неопределенного размаха, поэтому о работе с IDE Eclipse, запуске программ через PSPLINK и их отладке с помощью GDB Server постараюсь рассказать вам я, ваш верный админ .
Запаситесь
терпением и вниманием, ведь от удобной и полноценной разработки
приложений для Sony PSP вас отделяет всего 4 не самых сложных действия.
I. Minimalist PSPSDK – ленивое счастье без лишнего «цыгвина»
Начитавшись
мануалов по программированию, размещенных в прикрепленных темах крупных
зарубежных форумов, мне стало как-то грустно… Сами посудите: цепочка
программ, необходимая для компиляции проекта под PSP (её зовут
toolchain), изначально написана под ОС Linux. Поэтому нам, закоренелым
заводчикам «Винды», все гуру советуют ставить cygwin, через него качать
свежий toolchain c SVN репозитария, компилировать его в течении 5-7
часов и молиться, чтобы при этом не вылезли какие-нибудь неочевидные
ошибки, лечащиеся только заменой компа.
Не нравится? Ну вот и
мне не очень понравилось. Тем радостнее было наткнуться на такую
замечательную сборку SDK, как Minimalist PSPSDK. Сборка довольно часто
обновляется, имеет свой официальный сайт, поставляется с заранее скомпилированными бинарниками и компилятором без cygwin`озависимости. Словом – лепота!
Если
у вас в системе установлены другие PSPSDK, то от них лучше заранее
избавиться, дабы минимизировать возможные проблемы. Скачанный
инсталлятор следует запустить и смело прощелкивать кнопку Next до
самого Finish`а.
Минимальный
набор для программирования уже установлен на вашем ПК. Хотите в этом
убедиться? Без проблем. Запускайте консоль, переходите в папку
c:/pspsdk/psp/sdk/samples/controller/basic/ и выполните команду make.
Если
все пойдет по плану, то уже через несколько секунд у вас в этой же
папке появится еще кучка файлов, включая заветный EBOOT.PBP. Для
верности можете скопировать его в папку PSP/GAME/TEST/ и убедиться, что
программа запускается и работает (проверял на PSP Slim с прошивкой
4.01M33-2).
Чтобы
не мучить себя постоянным набиванием длинных путей в консоли, я вам
настойчиво рекомендую приучать себя к использованию нормального
файлового менеджера с поддержкой запуска командной строки из любой
папки. Я предпочитаю использовать Total Commander, чего и вам желаю.
Первый, самый простой этап, позади.
II. Eclipse Ganymede – среда разработки C/C++ приложений
Мелкие
программки из серии пробы пера, конечно, можно и нужно писать в обычном
текстовом редакторе. Но когда речь заходит о более серьезном проекте,
то без полноценной IDE никак не обойтись. Как раз для такого случая и
пригодится Eclipse.
Написан
он на Java, в чем есть как определенные плюсы, так и вполне явные
минусы. Устанавливать Eclipse не нужно, просто распакуйте архив в любую
удобную папку и запустите EXE`шник. Думает он долго, ворочаясь раза в
три дольше, чем Фотошоп.
Рано
или поздно программа спросит вас, в какой папке вы будете хранить свои
проекты. Здесь (как, впрочем, и всегда) лучше задать папку без русских
букв в названии и без пробелов. Если вам кажется, что Рабочий стол –
это хороший выбор, то вынужден вас разочаровать – это один из самых
неудачных вариантов. Другое дело – корень диска C! Можно сказать,
классика жанра :).
Теперь придется чуть-чуть пошаманить:
1) Project – New – C++ Application 2) Project name должен быть написан латиницей и без(!) пробелов
3) Finish 4) File – Import – General – File System 5) Browse - c:/pspsdk/psp/sdk/samples/template/elf_template/ 6) Галочки на main.c и Makefile
7) Finish
Заготовка
программы успешно импортирована в Эклипс. Вы даже можете собрать эту
простенькую программу простым нажатием на кнопку Build (Молоток). Для
перехода к следующему действию остается только
1) перейти на вкладку Makefile 2) добавить в него строку BUILD_PRX = 1
3) сохранить (кнопка в виде дискетки) 4) Project – Clean – OK
Данные
манипуляции вы произвели для того, чтобы комилятор сделал нам помимо
файла *.elf еще и *.prx, без которого дальше будет не обойтись.
III. PSPLINK – запуск homebrew с хоста без возврата в XMB
Необходимость
каждый раз компилировать программу, перегонять её на PSP, запускать,
видеть на экране ошибку, чертыхаться и снова активировать режим USB –
способна отпугнуть многих неподготовленных «программеров». Но и из этой
ситуации есть выход – поставить PSPLINK, являющийся, по сути, чем-то
вроде RemoteJoy наоборот. С его помощью вы сможете запускать на PSP
приложения с жесткого диска, вообще не касаясь самой консоли. И не
просто запускать, но и останавливать, рекомпилировать и запускать
снова.
Качать ничего не нужно, все программы уже входят с состав MPSDK:
1) скопируйте папку c:/pspsdk/psplink/psp/oe/ в PSP/GAME/ 2) переименуйте её в PSPLINK (не обязательно, но так проще ориентироваться) 3) подключите USB кабель и запустите PSPLink из меню Игра – Карта памяти 4)
если вы раньше не пользовались хостами, то система попросит у вас
драйвера для нового устройства PSP Type B. Найти их можно в папке
c:/pspsdk/bin/driver/. 5) открывайте консоль (как вариант – Total Commander), переходите в папку c:/pspsdk/bin/ 6) запускайте usbhostfs_pc, задав ему в качестве аргумента относительный путь до папки с вашим проектом. Например:
usbhostfs_pc ../../HOMEBREW/
Здесь
еще можно сделать ход конем и использовать для PSPLINK`а USB хост из
комплекта PSPHost 2.0. Правда для этого нужно будет подменить файлы
cygncurses-8.dll cygreadline6.dll cygwin1.dll
на
такие же из папки c:/pspsdk/bin/, а также файл usbhostfs.exe на
usbhostfs_pc.exe. Это позволит вам с легкостью перенастраивать хост на
любую папку и избавиться от лишнего консольного окошка на панели задач.
USB хост поднят, PSPLINK запущен. Если все прошло успешно, то вы услышите звук как при установке или изъятии флэшки.
7) запустите c:/pspsdk/bin/pspsh.exe (есть смысл сразу сделать под него ярлык или bat`ник) 8) вы должны увидеть надпись host0:/> 9) для полной уверенности в работоспособности PSPLINK наберите команду ls (список файлов в каталоге).
Если
вы не пропускали предыдущие пункты данного руководства, то у вас уже
должен быть скомпилированный файл template.prx, который можно запустить
командой
./template.prx
Обратите внимание, что в
консоли работает автодополнение имен и команд по нажатию на TAB.
Вызывать ранее введенные команды можно кнопками вверх и вниз. Это очень
удобно, не забывайте об этих возможностях. А на экране PSP тем временем
уже должна крутиться ваша программа. Прервать сие чудесное зрелище
можно сочетанием клавиш Alt+R. PSPLink перезагрузится и запуск PRX`а
можно будет повторить. Выход в XMB осуществляется командой exit.
Если
вы не поняли – PRX в данном случае ничем кроме оболочки не отличается
от EBOOT.PBP. Это не плагин для прошивки, нет. Это та же самая
программа.
Таким образом, вы уже можете редактировать и
собирать вашу программу в Эклипсе и быстро проверять её на запуск с
помощью PSPLINK. Для полного счастья остается выполнить всего одно
действие.
IV. GDB Server – полноценная отладка
Не буду
объяснять, что есть отладка и для чего она нужна. И не потому, что это
столь явно и очевидно, а просто потому, что я сам не особо понимаю
смысл и пользу описанных далее махинаций .
1) запускайте Eclipse. 2) Run – Debug Configurations
3) Двойной щелчок по C/C++ Local Application 4) Name любое, Project ваш 5) C/C++ Application – ваш скомпилированный файл с расширением ELF
6) переходите на вкладку Debugger 7) Debugger: gdbserver Debugger 8) на подвкладке Main укажите путь c:/pspsdk/bin/psp-gdb.exe в графе GDB Debugger
9) на подвкладке Connection выберите Type: TCP, Port number: 10001 10) Apply, Close
Настройка закончена, теперь непосредственно сам процесс:
1) запускайте PSPLINK 2) выполните команду debug ./template.prx (template – лишь пример, сами понимаете) 3) в Eclipse нажимайте на кнопку с жуком (Debug)
Брэйкпоинты,
регистры и дизассемблирование в вашем полном распоряжении. Для
прекращения отладки сделайте Terminate в Эклипсе и перезапустите
PSPLINK нажатием Alt+R. Для повторной отладки после рекомпиляции
команду debug нужно будет вводить заново.