System Compleat.

'Cloud9 IDE on BeagleBone'에 해당되는 글 1건

  1. BeagleBone rolling start 1

BeagleBone rolling start

Techs
( younjin.jeong@gmail.com, 정윤진 ) 

이번주에 배송이 완료된 BeagleBone 을 오늘에서야 올려 볼 수 있게 되었다. 이 귀여운 보드에는 완벽히 동작하는 리눅스가 Factory Default 로 올려져 있으며, 필요한 경우 안드로이드나 우분투 등 원하는 대로 별도의 OS 를 올리는 것이 가능하다.

귀요미_케이스

 
BeagleBone 을 구매하면 위와 같이 귀여운 케이스와 USB케이블, 그리고 Kingston MicroSD 아답터와 Linux SDK 가 들어있는 MicroSD 가 함께 배송된다. $89 주제에 내용물도 푸짐하다. BeagleBone 외에도 Beagle Board C4 도 함께 주문했는데, C4의 경우에는 별도로 추가된 패키지가 전혀 없다. 기대하지 말자. 

귀요미_보드

 
허접해 보이는 케이스는 보드를 보관하기 꼭 알맞은 사이즈로 되어 있다. 필요하다면 아래에 스펀지 등을 넣어 보호 할 수도 있겠지만, 어차피 내부에 전원 등이 포함되어 있지 않으므로 쇼트가 나지는 않겠지 하는 생각에 그냥 들고 다닌다. ㅋ 
 

연결!!!

 

보드를 처음 노트북과 연결하면, 뭐 별다른 일이 일어나지는 않는다. 만약 맥에서 BeagleBone 을 연결했다면, 사용중인 맥의 버전에 따라 한방에 잘 될 수도, 아니면 시작부터 고생길이 열릴 가능성도 있다. 

일단, 개발용 랩탑과 BeagleBone 은 처음에 USB 연결만 있으면 된다. 5V 의 전원은 USB를 통해 공급받으므로 전원에 대해 당장 걱정할 필요도 없다. Mac OSX Leopard 이상의 시스템에 연결 한 경우, 다음과 같은 내용을 확인 할 수 있다.

BeagleBone Mount

 
처음 연결하고 BeagleBone 이 준비가 되면 위와 같이 시스템에 마운트 되며, 안에는 몇가지의 내용이 들어있다. 이들 중 처음에 제일 중요한 것은 Drivers 디렉토리인데, 맥이건 윈도우용이건 BeagleBoard 의 접근을 위해 반드시 설치 해 주어야 한다. 단!, 한가지 조심 할 것은, 사용중인 맥이 32bit 인가 64bit 인가에 따라 보드에 포함된 파일의 사용 여부가 결정 된다는 것이다. 보드에 포함된 드라이버는 32bit 용이며, 따라서 현재 사용중인 시스템이 64bit 인 경우에는 다음의 링크에서 드라이버를 다운로드 받아 설치하도록 하자.

http://www.ftdichip.com/Drivers/VCP.htm 

내가 사용중인 맥은 Leopard 였던 시스템을 Lion 으로 업그레이드 한 것인데, 별 이상없이 잘 동작했다. 다만 준호형의 맥은 구매 할 때부터 Lion 이었는데, 정상적으로 보드와 연결되지 않는 현상이 발생했다. 아직 해결하지는 못했지만, 조만간 처리 될 것으로 생각된다.

아무튼 OS 가 32인지 64비트인지 잘 확인하고, 가장 최신버전의 Virtual COM Port 드라이버를 설치하도록 하자.
설치가 완료 된 이후 정상적인 경우라면 /dev/tty.usb 로 시작하는 장치명을 확인 할 수 있을 것이다. 하지만 필자의 경우에는 해당 장치가 나타나지 않았는데, 어쨌든 사용에 이상이 없으므로 무시했다. 문제의 해결을 위해서는 다음의 구글 그룹 페이지를 참고하도록 한다.

http://groups.google.com/group/beagleboard/browse_thread/thread/80a42d16976907a9/de2ad27d8bfeb2de 

/dev/tty.usbserial 장치가 나타나지 않더라도, 시스템 환경 설정의 네트워크 부분을 살펴보면 정상적인 경우 다음과 같은 새로운 인터페이스의 확인이 가능하다.

RNDIS/Ethernet Gadget Int.

 
위의 그림처럼 나타난다면, 이제 보드에 접속이 가능하다.  위의 그림처럼 새로운 인터페이스가 나타나지 않는다면, 다음의 커맨드를 맥에서 실행 해 보자. 


