블로그 이미지
HISONA

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31



Android Emulator 관련 블로그를 시작합니다.

2008. 12. 15. 16:13 | Posted by HISONA
안녕하세요?

OHADEV 라는 Blog 로 Android 관련 포스트를 시작해 볼려고 했는데..
계속 시간이 없다는 이유(?)로  블로그가 놀고 있었네요 ..

저는 현재 Android Platform 을 가지고  Application 작업을 하는것은 아니고,
Android Emulator 와 Kernel 을 가지고 여러가지 작업을 해보고 있습니다.

다들 아시다시피 Android Emulator 는 QEMU 기반으로, Windows/OSX/Linux 같은 Host PC 에서
Arm Target 을 에뮬레이션하는 Machine Emulator 입니다.

그래서, Android Emulator(QEMU) 와 Kernel 만으로도 임베디드 시스템을
공부하시는 분들한테는 좋은 자료가 될것 같군요...

앞으로 제가 작업한 내용들을 가지고 블로그를 채워보려고 합니다..

많이 기대해 주세요...




* 퍼가실 때는 출처를 반드시 밝혀주세요....


  임베디드 리눅스를 공부하기 위해서는 포팅에 필요한 타겟보드가 필요합니다. 그러나 보통 타겟보드들은 가격이 고가이다 보니 쉽게 구매하기는 힘이 들겠지요..

Nintendo DS Lite 를 임베디드 리눅스를 위한 타겟보드 대신 사용할 수 있다면 훨씬 매력적일 것으로 생각 되는군요... 


NDSL 의 Homebrew 중에 리눅스 포팅 프로젝트 그룹(http://www.dslinux.org/) 이 있습니다...

이 소스를 받아서 NDSL 에 DSLinux 를 직접 컴파일해서 올려보도록 하겠습니다...

1. 필요한 장비


  1) 컴파일에 사용할 리눅스 장비

  2) R4DS, Supercard 같은 Homebrew 를 실행할 수 있는 닥터 카드 ..


닥터는 이야기를 안해도 아실거고 , 저는 R4DS 를 예로 사용해 보겠습니다...

슈퍼카드의 경우 .. 내부에 있는 32M bytes 의 램을 DSLinux 에서 사용할 수 있다고 하는데.. 사용해보지 않아서 정확하게는 알려드리지 못하겠군요.. (DSLinux 에서 사용할 수 있는 NDSL의 램은 4M bytes 인것 같군요. 그러므로 NDS 와 같이 웹브라우저를 구동하기에는 다소 무리가 있습니다. 리눅스 포팅하고 간단한 프로그램을 실행하는 정도로 만족해야 할듯 합니다).


2. 소스 다운로드


아래 사이트에서 커널소스와 툴체인을 다운 받습니다..

(커널소스는 리눅스 커널의 소스코드입니다. 툴체인은 NDSL 에서 돌아가는 코드 생성을 위한 크로스컴파일러와 같은 툴 들이 묶여 있는 파일입니다.)


커널소스: http://stsp.spline.de/dslinux/dslinux-snapshot.tar.gz

툴체인: http://stsp.spline.de/dslinux/toolchain/ 에서 최신 툴체인을 받으십시오.

3. 소스 설치


1) 리눅스 커널 압축을 풉니다.


tar xvfz dslinux-snapshot.tar.gz


dslinux 디렉토리에 커널 소스가 생성이 됩니다.


2) 툴체인을 설치합니다.


툴체인은 /usr/local 에 설치해도 상관없지만.. 다른 툴체인을 사용하고 있다면, 로컬디렉토리에 설치해도 상관없습니다. 여기서는 ./dslinux/toolchain 밑에 설치해 보겠습니다..


tar -C ./dslinux/toolchain/ -jxf dslinux-toolchain-2006-11-04-i686.tbz


./dslinux/toochain/dslinux-toolchain-2006-11-04-i686 에 툴체인이 설치됩니다.


3) path 를 등록합니다.


cd dslinux


dslinux 디렉토리에서 path.sh 파일을 만들어서, 다음과 같이 path 를 추가합니다..


PATH=~/dslinux/toolchain/dslinux-toolchain-2006-11-04-i686/bin:$PATH
export PATH


path.sh 을 실행해서 path 를 추가합니다...


source path.sh


이제 .. 커널소스와 툴체인 설치는 끝났습니다..


4. 커널 설정


1) DSLinux 설정


  "make menuconfig"을 실행하면 다음과 같은 메뉴 설정 화면이 나타납니다. 먼저 "Vendor/Product Selection" 메뉴를 선택합니다.


make menuconfig


사용자 삽입 이미지



  Vendor 에서는 "Nintendo" 를, Product 에서는 "DLDI" 를 선택합니다(DLDI 모드로 DSLinux 를 사용하기 위해서는 각각의 카드에 맞는 DLDI 패치를 해줘야 합니다. DLDI 를 사용하는 이유는 리눅스의 설정 정보 파일이나 리눅스 실행파일을 손쉽게 T-Flash 메모리에 저장해서 변경할 수 있기 때문입니다. 이부분은 아래에서 다시 살펴보겠습니다).

 
