Armadillo240는 アットマークテクノ에서 판매하고 있는, ARM를 탑재한 Linux탑재 가능한 소형 CPU보드입니다.
Atmark Techno, Inc.에서 ATDE2(Atmark Techno Development Environment)와 GNU 크로스 개발툴, AtmarkDist라고 하는 3개의 개발툴이 제공되어 간단하게 크로스 개발을 실시할 수 있습니다.
여기에서는 Armadillo로 실행할 수 있는 RT컴포넌트의 실행 파일을 크로스 개발합니다. 그 후, Armadillo 기동해 RT컴포넌트가 자동으로 기동하는 이미지 파일(romfs:루트 파일 시스템)을 작성합니다.
※ATDE2-20071018.zip파일의 압축을 해제해 폴더안의 ATDE2.vmx를 더블 클릭 또는 VMware의 [file]-[Open]에서 압축을 해제한 폴더안의 ATDE2-20071018의 ATDE2.vmx를 선택해 주십시오.
ATDE2는 이미 크로스 컴파일 환경이 갖추어지고 있습니다만, OpenRTM의 RT컴포넌트를 크로스 개발할 수 있는 환경으로 정리할 필요가 있습니다. 기동한 ATDE2상에서 이하의 소스와 셸 스크립트를 다운로드해 홈 디렉토리 이하의 적당한 작업 디렉토리에 넣어 둡니다.
deb http://downloads.pylone.jp/cross-toolchain/deb ./ deb http://www.openrtm.org/pub/Linux/debian/ etch main
# apt-get update # apt-get install python-yaml (yes 또는 Y를 입력해 인스톨을 완료해 주세요.)
# sh arm-cross-install.sh (yes 또는 Y를 입력해 인스톨을 완료해 주세요.)
# apt-get install gdm (yes 또는 Y를 입력해 인스톨을 완료해 주세요.) # /etc/init.d/gdm start
OpenRTM-aist-0.4.2의 소스 코드를 홈 디렉토리 등의 적당한 디렉토리에 압축을 해제해 주십시오. 압축해제 후, 작성된 디렉토리로 이동합니다.
# tar zxvf OpenRTM-aist-0.4.2.tar.gz # cd OpenRTM-aist-0.4.2
# cp ../config.sh ./ # sh config.sh /usr/arm-linux-gnu
# make
OpenRTM-aist-0.4.2/rtm OpenRTM-aist-0.4.2/rtm/idl OpenRTM-aist-0.4.2/utils/rtm-config OpenRTM-aist-0.4.2/utils/rtm-naming OpenRTM-aist-0.4.2/utils/rtc-template
# make install
이상으로, RT컴포넌트를 크로스 개발하는 환경이 갖추어졌습니다. 여기에서는 예로서 샘플에 포함되는 SeqOutComp의 소스를 사용해 크로스 컴파일 해 보겠습니다.
> export PATH=/usr/arm-linux-gnu/bin:$PATH
샘플을 작성하기 위해 적당한 디렉토리를 작성해, 거기에 OpenRTM의 샘플 SeqOut의 소스에 포함되는 이하의 파일을 복사해 주십시오.
SeqOutComp.cpp SeqOut.h SeqOut.cpp Makefile.SeqOut
> mkdir test > cp (인스톨 디렉토리)/OpenRTM-aist-0.4.2/examples/SeqIO/SeqOutComp.cpp ./test/ (상기의 커멘드로 모두 복사해 주십시오.)
OutPort가 여덟 개 있는 SeqOutComp 컴포넌트를 생성합니다.
생성된, Makefile.SeqOut의 내용을 확인해 주십시오.CXX=로 시작되는 행이 없는 경우, 컴파일러에 크로스용의 컴파일러를 이하와 같이 지정할 필요가 있습니다.
환경 변수를 설정해 make
> CXX=arm-linux-gnu-g++ make -f Makefile.SeqOut
> export CXX=arm-linux-gnu-g++ > make -f Makefile.SeqOut
make가 정상적으로 완료되면, SeqOutComp의 실행 파일이 생성됩니다.
Armadillo240상에서 RT컴포넌트를 실행하는데 필요한 파일을 USB 메모리에 복사·생성합니다.
이 예에서는, 방금전 크로스 컴파일 한 SeqOutComp를 사용합니다. SeqOutComp를 USB 메모리의 적당한 장소(루트 디렉토리 등)에 복사합니다.
이 디렉토리내의 라이브러리 가운데, 이하의 것을 USB 메모리에 복사합니다. USB 플래쉬 메모리에 라이브러리를 두는 디렉토리 lib를 작성합니다.
>mkdir lib 또는, GUI의 경우, 오른쪽 마우스 버튼 클릭으로 폴더를 작성합니다
/usr/arm-linux-gnu/lib의 라이브러리를 복사할 때에, 이하와 같이 이름을 변경해 주십시오.
| 라이브러리명 | 라이브러리명 변경 후 |
| libomniDynamic4.so.0.6 | libomniDynamic4.so.0 |
| libomniORB4.so.0.6 | libomniORB4.so.0 |
| libomnithread.so.3.1 | libomnithread.so.3 |
| libRTC-0.4.2.so.0.0.4 | libRTC-0.4.2.so.0 |
| librt.so.1 | librt.so.1(변경 없음) |
| libACE.so.5.4.7 | libACE.so.5.4.7(변경 없음) |
| 라이브러리명 | 라이브러리명 변경 후 |
| libm-2.3.6.so | libm.so.6 |
| libomiDynamic4.so.0.6 | libomniDynamic4.so.0 |
| libomnithread.so.3.1 | libomnithread.so.3 |
| librt.so.1 | librt.so.1(변경 없음) |
| libRTC-1.0.0.so.0.0.4 | libRTC-1.0.0.so.0 |
| libstdc++.so.6.0.8 | libstdc++.so.6 |
| libuuid.so.1.2 | libuuid.so.1 |
Armadillo상에서는 네임서버를 기동하지 않으므로 다른 PC상에서 네임서버를 기동해 주십시오. rtc.conf의 corba.nameservers의 옵션에는 그 네임서버를 기동한 PC의 주소를 지정합니다.
corba.nameservers: 192.168.100.1 (자신의 네임서버 IP주소를 입력) naming.formats: %n.rtc
자동으로 마운트되지 않을 때는 VMware(ATDE2)의 단말에서 su커멘드로 유저를 root로 변경하여 mount를 다시 합니다.
> su # mkdir /mnt/(적당한 디렉토리) # mount -t vfat /dev/sdb1 /mnt/(위에서 작성한 디렉토리)
# umount /mnt/(위에서 작성한 디렉토리)
USB 플래쉬 메모리의 준비를 끝내면, USB 메모리는 아래와 같은 디렉토리 구조가 됩니다.
USB 메모리 -+- lib --+- libomniDynamic4.so.0
| +- libomniORB4.so.0
| +- libomnithread.so.3
| +- libRTC-0.4.2.so.0
| +- librt.so.1
| +- libACE.so.5.4.7
|
+- SeqOutComp
|
+- rtc.conf USB 메모리 -+- lib --+- libm.so.6
| +- libomniDynamic4.so.0
| +- ibomnithread.so.3
| +- librt.so.1
| +- libRTC-1.0.0.so.0
| +- libstdc++.so.6
| +- libuuid.so.1
|
+- SeqOutComp
|
+- rtc.confUSB 메모리의 마운트 설정, 라이브러리 PATH의 설정을 변경해 실행 파일을 기동합니다. PC와 Armadillo를 시리얼 케이블로 접속해 Armadillo상의 Linux의 시리얼 콘솔로부터 로그인하는 것으로 Armadillo상의 Linux를 조작할 수 있습니다. 이하의 하기 쉬운 방법으로 진행해 주십시오.
ATDE2상으로부터 단말에뮬레이터의 프로그램minicom로 조작합니다. PC의 시리얼 포트와 Armadillo의 시리얼 포트를 시리얼 케이블로 접속해 주십시오. 시리얼 포트가 없는 PC의 경우는 USB 시리얼 변환 케이블 등을 사용할 필요가 있습니다. Armadillo의 시리얼 케이블의 접속 방법에 관해서는, Armadillo의 메뉴얼을 참조해 주십시오.
※VMware의 가상 머신의 디바이스의 설정을 이하와 같이 해 주십시오.
도구모음>VM>설정>하드웨어 태그

