== 티스토리로 이사했습니다. 티스토리에서 뵐께요 ^^ ==
티스토리로 바로가기(클릭하세요 ^^)

[잡담] 드디어 NDS에 멀티 태스킹 기능을 넣는데 성공했다 @0@)/~!!

3일을 연속 삽질한 끝에.... NDS에 태스크 스위칭 기능을 넣는데 성공했다.

사실 유저모드에서 태스크 스위칭을 넣는 것은 일도 아니지만...

타이머를 이용한 멀티 태스킹(시분할 멀티 태스킹)이 목표였기 때문에 타이머 인터럽트에서 태스크 스위칭 기능을 동작하도록 만들었다. 처음에는 간단하게 생각하고(옛날에 한번 해봤으므로.. ㅡ_ㅡ;;;;) 시작했더니만...

얼래... 예전에 했던 방식대로 하니까 뭔가 이상하게 잘 안되는 것이었다.
계속 테스트 해보다가... 컴파일 옵션을 보니까... C 코드쪽은 아웃풋이 THUMB 모드 코드로 나오게 되어있었던 것.. @0@)/~!!!

인터럽트가 발생하면 ARM 모드로 전환되니까 당연히 내가 짠 코드는 ARM 모드의 코드....
THUMB 모드의 C 코드에서 내가 만든 스위칭 코드를 호출하니 그냥은 못 호출하고 중간에 proxy 코드를 이용해서 걸쳐서 호출되고...

상황이 이렇다 보니 해결해야 될 것이 한두가지가 아니었다. ㅡ_ㅡ;;;;
홧김에 C 코드 컴파일 옵션을 THUMB 모드가 아닌 ARM 모드로 변경해봤지만... libnds의 코드가 THUMB 모드로 다 컴파일 되있는 걸 확인하고.. 다시 THUMB으로 전환... ㅜ_ㅜ...

결국 우의곡절 끝에 타이머 인터럽트를 사용해서 태스크 스위칭이 가능하도록 했다...
내가 이렇게 장하게 느껴지긴 처음이다. @0@....

뭐 대신... 유저모드의 태스크 스위칭쪽은.. 포기해야 했지만... 어찌 잘하면 되겠지 머...
이번에 하면서 THUMB 모드하고 ARM 모드의 차이를 조금 접할 수 있었다.

아아.. 이제 까먹기 전에 또 스프링 노트에 정리해놓아야지...

아래는 기념으로 찍은 스샷....



위쪽 화면은 사과를 먹는 게임... 타이머와 태스크 스위칭 테스트 용으로 만듬...
아래쪽 화면은 기타 4개의 태스크... Task 1~3번까지 하고 맨 윗줄에 정보를 찍어주는 메인 태스크

그러니까 총 5개의 태스크가 돌아가고 있는 화면 @0@)/~!!!
이렇게 보니 감동의 눈물이.. ㅜ_ㅜ

kkamagui.tistory.com 블로그를 한RSS에 추가하세요 ^^ =>

by 까마구 | 2007/08/27 04:19 | 잡담 | 트랙백 | 덧글(0)

트랙백 주소 : http://kkamagui.egloos.com/tb/3357451
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

== 티스토리로 이사했습니다. 티스토리에서 뵐께요 ^^ ==
티스토리로 바로가기(클릭하세요 ^^)

<< 이전 페이지     다음 페이지 >>