www.zap.pe.kr

admin login

ARM7TDMI Kernel

예전부터 ARM 프로세서를 공부해보고 싶었지만, 워낙 개발장비가 비싸 구입할 엄두도 못내고 그냥 시간을 흘려보냈습니다. 영원히 다뤄볼 기회가 없을것만 같았는데, 우연한 기회에 닌텐도社에서 출시한 GBM이라는 기기를 알게되어 ARM을 접할 수 있게 되었죠. GBM(GBA Micro)은 16.67MHz의 ARM7TDMI 프로세서와 액정이 장착된 휴대용 게임기로, 직접 코드한 프로그램을 돌려서 결과를 확인할 수 있는 저렴한 개발키트와 비슷합니다. (사실 왠만한 개발키트에 뒤지지 않습니다.) 이제 환경이 만들어졌으니, 앞으로 이 섹션에서는 ARM과 관련되어 틈틈히 개발한 자료들을 담을 예정입니다. 재미있게 보셨으면 좋겠군요. 중단됐습니다. 팔았음. ^^;



ARM7TDMI Kernel v1.0 - 2005년 10월 6일

GBA는 자체 OS를 가지고 있지 않습니다. 부팅을 도와주는 간단한 BIOS 코드만을 가지고 있기 때문에, 화면에 글씨 하나를 출력 하려 해도 각종 하드웨어 레지스터를 손봐야 하죠. 그래서 일을 간편하게 하기위해, 직접 커널을 제작하기로 했습니다. 이번에 제작한 커널은 좀 쓸만하게 만들어 보려고 노력했습니다. 멀티태스킹 지원, 동기화 오브젝트의 지원(Mutex, Semaphore, Event 등등), 8단계의 우선순위 그룹 지원등으로 태스크의 활용 능력을 높인것들을 예로 들 수 있죠. 그런대로 쓸만합니다. 그리고 개인적으로 커널 작업을 하면서 ARM 프로세서를 많이 이해할 수 있었습니다. 처음 접하는 프로세서를 커널 작업을 통해 접근해 보는 방법도 좋은것 같네요.

  • system.zip - zip. VisualHAM의 system 폴더를 이 파일들로 덮어 씌우세요. 그래야 커널이 컴파일 됩니다.
  • kernel_v10_src.zip - zip. 커널 소스는 아래 Media Center에 함게 동봉 되어 있습니다.



GBA Media Center (Snake + JukeBox) - 2005년 10월 6일

위의 커널 예제로 사용하기 위해 만든 GBA용 Media Center 입니다. 간단한 게임과 음악을 플레이하는 코드가 들어 있습니다. 게임은 예전에 Chobits OS를 개발할때 만들었던 Snake를 포팅했습니다. 화면이 작아서 제대로 플레이 할 수 있을지가 의문이었는데, 직접 해보니 그런데로 할만 하네요. JukeBox는 GBA 하드웨어가 지원하는 DirectSound 기능을 이용해 음악을 플레이 합니다. 현재는 간단히 한개의 음악을 반복적으로 플레이 하고 있습니다. (GBA의 사운드 성능에 비하면 꽤 들을만 합니다.) 그리고, 소스를 보시면 아시겠지만 Snake와 JukeBox는 서로 독립적인 태스크로 작동 됩니다. 둘다 Intro Task와 동기화 되어 시작되니 커널의 동기화 특성도 살펴보실 수 있습니다.







References

유용한 문서

관련 서적

홈페이지 링크

    $ ARM 관련 페이지 $
  • ARM.com - 영문. ARM 공식 페이지. 각종 기술문서 자료를 제공.

    $ GBA 과련 페이지 $
  • VisualHAM - 영문. 윈도우즈용 GBA 개발툴인 VisualHAM 배포 공식 사이트.
  • GameBoyAdvance Development - 영문. GBA용으로 개발된 각종 샘플 소스를 제공.
  • The Audio Advance - 영문. GBA의 사운드 프로그래밍에 관련된 문서와 소스를 전문적으로 제공.
  • Linux Port to the Game Boy Advance - 영문. uClinux를 GBA로 포팅하는 프로젝트 페이지.
  • JaysOS - 영문. GBA용으로 Justin Armstrong님이 개발한 멀티태스킹 GUI OS.
  • James's multithreaded kernel for the gameboy - 영문. GB용 커널과 VxD 디바이스 드라이버 개발.