사용자 삽입 이미지
 
 
Exit 를 선택해서 이전 메뉴로 돌아온 다음, 다시 Exit 를 선택, 설정 정보를 저장하고 설정을 종료합니다.
 
여기서도 linux kernel 설정을 할 수 있지만, 커널 설정은 다음에서 하겠습니다.
 
 

2) linux kernel  설정


  이미 NDS 용으로 패치가 되어 있기 떄문에, 특별히 커널 설정을 변경하지 않아도 잘 동작합니다. 그러나 기본 콘솔 폰트가 4x6 폰트로 설정되어 있어서 보기가 불편하므로, 콘솔 폰트를 6x6 폰트로 변경해 보겠습니다.


  "make linux_menuconfig"을 실행하면 다음과 같은 메뉴 설정 화면이 나타납니다. 


make linux_menuconfig


사용자 삽입 이미지


Device Drivers -> Graphics support -> Console display driver support -> Mini 6x6 font 를 선택합니다.


 
사용자 삽입 이미지
 
이제 Exit 를 선택해서 설정 정보를 저장합니다.
 
 

5. 커널 컴파일


dslinux 디렉토리에서 "make" 를 수행하면 커널과 롬파일 시스템이 생성이 됩니다. 처음 수행을 할때는 라이브러리 및 유저 리눅스 어플리케이션이 같이 컴파일되기 때문에 다소 시간이 소요될 것입니다.


make


컴파일이 완료되면, dslinux/images 에 linux/ 디렉토리와 dslinux.nds 파일이 생성됩니다.

linux 디렉토리는 T-Flash 의 맨위 디렉토리에 그대로 복사합니다. 리눅스 커널이 이 linux 디렉토리를 마운트해서 사용합니다.  


6. DLDI 패치


T-Flash 메모리에 있는 linux 디렉토리를 사용하기 위해서는 DLDI(Dynamically Linked Device Interface) 패치를 해야 합니다(각 카드에 맞는 DLDI 패치를 해야 합니다).

DLDI 패치 파일은 여기서 받을 수 있습니다(http://chishm.drunkencoders.com/DLDI/index.html).


저는 R4 를 가지고 패치를 해보겠습니다.
 

사용자 삽입 이미지
 
 
R4를 선택해서 Patch 버튼을 누르면 패치가 완료됩니다.
 
이제 dslinux.nds 파일을 T-Flash 에 넣고, NDSL 에서 실행하면 리눅스 커널이 부팅이 됩니다.(dslinux.nds 파일은 T-Flash 아무곳에나 넣어도 상관 없습니다.)
 
 
 

7. Wireless 네트워크 설정


NDSL 은 Wireless LAN 을 내장하고 있고, DSLinux 에서도 802.11b Wireless LAN 을 지원합니다. 당연히 무선랜을 사용하기 위해서는 인접한 곳에 AP 가 있어야 겠지요.(무선랜 AP 설정에서 반드시 11g only 로 설정하지 마시고, mixed mode(B+G) 로 설정하세요. 그리고, 접속 제한이 되어 있지 않는지 확인하세요).


T-Flash 의 linux/etc 에서, rc.defaults 파일을 rc.conf 파일로 복사합니다.

그리고, rc.conf 파일에서 다음 항목들을 편집합니다.


essid=""
wepkey=""

ip=""
gateway=""
netmask=""
broadcast=""
dns1=""
dns2=""
 

essid 에는 AP 의 ssid 를 적어주면 됩니다.

wepkey 는 무선보안을 사용할 경우 입력합니다.


ip ~ dns 는 입력하지 않으면 DHCP 모드로 동작합니다. ip 를 직접 입력해서 사용할 수도 있습니다.


아래는 NDSL 에서 DSLinux 실행 화면입니다. Wireless LAN 접속이 되어서, ping 이 동작하는 모습입니다.  


 

 
사용자 삽입 이미지
 
 
 
8. 마치며 ...
 
  현재까지 할 수 있는것은 콘솔 모드에서 간단한 네트워크 어플리케이션을 작성하고 실행하는 정도까지 인것 같습니다. 메모리의 한계상 nano-x 나 웹브라우저를 포팅하는 것은 힘들것 같구요. 나중에 기회가 되면 SuperCard 의 메모리에서 웹브라우저에 도전해봐야 할 것 같군요...
 
  임베디드 시스템은 공부하는 사람들이라면, 디바이스 드라이버나 리눅스 어플리케이션을 맛보는 정도는 충분히 경험하실 수 있을것 같군요. 또한, NDSL Homebrew 프로그램을 이해하는데도 DSLinux 소스코드가 도움이 될것으로 생각됩니다.
 
  이상 간단하게나마 DSLinux 포팅기를 마칠까 합니다...
 
 
이전 1 2 3 4 5 다음