#title 리눅스로 PSP S/W 개발하기

[[TableOfCOntents]]

== 시작하기 전에 ==
PSP는 Play Station Portable의 약자로서, Sony에서 개발한 휴대용 게임기이다. 게임기능 뿐만 아니라, MP3플레이어, 동영상플레이어, 그외에 많은 소프트웨어를 구동시킬 수 있는데, 흥미로운 점은 일반인도 PSP용 소프트웨어를 직접 개발 할 수 있다는 것이다. 그래서 리눅스 플랫폼에서 PSP용 소프트웨어를 개발하는 방법을 소개하고자 한다. (작성자 : [IrIz])


==  개발환경 구축하기 ==
테스트한 개발 환경은 후지쯔 P5020(노트북), Fedora Linux Core3(운영체제), PSP(펌웨어1.5버전), Sandisk Memorystick Pro Duo 1G 이다.

 === 툴체인 설치하기 ===
 먼저 root 유저로 로그인한다. (당연하지만) [[BR]]
 툴체인을 설치하기 전에, subversion이 설치되어있어야 하는데, http://subversion.tigris.org/ 에서 받거나,
 {{{
yum install subversion
}}}
 명령어를 사용해서 설치한다. 그외에 make와 autotools가 필요하나, 설치되지않은 리눅스 배포본은 없을거라 생각하고 패스...

 PSP의 툴체인은 http://www.oopo.net/consoledev/ 에서 받을 수 있다. 파일명은 {{{psptoolchain-2005XXXX.tgz}}}이고, 적당한 경로에 압축을 푼다. 그리고 아래 실행 스크립트를 실행하면
 {{{
./toolchain.sh
}}}
 서버에 접속하여, 툴체인 소스코드를 다운로드, 컴파일, 설치가 자동적으로 진행된다.  (크로스컴파일러를 빌드하므로 꾀 많은 시간이 걸린다) [[BR]]
 {{{/usr/loca/pspdev/}}} 디렉토리에 설치가 완료된 것을 확인할 수 있다.


 === PSPSDK 설치하기 ===
 http://www.pspdev.org/ 사이트에 접속해서 PSPSDK 소스코드를 다운로드 받는다. ({{{pspsdk-1.0+beta.tar.gz}}} 파일) [[BR]]
 {{{/usr/local/pspdev/}}} 경로에, 다운받은 PSPSDK 소스코드파일을 복사하고, 압축을 푼다. 그리고, {{{/usr/local/pspdev/bin}}} 를 PATH환경변수에 추가한다.
 {{{
PATH=/usr/local/pspdev/bin:$PATH
}}}
 압축을 푼 PSPSDK 디렉토리({{{pspsdk-1.0+beta}}})로 들어가서 컴파일, 설치명령을 실행한다.
 {{{
./configure
make
make doxygen-doc
make install
}}}
 참고로 {{{make doxygen-doc}}} 라인은 생략해도 상관없다.


== 샘플코드 빌드하기 ==
많은 테스트 코드가 있지만, 한글 입출력을 하는 간단한 프로그램을 빌드해보도록 하겠다. 루리웹  파란산타님의 소스코드([http://ruliweb2.dreamwiz.com/ruliboard/read.htm?main=psp&table=util_psp&page=2&num=898&find=&ftext=&left=j&time= 출처])를 인용했다. 소스코드 압축을 풀고, Makefile을 열어, 다음 라인을 빌드환경에 맞게 수정한다.
{{{
(생략)
PSPSDK=/usr/local/pspdev/psp/sdk
(생략)
}}}
컴파일 한다.
{{{
make all
}}}
그러면 다음 세 개의 파일이 생성되는데, 프로그램을 돌리기 위해서는 {{{EBOOT.PBP}}} 만 있으면 된다.
 * {{{EBOOT.PBP}}}
 * {{{PARAM.SFO}}}
 * {{{sdktest.elf}}}
[[Attachment(hello_psp.jpg)]] PSP 에서 프로그램을 실행한 화면. [[BR]] [[BR]]
PSP의 펌웨어가 1.0이나 1.5버전에서 실행을 해 보려면, MSwapTool이나 PBP Unpacker 라는 도구를 사용해서 {{{EBOOT.PBP}}} 를 한단계 더 변환을 거쳐야 한다. 많은 사이트에서 쉽게 설명하고 있으므로, 여기에 대한 자세한 설명은 생략한다.


== 코멘트 ==
제 홈페이지의 위키페이지([http://new-type.com/wiki/wiki.php?PSP_Dev])를 KLDP Wiki에도 포스팅합니다. 아무래도 여기에서 글이 좀 더 잘 다듬어 질거라 기대해서... :) --[IrIz]

----
CategoryDevelopment