접속의 체크를 확인해 주십시오.

디바이스 스테이터스의 체크와 접속>물리 시리얼 포트를 사용으로 포트를 확인해 주십시오. ATDE2의 단말로부터, 단말에뮬레이터 minicom를 기동합니다.
> minicom
Windows에서 TeraTerm 등의 단말에뮬레이터를 사용해 Armadillo의 시리얼 콘솔과 접속할 수도 있습니다. TeraTerm는 여기에서 무료로 다운로드할 수 있습니다. 이하의 설정으로 기동해 주십시오.
상기의 설정으로 기동하면, Armadillo240의 로그인 화면이 표시됩니다. ※표시되지 않을 때는 Enter를 눌러주십시오. 이후는 공통의 조작으로 진행해 주십시오.
USB 메모리를 Armadillo에 꼽아 주십시오. Armadillo의 로그인 화면에서 root(패스워드 :root)로 로그인해 주십시오. 디폴트의 mount는 옵션(umous=111)으로, 어느 유저도 실행을 할 수 없는 퍼미션 설정입니다.
한 번 언마운트 하고 나서, 기입·실행 가능한 -o rw옵션으로 재마운트 합니다.
# umount /dev/sda1 # mount -t vfat -o rw /dev/sda1 /home/www-data/storage/
# su guest > cd /home/www-data/storage
> export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/www-data/storage/
> ./SeqOutComp (실행 파일이 실행되었습니다)※RtcLink로부터도 확인할 수 있습니다.
이 방법에서는 Armadillo의 기동을 할 때마다 설정을 수정하지 않으면 안됩니다. 다음의 장에서는, Armadillo의 기동 후 RT컴포넌트가 자동으로 기동하는 이미지 파일을 작성해 Armadillo에 다운로드합니다.
지금까지 방법으로는 Armadillo의 기동 마다 단말 에뮬레이터로 설정을 변경할 필요가 있습니다. 여기에서는 AtmarkTechno,Inc로부터 제공되고 있는 atmark-dist를 사용해, Armadillo240의 기동 후 RT컴포넌트가 자동으로 기동하는 이미지 파일을 작성해 Armadillo에 다운로드합니다.
RT컴포넌트를 크로스 컴파일 한 ATDE2의 환경을 그대로 사용합니다. ATDE2상에 이하의 항목을 다운로드해 주십시오.
여기에서는 Armadillo의 userland의 이미지 파일을 작성합니다. 여기서 작성하는 이미지 파일을 사용하면, USB 메모리에 미리 인스톨 된 RT컴포넌트를 자동적으로 기동할 수 있게 됩니다.
#!bin/sh . /etc/default/openrtm.conf export LD_LIBRARY_PATH=$LIBPATH:/home/openrtm/lib/ /home/openrtm/SeqOutComp(실행 파일명) -f /home/openrtm/rtc.conf
ATDE2상에서, atmark-dist와 linux커널, openrtm.patch를 다운로드해 압축을 해제해 주십시오.
> tar zxvf atmark-dist--20090318.tar.gz > tar zxvf linux-2.6.12.3-a9-15.tar.gz
> ln -s ../linux-2.6.12.3-a9-15 ./linux-2.6.x
> make config Select the Vendor you wish to target :Atmarktechno(입력) Select the Product you wish to target :Armadillo-240.Recover(입력) Kernel is linux-2.6.x :default(enter해도 OK) defined CONFIG_DEFAULTS_CROSSDEV_DEFAULT:none(enter해도 OK) Default all settings :y(입력) Customize Kernel Settings :n(enter해도 OK) Customize Vendor/User Settings :n(enter해도 OK) Update Default Vendor Settings :n(enter해도 OK, 종료)
openrtm.patch를 복사해 이하의 순서로 패치를 해주십시오.
> cp openrtm.patch /atmark-dist-YYYYMMDD/vendor/AtmarkTechno/Armadillo-240.Recover/openrtm.patch > cd /atmark-dist-YYYYMMDD/vendor/AtmarkTechno/Armadillo-240.Recover/ > patch -p1 <openrtm_new.patch
> cd ../../../ > make dep all
/bin/sh: extensions/.dccp-test: 허가가 없습니다 /bin/sh: extensions/.layer7-test: 허가가 없습니다 /bin/sh: extensions/.statistic-test: 허가가 없습니다 make[2]: 디렉토리 `/home/atmark/Desktop/foratde/forkernel/atmark-dist-200807 17/user/iptables'에 들어갑니다 romfs-inst.sh /bin/iptables romfs-inst.sh -l /bin/iptables /bin/iptables-save ln: `/bin/iptables'에 액세스중: 그런 파일이나 디렉토리는 없습니다 romfs-inst.sh -l /bin/iptables /bin/iptables-restore ln: `/bin/iptables'에 액세스중: 그런 파일이나 디렉토리는 없습니다
> ls images linux.bin linux.bin.gz romfs.img romfs.img.gz
생성한 userland의 이미지 파일 romfs.img.gz를 Armadillo240에 다운로드합니다. Armadillo는 점퍼핀(2)을쇼트 해, 전원을 넣어 두어 주십시오(Armadillo하드웨어 메뉴얼 의 16P를 참고해주십시오)
VMware(ATDE2), Windows 어느 쪽에서에서도 다운로드할 수 있습니다.
여기 에서 VMware의 가상 머신의 디바이스 설정을 실시하고 나서 진행해 주십시오.
> hermit download -i images/romfs.img.gz -r userland --port /dev/ttyUSB0 (또는, /dev/ttyS0)
Armadillo240의 본체와 함께 제공되고 있는 CD-ROM의 downloader>win32>Hermit.zip를 Widows상에 놓아주십시오.

RTCLink를 기동해 RT컴포넌트의 기동을 확인합니다.
> su # /etc/init.d/omniorb4-nameserver start
Armadillo와 호쿠요 전기 URG 센서와 조합해 분산 센서 시스템을 간단하게 구축하기 위한 유닛입니다. Armadillo상에서는 URG 센서 RT컴포넌트가 동작합니다.(Armadillo 전원을 켬과 동시에 RTC가 자동 기동합니다.) PoE (Power over Ether) 대응의 Armadillo를 사용하는 것으로 LAN 케이블만으로 통신 및 전원공급이 가능합니다. URG 센서도 PoE 로부터의 전원 공급으로 동작합니다. 케이블 1개만으로 센서 배치가 가능하므로, 분산 센서 시스템을 용이하게 구축할 수 있습니다.

