BeagleBoard는 ARM Cortex-A8 코어, Texas Instruments C64x+ DSP(Digital Signal Processor) 및 온보드 그래픽 엔진과 통합 DDR(Dual Data Rate) RAM(Random-Access Memory)을 포함하는 Texas Instruments OMAP(Open Multimedia Application Platform) 3 SoC(system-on-a-chip) 프로세서가 들어 있는 포켓 크기 참조 보드이다. BeagleBoard는 Linux 및 소규모 시스템에 대해 배우는 취미 애호가, 학생 및 전문가를 위한 저렴한 플랫폼이다. 그림 1에서는 BeagleBoard-xM을 보여 준다.
그림 1. BeagleBoard-xM
이전 developerWorks 기사에서 필자는 BeagleBoard 개정판 C에서 Linux 부팅하기에 대해 살펴봤으며 BeagleBoard 개정판 C는 600MHz OMAP3530 프로세서, 256MB RAM 및 256MB NAND 플래시 메모리를 호스트한다. 개정판 xM은 1GHz OMAP3730 프로세서 및 512MB RAM을 사용하여 더 강력해졌다. 개정판 xM은 플래시 메모리가 없는 microSD 카드로부터 부팅하며 DB-9 직렬 커넥터, 통합 4포트 USB(Universal Serial Bus) 허브 및 통합 이더넷 포트를 포함한 새로운 인터페이스를 호스트한다. BeagleBoard-xM은 DVI(Digital Visual Interface)-D 출력, S-video, 오디오, JTAG(Joint Test Action Group) 및 대형 확장 헤더를 포함한 다수의 개정판 C 기능을 보유한다.
다음 섹션에서는 필수 컴포넌트의 소스를 지정하고 콘솔을 설정 및 테스트하는 방법을 보여 준다.
BeagleBoard-xM은 미리 포맷된 4GB microSD 카드를 표준 SD(Secure Digital)/MMC(MultiMediaCard) 슬롯에 꽂을 수 있도록 어댑터와 함께 해당 카드와 패키지로 제공된다(케이블은 제공되지 않음). 다음 사항이 필요하다.
- 전원 공급 장치
5V 외부 전원 공급 장치를 사용한다. - 직렬 케이블
BeagleBoard-xM은 피메일 DB9 포트를 제공하며 직렬 케이블이 콘솔을 호스트 시스템에 연결하도록 한다. 스트레이트(널 모뎀이 아님) 케이블을 사용한다. 호스트 시스템에 직렬 포트가 없는 경우에는 DB9-to-USB 케이블을 사용한다. - USB 키보드와 USB 마우스
- DVI-D 지원 모니터와 DVI-D-to-HDMI(High-Definition
Multimedia Interface) 케이블
보드는 이 커넥터를 통해 VGA(Video Graphics Array) 신호를 전송하지 않으므로 표준 DVI-to-VGA 커넥터 케이블이 작동하지 않는다. - 4GB+ microSD 카드와 카드 리더
제공된 카드에 있는 데이터를 겹쳐쓸 수 있지만 다른 배포판에 사용할 카드를 몇 개 구입하는 것이 좋다. 호스트에 내장 리더가 없는 경우에는 USB 카드 리더를 사용한다.
Linux 사용자는 다음 예제에 있는 minicom을 사용할 수
있다. Microsoft® Windows® 사용자는 Hyperterminal 또는 PuTTy를
사용할 수 있고 Mac 사용자는 화면, ZTerm 또는 MacWise를 사용할 수 있다.
직렬 케이블을 BeagleBoard-xM의 DB9 포트 및 사용자의 호스트에 연결하고
설정 모드에서 루트로 minicom을 실행한다.
sudo minicom -s |
목록 1에서는 minicom 구성 메뉴를 보여 준다.
목록 1.
minicom 구성 메뉴
+-----[configuration]------+
| Filenames and paths |
| File transfer protocols |
| Serial port setup |
| Modem and dialing |
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
| Exit from Minicom |
+--------------------------+
|
Serial port setup을 선택한다. 목록 2와 같은 하위 메뉴가 표시된다.
목록 2.
minicom 직렬 포트 설정 메뉴
+-----------------------------------------------------------------------+
| A - Serial Device : /dev/ttyS0 |
| B - Lockfile Location : /var/lock |
| C - Callin Program : |
| D - Callout Program : |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : No |
| G - Software Flow Control : No |
| |
| Change which setting? |
+-----------------------------------------------------------------------+
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
| Exit from Minicom |
+--------------------------+
|
케이블이 스트레이트 직렬 케이블인 경우 직렬 디바이스는 /dev/ttyS0이다.
USB 변환기를 사용하는 경우에는 /dev/ttyUSB0를 사용한다.
다음 단계에서 텍스트가 표시되지 않으면 호스트에서 다른 디바이스를 지정했을
가능성이 있으므로 0을 1로 증분한 후 다시 시도한다. 모든 디바이스에 대해
설정은 115200, 8비트, 패리티 없음, 1 정지 비트, 하드웨어 또는 소프트웨어
플로우 제어 없음이다.
설정이 올바른 경우에는 Save setup as dfl을 선택한 후 Exit를
선택하여 이 설정을 기본값으로 저장한다. 목록 3과 같이 minicom 환영 메시지가 표시된다.
목록 3.
minicom 환영 메시지
Welcome to minicom 2.3
OPTIONS: I18n
Compiled on Oct 24 2008, 06:37:44.
Port /dev/ttyS0
Press CTRL-A Z for help on special keys
|
확인을 위해 전원을 BeagleBoard-xM에 적용한 후 부팅 카운트다운을 중지하는 키를 입력한다. 목록 4와 같이 X-loader 및 U-boot 버전, 빌드 날짜 및 출력을 표시하는 부트 로더 메시지가 시스템 메모리, 입력 및 출력 채널, 확장 보드 정보, 보드의 개정 및 다이 ID에 대한 세부사항을 표시하는 U-boot와 함께 표시된다.
목록 4. X-Loader와 U-Boot
Texas Instruments X-Loader 1.4.4ss (Aug 19 2010 - 02:49:27) Beagle xM Rev A Reading boot sector Loading u-boot.bin from mmc U-Boot 2010.03-dirty (Aug 20 2010 - 20:50:46) OMAP3630/3730-GP ES1.0, CPU-OPP2, L3-165MHz, OMAP3 Beagle board + LPDDR/NAND I2C: ready DRAM: 512 MB NAND: 256 MiB In: serial Out: serial Err: serial Probing for expansion boards, if none are connected you'll see a harmless I2C error. No EEPROM on expansion board Beagle xM Rev A Die ID #77f600001bf00000015739ea0701c021 Hit any key to stop autoboot: 0 OMAP3 beagleboard.org # |
BeagleBoard-xM에서 전원을 분리한다.
키보드와 마우스를 BeagleBoard-xM의 USB 소켓에 연결한다. 네트워크 케이블을 이더넷 잭에 연결한다(있을 경우). HDMI-to-DVI 케이블로 보드와 DVI-D 모니터를 연결한다.
다음 지시사항은 다음 세 가지 Linux 배포판에서 보드를 시작하여 실행하기 위한 용도로만 작성되었다. 참고자료에 있는 링크에는 전체 개발 환경을 설정하는 데 필요한 개발 킷, 도구 체인 및 지시사항이 포함되어 있다.
Angstrom Linux는 BeagleBoard-xM과 같은 소형 컴퓨터를 위해 특별히 개발된 운영 체제이다. BeagleBoard-xM에서 Angstrom을 부팅하는 가장 빠른 방법은 보드와 함께 제공되는 Angstrom 이미지가 포함된 microSD 카드를 사용하는 것이다. 하지만 이 카드에 있는 이미지는 검증 이미지이므로 이 이미지는 보드의 조작을 검증하기 위한 용도로만 제공된다. 이 이미지는 GUI(Graphical User Interface)를 포함하고 있지 않으며 기본적으로 RAM 디스크로 부팅되므로 작성된 변경사항은 연결이 해제되면 모두 손실된다.
포함된 microSD 카드에는 다음 항목이 포함된 약 117MB의 단일 FAT(File Allocation Table) 테이블이 들어 있다.
- 부트 로더 X-loader(
MLO) 및 U-boot(u-boot.bin) - Linux 커널(
uImage) - 부트 스크립트(
user.scr) - RAM 디스크 루트 파일 시스템(
ramdisk.gz) md5sum파일(파일 크기 검사)
카드의 나머지 부분은 포맷되지 않는다.
부팅하려면 microSD 카드를 삽입하고 전원을 연결한다. 부팅 카운트다운이 지나고 나면 시스템이 자동으로 부트 스크립트를 호출한다. 목록 5와 같이 부트 로더 텍스트가 콘솔에 다시 표시되고 스크립트 자체의 실행, 커널 및 RAM 디스크 로딩과 커널 시작을 포함한 부팅 프로세스를 보여 주는 부팅 메시지가 뒤이어 표시된다.
목록 5. Angstrom 부팅하기
mmc1 is available The user button is currently NOT pressed. reading boot.scr ** Unable to read "boot.scr" from mmc 1:1 ** reading user.scr 755 bytes read Running bootscript from mmc ... ## Executing script at 80200000 mmc1 is available reading ramdisk.gz 19960110 bytes read reading uImage 3190568 bytes read Booting from ramdisk ... ## Booting kernel from Legacy Image at 80200000 ... Image Name: Angstrom/2.6.32/beagleboard Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3190504 Bytes = 3 MB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux..................................................................... [ 0.000000] Linux version 2.6.32 (ubuntu@ip-10-204-115-71) (gcc version 4.3.3 ....... |
Linux 부팅 메시지가 뒤이어 표시되고 마지막으로 목록 6과 같이 Angstrom 로고와 로그인 프롬프트가 표시된다.
목록 6. Angstrom 로그인 콘솔
.-------.
| | .-.
| | |-----.-----.-----.| | .----..-----.-----.
| | | __ | ---'| '--.| .-'| | |
| | | | | |--- || --'| | | ' | | | |
'---'---'--'--'--. |-----''----''--' '-----'-'-'-'
-' |
'---'
The Angstrom Distribution beagleboard ttyS2
Angstrom 2010.7-test-20100820 beagleboard ttyS2
beagleboard login:
|
root로 로그인한다(비밀번호는 필요없음). 기본적인
Linux 명령을 실행하여 시스템을 테스트할 수 있다. testled를
실행하여 BeagleBoard-xM에서 LED(light-emitting diode)를 감시한다.
Angstrom이 작동 중인지 확인하려면 전체 루트 파일 시스템 및 해당 커널이 필요하다. 다음 지시사항에서는 데모 이미지를 다운로드하여 부팅하는 방법을 보여 준다.
- Angstrom BeagleBoard 데모 페이지로 이동하여 지시사항을 읽는다.
- Angstrom BeagleBoard 데모 페이지에서 루트 파일 시스템과 부트 로더를 위한
바이너리 이미지를 다운로드한다. 필요한 파일은 다음과 같다.
- mkcard.txt
- MLO
- u-boot.bin
- Angstrom-Beagleboard-demo-image-glibc-ipk-2010.3-beagleboard.rootfs.tar.bz2
- 4GB 이상의 microSD 카드를 삽입하고 디바이스 이름을 결정한다.
예를 들어, USB 카드 리더를 사용하는 경우에는
fdisk를 사용하여 카드의 특성과 일치하는 디스크를 검색한다. 다음 예제에서는/dev/sdg를 보여 준다.# fdisk -l ... Disk /dev/sdg: 3.9 GB, xxx bytes 255 heads, 63 sectors/track, xxx cylinders
- 카드에 있는 모든 파티션을 마운트 해제한다.
sudo umount /dev/sdg?
에서/dev/sdg대신 카드의 디바이스 이름을 사용한다. mkcard.txt스크립트를 사용하여 SD 카드를 포맷한다.참고: 시스템 디스크가 아니라 SD 카드를 대상으로 하는지 확인한다.
다음 예제에서
/dev/sdg대신 카드의 디바이스 이름을 사용한다.chmod +x mkcard.txt ; sudo ./mkcard.txt /dev/sdg
조작이 완료되면 microSD 카드에는 두 개의 1차 파티션이 들어 있다.
boot로 레이블된 70MB FAT 파티션 하나- 나머지 카드 용량을 차지하는
Angstrom으로 레이블된 ext3 파티션 하나
스크립트가 이러한 파티션을 작성한 후 시스템이 이들 파티션을 자동으로 마운트하지 않는 경우에는 다음 예제의
/dev/sdg를 카드의 디바이스 이름으로 대체하여 직접 마운트한다.sudo mkdir -p /media/boot ; sudo mount /dev/sdg1 /media/boot sudo mkdir /media/Angstrom ; sudo mount /dev/sdg2 /media/Angstrom
이 예제의 나머지 부분에서는 이러한 파티션이
/media/boot및/media/Angstrom으로 마운트되는 것으로 가정한다.- 파일을 루트 파일 시스템 파티션에 압축 해제한다(이 명령을 실행하는 데는
시간이 걸릴 수 있음):
sudo tar -C /media/Angstrom -xjvf \ Angstrom-Beagleboard-demo-image-glibc-ipk-2010.3-beagleboard.rootfs.tar.bz2
- 파일을 부팅 파티션에 복사하고 커널 이미지가 루트 파일 시스템에서
직접 제공되는지 확인한다.
cp MLO /media/boot cp u-boot.bin /media/boot cp /media/Angstrom/boot/uImage /media/boot
- 모든 조작이 완료되면 파일 시스템을 동기화하고 파티션을 마운트 해제한다.
sync ; sudo umount /dev/sdg?
- 카드를 BeagleBoard-xM에 삽입하고 전원을 연결한다.
참고: 첫 번째 부팅이 실패하여 다음과 같은 오류가 발생하는 경우:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block...
시스템을 다시 시작한 후 부팅 카운트다운을 중지하고 다음 명령을 입력한다.
setenv mmcroot /dev/mmcblk0p2 rw
그런 다음
boot를 입력하여 시스템을 부팅한다.
시스템이 자체적으로 구성되기 때문에 첫 번째 부팅에는 시간이 걸린다. Angstrom
로고가 모니터에 표시되고 그동안 콘솔에서 각 컴포넌트가 구성된다. 약 10분 후
Angstrom 로그인 화면이 모니터에 표시되고 부팅 프롬프트가 콘솔에 표시된다.
로그인 화면을 이용하여 새로운 사용자를 설정하고 로그인한다. 콘솔에서 root로
로그인할 수도 있다(비밀번호는 필요없음).
BeagleBoard는 Android 애플리케이션 개발 및 테스트에 적합한 저렴한 플랫폼이기 때문에 Android는 BeagleBoard를 위한 유명한 운영 체제로 증명되었다. Android와 BeagleBoard를 연결하는 몇 가지 포트가 있다. 이 기사에서는 rowboat 프로젝트를 사용한다. 시작하기 전에 USB 키보드 및 마우스와 DVI 모니터를 연결한다.
- Texas Instruments Android DevKit 페이지에서 사전 컴파일된 바이너리
tarball을 다운로드하고 BeagleBoard-xM을 위해 사전 빌드된 이미지를
식별한다(
beagleboard-xm.tar.gz). - tarball을 압축 해제한다.
tar zxvf beagleboard-xm.tar.gz
- README.txt에 있는 지시사항을 읽는다.
- 4GB 이상의 microSD 카드를 삽입하고 디바이스 이름을 결정한다.
예를 들어, USB 카드 리더를 사용하는 경우에는
fdisk를 사용하여 카드의 특성과 일치하는 디스크를 검색한다. 다음 예제에서는/dev/sdg를 보여 준다.# fdisk -l ... Disk /dev/sdg: 3.9 GB, xxx bytes 255 heads, 63 sectors/track, xxx cylinders
- 제공된 스크립트를 사용하여 SD 카드를 포맷한다.
참고: 시스템 디스크가 아니라 SD 카드를 대상으로 하는지 확인한다.
다음 예제에서
/dev/sdg대신 카드의 디바이스를 사용한다.mkmmc-android.sh /dev/sdg
모든 조작이 완료되면 파일 시스템을 동기화하고 파티션을 마운트 해제한다.
sync ; sudo umount /dev/sdg?
- microSD 카드를 BeagleBoard-xM에 삽입하고 전원을 연결한다.
시스템이 자체적으로 구성되기 때문에 첫 번째 부팅에는 시간이 걸린다. 약 4분이 경과하면 Android 로고가 표시되고 홈 화면도 표시된다. 네트워크가 자동으로 활성화되지 않으면 5분을 더 기다린 후 다시 부팅한다. 콘솔이 활성 상태를 유지하고
root로 자동으로 로그인된다.
Ubuntu는 빠르게 넷북, MID(Mobile Internet Device) 및 기타 소형 시스템을 위한 유명한 배포판이 되고 있다. Ubuntu의 모회사인 Canonical은 BeagleBoard와 같이 Ubuntu를 ARM 프로세서에 연결하기 위해 필요한 전용 자원을 가지고 있다. Android와 마찬가지로 시작하기 전에 모니터와 USB 키보드 및 마우스를 연결해야 한다.
- Ubuntu OMAP Maverick Install 페이지에서 지시사항을 읽는다.
- 사전 컴파일된 바이너리 이미지를 다운로드한다. BeagleBoard-xM을 위한
이미지(TI OMAP3 컴퓨터용 사전 설치된 넷북 이미지)를
식별한다(
ubuntu-netbook-10.10-preinstalled-netbook-armel+omap.img.gz). 지금은 이미지를 압축 해제하지 않는다. - 4GB 이상의 microSD 카드를 삽입하고 디바이스 이름을 결정한다.
예를 들어, USB 카드 리더를 사용하는 경우에는
fdisk를 사용하여 카드의 특성과 일치하는 디스크를 검색한다. 다음 예제에서는/dev/sdg를 보여 준다.# fdisk -l ... Disk /dev/sdg: 3.9 GB, xxx bytes 255 heads, 63 sectors/track, xxx cylinders
- 이미지를 카드에 직접 쓴다.
참고: 시스템 디스크가 아니라 SD 카드를 대상으로 하는지 확인한다.
다음 예제에서
/dev/sdg대신 카드의 디바이스를 사용한다.sudo sh -c 'zcat \ ./ubuntu-netbook-10.10-preinstalled-netbook-armel+omap.img.gz > /dev/sdg'
참고: BeagleBoard-xM이 개정판 A3인 경우에는 다른 커널을 다운로드해야 할 수 있다. 세부사항은 Ubuntu Maverick 설치 페이지를 참조한다.
모든 조작이 완료되면 파일 시스템을 동기화하고 파티션을 마운트 해제한다.
sync ; sudo umount /dev/sdg?
- 카드를 BeagleBoard-xM에 삽입하고 전원을 연결한다.
시스템이 자체적으로 구성되기 때문에 첫 번째 부팅에는 시간이 걸리며 그동안 모니터와 콘솔은 어둡게 유지될 수 있다. 약 5분 뒤에 Ubuntu 로고가 모니터에 표시되고 뒤이어 일련의 시스템 구성 화면이 표시된다. BeagleBoard에 연결된 키보드와 마우스를 사용하여 구성 질문에 답한다. 네트워크가 자동으로 활성화되지 않으면 시스템이 완전히 작동될 때까지 기다린 후 시스템을 종료(System으로 이동하여 Shut Down 선택)한 다음 다시 부팅한다.
Ubuntu의 경우 콘솔은 활성 상태를 유지하지 않는다. 모니터와 키보드 또는 마우스를 통해 시스템과 상호작용해야 한다. 하지만 Ubuntu Software Center로부터 VNC(Virtual Network Computing) 서버를 설치하고 VNC를 통해 시스템과 상호작용할 수 있다.
이들 운영 체제 각각은 BeagleBoard 자체와 마찬가지로 웹 사이트, wiki, 메일 목록 및 IRC(Internet Relay Chat) 채널을 포함한 고유 커뮤니티 환경을 가지고 있다. BeagleBoard-xM과 선택된 운영 체제에 대해 배우는 동안 다음과 같은 훌륭한 참고자료를 활용해 보자.
교육
-
BeagleBoard.org는 BeagleBoard-xM System Reference Manual(PDF)을
포함한 BeagleBoard에 대한 모든 내용의 기본 포털이다. 커뮤니티에서 생성한
정보의 두 가지 주요 사이트는 eLinux.org BeagleBoard wiki와
좀더 작은 wiki on code.google.com이다.
- 기본 Angstrom 사이트에는
Angstrom 배포판에 대한 풍부한 정보가 들어 있다. 포함된 유효성 검증 이미지의 사용에 대한
정보는 진단 페이지에 있다.
Angstrom BeagleBoard 데모 페이지에서
BeagleBoard용 소프트웨어를 다운로드할 수 있다(페이지의 아래쪽 중간에 있는 지시사항 확인).
Angstrom의 Narcissus 도구를 사용하여
사용자 정의 사전 빌드 이미지를 작성할 수도 있다.
- BeagleBoard-xM에 대한 Android 참고자료에는
Rowboat 웹 사이트와 Texas Instruments Android DevKit 페이지가
포함된다. 일반적인 Android 운영 체제에 대해 자세히 살펴보려면 기본 Android 페이지에서
시작한다.
- BeagleBoard-xM에 대한 Ubuntu 참고자료에는
eLinux.org의 BeagleBoardUbuntu 페이지와 Ubuntu wiki의 OMAP Maverick
Install 페이지가 포함된다. 일반적인 Ubuntu 운영 체제에 대해 자세히 살펴보려면 기본 Ubuntu 페이지에서
시작한다.
-
Chris Hallinan이 저술한 Embedded Linux
Primer, 2nd Ed.(Prentice Hall, 2010)는 임베디드 Linux에 대해
학습하기 위한 최적의 참고자료 중 하나이다.
- "Boot Linux on the Beagle Board"(developerWorks, 2009년 8월)에서는
BeagleBoard 개정판 C에서 Linux를 부팅하는 방법을 보여 준다.
-
The Open Source Way는 열린 세상에서 어떠한 일들이 수행되는지 정의하고 교육, 정부 및 비즈니스와 같은
새로운 범주에서 오픈 소스 방식을 홍보하기 위해 커뮤니티에서 작성한 컨텐츠가 들어 있는 wiki이자 서적이자 교과서(곧 출간 예정임)이다.
-
Linux에서는
수백 개의 기술자료 목록과 함께, Linux 개발자와 관리자를 위한
다양한 다운로드, 토론 포럼 및 다른 참고자료를 찾을 수 있다.
-
developerWorks 기술 행사 및 웹 캐스트를 통해 다양한 IBM 제품 및 IT 산업 주제에 대한 최신 정보를 얻을 수 있다.
-
무료 developerWorks Live!
briefing을 통해 최신 IBM 제품 및 도구에 대한 정보뿐만 아니라 IT 업계의 최신 경향까지도 빠르게 확인할 수 있다.
-
developerWorks on-demand demos에서는 입문자를 위한 제품 설치 및 설정부터 숙련된 개발자를 위한 고급 기능까지 망라된 다양한 데모를 제공한다.
-
Twitter의 developerWorks를 팔로우(follow)하거나
developerWorks에 대한 Linux 트윗(tweet)의 피드를 구독하자.
제품 및 기술 얻기
-
자신에게 가장한 적합한 방법으로 IBM
제품을 평가해 보자. 시험판 제품을 다운로드하거나, 온라인으로 제품을 사용해 보거나, 클라우드 환경에서 제품을 사용하거나,
SOA Sandbox에서
SOA(Service Oriented Architecture)를 효과적으로 구현하는 방법을 배울 수 있다.
토론
- BeagleBoard
토론 메일 목록과 BeagleBoard IRC 채널에서
BeagleBoard의 모든 내용에 대한 토론에 참여할 수 있다.
-
developerWorks 커뮤니티에 참여하자. 개발자가 운영하고 있는 블로그, 포럼, 그룹 및 위키를 살펴보면서 다른 developerWorks 사용자와 의견을 나눌 수 있다.
