이지랑드로랑 - 1장. EZ-S3C6410과 안드로이드 만나보기

 

먼저 저희 에프에이리눅스의 EZ-S3C6410을 구매해주셔서 진심으로 감사합니다.
EZ-S3C6410(이하 이지보드)를 구매하신 분들이 이지보드로 안드로이드 가지고 놀기를 할 수 있도록 지원할 초특급 강좌!
'이지랑드로랑' 입니다. (머라하지 마세요! 제가 이름 정합니다!)

 

이지보드가 있으셔서 저랑 함께 안드로이드 가지고 노실 수 있는 분들은 행복한거에요.
아직 이지보드를 구매하시지 않은 분들은 쪼금 불행한거에요.
이지보드가 없으면 그건 임베디드 공부하는게 아니잖아요~ 그냥 방황하는거지~
하지만 지금 바로 구매하시면 행복해 집니다.
...
재미없어도 이해하시고, 시작하기전에 앞서 헛소리였습니다.
그런데 헛소리도 아닌게 본 강좌는 EZ-S3C6410을 가지고 진행하니까요, 있으면 당연히 금상첨화겠죠. ^^

 

자, 서론이 너무 길었습니다.
먼저 강좌를 시작하기 앞서 아래와 같이 여러분의 시스템을 준비해 주세요.

 

OS Ubunt 8.10 (본 강좌의 기준임)
RAM 2G 이상 (이하에선 안드로이드 빌드가 힘듬)
HDD 20GB 이상의 여유 (안드로이드 풀소스 크기가 빌드 완료후 5GB 정도임)
COM 보드를 시리얼 포트와 연결할 수 있는 PC
NET 외부 네트워크로 연결된, 보드와 크로스 연결가능한 PC

 

먼저 여러분이 구매하신 EZ-S3C6410을 준비하시고 보드를 연결하고 전원을 넣어주세요.

 

[그림1-1. EZ-S3C6410 보드의 모습]

 

자! 보드에 전원을 넣고 부팅이 완료되면 이쁘게 화면이 나오는 모습을 볼수 있죠?
'내껀 버튼이 안달렸다!' '옆에 나와있는 의문의 선들은 뭐냐!' '내꺼랑 생긴게 틀리다!' 이러시면 안됩니다.
이 보드는 판매용이 아니라 제가 밥먹고 사는데 필요한 연장(?) 이기 때문에 손을 좀 봤습니다.
여러분의 보드에는 버튼이나 다른 케이블 선이 따로 안나와 있습니다.
그러나 너무 슬퍼하진 마세요. 이렇게 만드는 것까지 해볼께요. ^^;

 

아무튼, LCD를 보니 FALiNUX 로고랑 안드로이드 로봇이 '안녕'하고 인사를 하는군요.
그러나 이건 어디까지나 커널 로고일 뿐! 현재는 램디스크로 부팅이 되어 있는 상태입니다.
우리의 오늘 목표는 이녀석이 진짜로 안드로이드 뜨는지 안뜨는지를 보는거에요.

 

아차차! 이 작업을 하기 앞서서 보드의 Application 영역을 깨끗히 지워줘야 합니다.
이지부트로 들어가셔서 그 영역을 깨끗하게 지울수 있습니다.
보드를 켜자마자 Spacebar 키를 눌러서 이지부트로 부팅하신 뒤 아래 명령어를 넣어주시면 됩니다.

 

EZBOOT> efa

 

그럼 어플리케이션 영역이 깨끗하게 지워집니다.

자, 다시 부팅을 하고 이제 여러분이 함께 제공받은 CD를 열어봅시다.
그리고 CD롬에서 sw/android/ 디렉토리 내에 있는 rootfs-android-1.5-cupcake.tar.gz 파일을 여러분의 NFS 폴더에 옮겨서 압축을 해제합니다.

 

# tar xvfzp rootfs-android-1.5-cupcake.tar.gz

 

잠시 말씀드리면 저는 계정을 루트로 바꿔놓고 작업합니다만, 우분투는 root계정을 기본 로그인으로 못쓰죠.
sudo를 명령어 앞에 붙여주시거나 su로 루트계정으로 전환하셔야 합니다. (종종 이 이유로 안됨)

 

[그림1-2. 이지보드에서 NFS 마운트]

 

자! 이제 보드를 NFS 디렉토리에 마운트를 해봅시다.
본 강좌에서는 NFS 설치 및 설정에 관련된 것은 언급하지 않겠습니다만, 저희 포럼에는 글이 있으니까 참고하세요.

 

[falinux ~]$ ./nfsmnt 29

 