sudo kextutil FTDIUSBSerialDriver.kext -v
위의 커맨드는 USBSerial 드라이버를 로드 하도록 한다. 또는 시스템을 재부팅 해도 된다. 이렇게 드라이버를 로드한 후에 인터페이스가 정상적으로 나타 남에도 불구하고 잘 동작하지 않는다면, Finder 에서 마운트 되어있는 BeagleBone 을 마운트 해제하고 잠시 기다려 보도록 하자. 이후에 정상적으로 192.168.7.2 와 ping 을 주고 받을 수 있다면 모든 준비가 완료 된 것이다.

계정은 root 이며, 패스워드는 없다. 그냥 엔터.

 
Younjin-Jeongs-MacBook-Pro:Extensions younjinjeong$ ssh root@192.168.7.2
The authenticity of host '192.168.7.2 (192.168.7.2)' can't be established.
RSA key fingerprint is 74:c4:b7:09:4c:3b:37:ba:69:96:b8:ca:09:61:6f:52.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.7.2' (RSA) to the list of known hosts.

root@192.168.7.2's password:
root@beaglebone:~#
root@beaglebone:~# hostname
beaglebone
root@beaglebone:~# whoami
root
root@beaglebone:~# ifconfig
eth0 Link encap:Ethernet HWaddr D4:94:A1:35:CA:6B
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:40

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:840 (840.0 B) TX bytes:840 (840.0 B)

usb0 Link encap:Ethernet HWaddr 02:09:34:3A:78:D3
inet addr:192.168.7.2 Bcast:192.168.7.3 Mask:255.255.255.252
inet6 addr: fe80::9:34ff:fe3a:78d3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:233 errors:0 dropped:0 overruns:0 frame:0
TX packets:115 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:38600 (37.6 KiB) TX bytes:15487 (15.1 KiB) 

위의 인터페이스에서 알 수 있듯이, 실제 랩탑과 보드의 통신은 usb0 를 통해 이루어 진다.  eth0 는 보드에 달려있는 이더넷 포트다. 모든 인터페이스의 설정 정보는 우분투와 동일한 위치인 /etc/network/interfaces 에서 확인이 가능하며, 192.168.7.2 는 usb0 에 고정된 인터페이스이다.
더욱 놀라운 다음의 내용을 살펴보도록 하자.
root@beaglebone:~# uname -a
Linux beaglebone 3.1.0+ #1 Tue Nov 15 15:51:15 CET 2011 armv7l GNU/Linux

root@beaglebone:~# Display all 1046 possibilities? (y or n)
root@beaglebone:~# ps -ef | grep node
root 98 1 0 15:31 ? 00:00:06 /usr/bin/node /usr/share/cloud9/bin/cloud9.js -l 0.0.0.0 -w /var/lib/cloud9 -p 3000root 99 1 0 15:31 ? 00:00:01 /usr/bin/node bone101.jsroot 349 342 0 16:19 pts/0 00:00:00 grep node

그렇다. default 로 Node 가 동작중이다. 게다가 이름에서 알 수 있듯이, cloud9 이 포트 3000 에서 돌아가고 있단다. 기가 찰 노릇이 아닌가. 그렇다면 접속 해 볼 일이다.

잇츠_어메이징_붸붸

 
위의 샘플 코드는 보드에 달려있는 사용자 LED 를 통제하는 101 코드가 들어있다. 위의 Run 버튼을 누르면 보드에서 LED 가 껌뻑 거리는 모습을 볼 수 있을 것이다.

이 보드가 시사하는 바는 무엇인가. Arduino 도 마찬가지지만, BeagleBone 은 보다 강력한 성능으로 주변 장치들을 붙이는 것이 가능하고, UNO 보드들과 마찬가지로 아날로그/디지털의 IN/OUT 통제가 가능하다. 이 작은 시스템은 완벽히 동작하는 리눅스의 구동이 가능하며, 저렴하고, 개발조차 쉽다.

이런 장점은 더이상 논하는 것이 무의미하므로, 그만 쓰도록 하고 이제 이 보드의 성능을 대강 살펴 보자.
root@beaglebone:~# free             
total used free shared buffers cached
Mem:
254176 78908 175268 0 8300 31508
-/+ buffers/cache: 39100 215076
Swap: 0 0 0

root@beaglebone:~# cat /proc/cpuinfo
Processor : ARMv7 Processor rev 2 (v7l)
BogoMIPS : 498.89
Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls
CPU implementer : 0x41CPU architecture: 7
CPU variant : 0x3CPU part : 0xc08
CPU revision : 2
Hardware : am335xevm
Revision : 0000
Serial : 0000000000000000

이제 정말 달리는 일만 남았다.  아, Lion 에서의 문제는 해결 되는 대로 포스팅! 

아참, 그리고 블로그를 깔끔하게 재구성 해 준 퐈이아준 형에게 무한 감사 ㅎㅎ  블로그 노가다 시켜서 미앙~! ㅋ 

( younjin.jeong@gmail.com, 정윤진 )