보드를 켜자마자 위 명령어를 보드에서 입력하면 192.168.10.29 주소를 가진 호스트 PC의 NFS에 마운트 됩니다.
이제 위에 안드로이드 파일 시스템을 풀어놓은 위치로 이동해서 디렉토리내의 모든 파일을 보드의 /app 디렉토리 내로 복사합니다.

 

[falinux ~]$ cd /mnt/nfs/rootfs-android-1.5-cupcake
[falinux ~]$ cp * /app/. -a

 

자, 한참을 기다리면 파일 복사가 완료 됩니다.
차분하게 기다리셔야 합니다. 안드로이드가 생각보다 덩치가 크거든요.
설마, 이더넷 케이블 연결 안하고 안된다고 좌절모드 돌입하신 분은 안계시겠죠? ^^;
복사가 완료되면 보드를 껐다 키고 재빠르게 이지부트로 부팅을 합니다.
이제 부팅설정을 바꿀꺼에요.

 

EZBOOT> set

 

위 명령어를 입력하고 이지부트 설정을 바꾸도록 합니다.

 

[그림1-3. 이지부트 셋팅을 바꾸기 전]

 

자, 저랑 입력값들이 좀 틀려도 긴장하실 필요 없습니다. 다시 말씀드리지만 이건 제 보드일 뿐 입니다.
시판 직전의 보드가 아니니까요.

일단 여기서 봐주셔야 할 옵션은 13번, 16번, 19번 옵션이 되겠습니다.

13번. 아키텍쳐 넘버로 EZ-S3C6410의 넘버는 3000번이 되겠습니다.
16번. 커널이 점유하는 메모리가 되겠습니다. 96M 정도면 안드로이드가 부팅됩니다.
19번. init 프로세서를 지정합니다. init=/init /init.rc 라고 입력합니다.

 

값을 다 입력하셨나요?
일단 저장합니다.
그리고 이제 부팅영역을 바꿉니다. 이게 이지보드를 가지고 노는 최고의 매력이 되죠.
LF 라고 입력해보세요.

 

17) KCMD 2 : noinitrd root=/dev/mtdblock2 rootfstype=yaffs2

 

17번 항목이 위처럼 램디스크에서 낸드 플래쉬 부팅모드로 바꿔져 버립니다.
자! 다시한번 저장하고 부팅해 볼께요.

일단 한참 걸립니다.
안드로이드 로고가 나타나고 한동안 멈춘 것 처럼 보이기도 하고 그냥 로고만 깜빡 거리기도 하고 그런데요.
너무 긴장하지 마세요.
최초에 안드로이드가 파티션을 정리하느니라고 그런 현상이 발생하는 것이니까요.
자~ 한참이 지났을까요?

 

[그림1-4. 안드로이드 부팅 완료]

 

야호! 드디어 안드로이드가 멋지게 나타났습니다.
뭐, 안드로이드를 램디스크로 만들어서 넣는다거나 뭐, 그걸 인식하게 하기 위해 커널 옵션을 이상하게 준다거나?
전혀 없습니다.
이지보드니까 가능한 겁니다. (쿨럭;;; 광고;;;)

기뻐하긴 이릅니다.


오늘 이것까진 알려드리고 강좌를 마쳐야 할 것 같아요.
이대로 두면 안드로이드의 파워 메니지먼트 프로세서에 의해 화면이 꺼져버리고 맙니다.

깨어나는 부분이 아직 안되어 있어서 그런데요, 작업을 수월히 하려면 일단 안드로이드가 잠들지 않게 해야겠죠?

우측에 보이는 튀어나온 버튼을 당겨서 Setting 을 열어 봅시다.

그럼 Locale & Text 란 항목이 보이는데 그 항목을 선택한 뒤 Select Location 항목을 선택하세요.
중간쯤 있는 Korean을 선택하면 한국어가 나옵니다.
전 한국에 27년 살아서 영어 걱정없지만 영어를 잘 못하시는 분들을 위해서 한글로... 하하하...

 

한국어로 바뀐 설정 메뉴에서 소리 및 디스플레이 항목을 가시면 맨 아래 화면 시간제한 이라는 항목이 있습니다.
이 항목에서 시간제한 없음 을 선택하시면 보드는 영영 잠들지 않습니다.
우린 전화기를 쓰는게 아니고 개발을 하는데 써야하니까 이렇게 하기로 해요.

 

[그림1-5. 화면 시간제한 없음 설정]

 

휴~ 힘들었네요.
여러분도 여기까지 보시느니라고 수고하셨어요.
그래도 임베디드 보드에서 안드로이드가 어떻게 나타나나 궁금했는데 일단 재미있게 시작한 것 같죠?
저만 재미있으면 안되는데요.


오늘은 여기까지 하겠습니다.
이제 다음 강의부터는 조금씩, 가볍게 안드로이드랑 놀아보도록 하겠습니다.

 

[그림1-6. 안드로이드]