Quick Start

必要な環境

Teamacaronの実機でサンプルを実行するまでに最低限必要な環境を挙げます。

  1. Linux PC (OpenRTM-aist-1.0.x、Eclipse toolsをインストール済みの環境)
  2. Windows PC (起動ディスク作成時のみ必要)
  3. microSDカード (SDHCは使用できません(※))

microSDカードの動作確認状況はTeamacaronのWebサイトを参照ください。 http://www.t-engine4u.com/download/macaron/sd.html

パッケージの展開

Teamacaron開発キット付属の開発環境とOpenRTM on T-Kernelのパッケージを展開します。

パッケージ名のバージョン番号は適時読み替えてください。

$ mkdir /usr/local/te
$ cd /usr/local/te
$ tar zxpf te.resource.em1d512.1.0.0.tar.gz
$ tar zxpf te.Linux-i686.common.12.tar.gz
$ tar zxpf te.Linux-i686.arm_2.1.0.0.tar.gz
$ tar xjf openrtm-tk-1.0.2.tar.bz2

T-Kernel向けのRTCをビルドする場合に必要になるので、環境変数をセットしてください。 $HOME/.tkenvを作成し、$HOME/.bashrcから読み込む場合の記載例を示します。

---- $HOME/.bashrc ----
if [ -f ~/.tkenv ]; then
    . ~/.tkenv
fi
----
---- $HOME/.tkenv ----
export BD=/usr/local/te
export GNUs=/usr
export GNU_BD=$BD/tool/Linux-i686
export GNUarm_2=$GNU_BD/arm_2-unknown-tkernel
export GCC_EXEC_PREFIX=$GNU_BD/lib/gcc/

export NES_POSIX_PATH=$BD/lib/nes-libposix
export RTORB_TK_PATH=$BD/lib/rtorb-tkernel
export OPENRTM_TK_PATH=$BD/lib/openrtm-tkernel
----

起動ディスクを作成する

Teamacaronは内臓フラッシュメモリを持ちません。 microSDカードのFATファイルシステム上に配置したT-MonitorのイメージからT-Kernelを起動するようになっています。 手順が少々面倒ですが、起動ディスクの作成が必要なのは最初だけなので頑張ってください。

1度、T-Kernelをブートできるようにしてから、T-Kernel上でhdpartコマンドを使ってmicroSDカードのパーティションを分割します。 前述のとおり、 第1パーティションはFATにする必要があり、第2パーティション以降にT-Kernelファイルシステム用の区画を作成します。

<Windows PC>

Windows PCを使いFAT(FAT16)でmicroSDをフォーマットします。

フォーマット後のmicroSDに以下のファイルを置いてください。

sdboot.bin
tmonitor.bin
romdisk.bin

Teamacaronとシリアル接続できるPCで作業します。 Tera Termやgtermなどの通信ソフトを使ってTeamacaronと通信します。

通信速度 115,200 bps
データ長 8 ビット
ストップビット 1 ビット
パリティ なし
フロー制御 XON/XOFF (ハードフロー制御(RS/CS)は利用不可)
文字コード ASCII / EUC コード
受信行末 CR (0x0d)
送信行末 CRLF (0x0d, 0x0a)

TeamacaronにmicroSDカードを装着して電源を入れてください。

以下のメッセージが出力されてコマンド入力待ちとなります。

<デバッグコンソール>
PMC T-Kernel/EM1D512 + Extension Version 1.1.00
Copyright (C) 2009-2010 by Personal Media Corporation

** SegmentMgr OK
** ProcessMgr OK
** MemoryMgr OK
** MessageMgr OK
** TaskCommMgr OK
** GNameMgr OK
** DeviceMgr OK
** ClockMgr OK
** EventMgr OK
** FileMgr OK
** UsbMgr OK
** ClockDrv OK
** SysDiskDrv OK

<<<< IMS >>>>
[IMS]% $chgsys -s2 uda rda
pid = 2 (pri = -1)
[IMS]% lodspg   screen          !35
SYSPRG screen [1] d0188000 - d018e000
[IMS]% lodspg   netdrv          !23
SYSPRG netdrv [2] d017e000 - d0185000
[IMS]% lodspg   tcpipmgr
SYSPRG tcpipmgr [3] d01c7000 - d01ff000
[IMS]% lodspg   unixemu
SYSPRG unixemu [4] d0252000 - d0289000
[IMS]% $cli     STARTUP.CLI     !224
pid = 3 (pri = 224)
<< START CLI >>
2012/1/20(金) 4:38:24
[/SYS]%

既存のパーティションを削除し、 2GのmicroSDカードを以下のように分割する例を示します。

1 FAT 1G
2 T-Kernel 残り
<デバッグコンソール>
[/SYS]% hdpart pcb
pcb   [C:471  H:128  S:63  B:3813376 (1862 MB)]
No System    Boot   StartCHS      EndCHS         SecNo     SecCnt     Size
1  06 DOS     00     0:  1: 1   472:113:49          63    3813313  1861 MB
2  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
3  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
4  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
** Create/Delete/Boot/Edit/Quit ? d
Delete PartNo (1-4,All) ? all
No System    Boot   StartCHS      EndCHS         SecNo     SecCnt     Size
1  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
2  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
3  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
4  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
** Create/Delete/Boot/Edit/Update/Quit ? c
Create PartNo (1-4) ? 1
Size [GB/MB/KB,All] (<1862MB) ? 1GB
No System    Boot   StartCHS      EndCHS         SecNo     SecCnt     Size
1  13 BTRON   00     0:  1: 1   260:127:63          63    2104641  1027 MB
2  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
3  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
4  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
** Create/Delete/Boot/Edit/Update/Quit ? c
Create PartNo (1-4) ? 2
Size [GB/MB/KB,All] (<835MB) ? all
No System    Boot   StartCHS      EndCHS         SecNo     SecCnt     Size
1  13 BTRON   00     0:  1: 1   260:127:63          63    2104641  1027 MB
2  13 BTRON   00   261:  0: 1   472:113:49     2104704    1708672   834 MB
3  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
4  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
** Create/Delete/Boot/Edit/Update/Quit ? b
Boot PartNo (1-4,Clear) ? 2
No System    Boot   StartCHS      EndCHS         SecNo     SecCnt     Size
1  13 BTRON   00     0:  1: 1   260:127:63          63    2104641  1027 MB
2  13 BTRON   80   261:  0: 1   472:113:49     2104704    1708672   834 MB
3  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
4  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
** Create/Delete/Boot/Edit/Update/Quit ? u
** pcb: Updated Master Boot Block

第2パーティションを「T-Kernel標準ファイルシステム(STD)」としてフォーマットします。

<デバッグコンソール>
[/SYS]% format -b pcb0 Dummy
Format pcb0 [STD] Dummy
Logical Formatting...
Writing BootCode...
Disk Format Success.
[/SYS]% format -b pcb1 EM1D512
Format pcb1 [STD] EM1D512
Logical Formatting...
Writing BootCode...
Disk Format Success.

フォーマット後の第2パーティション(pcb1)にシステムデータをコピーします。

<デバッグコンソール>
[/SYS]% att pcb1 A
pcb1 -> A
[/SYS]% rcp -r /SYS /A/=
[/SYS]% det pcb1

<Windows PC>

microSDのパーティションを分割したので、再度、 Windows PCを使いFAT(FAT16)でmicroSDをフォーマットします。

フォーマット後のmicroSDに以下のファイルを置きます。

sdboot.bin
tmonitor.bin
install.bz
install_tshell.bz

TeamacaronにmicroSDカードを装着して電源を入れてください。

以下のメッセージが出力されてコマンド入力待ちとなります。

<デバッグコンソール>
PMC T-Kernel/EM1D512 + Extension Version 1.1.00
Copyright (C) 2009-2010 by Personal Media Corporation

** SegmentMgr OK
** ProcessMgr OK
** MemoryMgr OK
** MessageMgr OK
** TaskCommMgr OK
** GNameMgr OK
** DeviceMgr OK
** ClockMgr OK
** EventMgr OK
** FileMgr OK
** UsbMgr OK
** ClockDrv OK
** SysDiskDrv OK

<<<< IMS >>>>
[IMS]% $chgsys -s2 uda rda
pid = 2 (pri = -1)
[IMS]% lodspg   screen          !35
SYSPRG screen [1] d0186000 - d018c000
[IMS]% lodspg   netdrv          !23
SYSPRG netdrv [2] d017c000 - d0183000
[IMS]% lodspg   tcpipmgr
SYSPRG tcpipmgr [3] d01c5000 - d01fd000
[IMS]% lodspg   unixemu
SYSPRG unixemu [4] d0250000 - d0287000
[IMS]% $cli     STARTUP.CLI     !224
pid = 3 (pri = 224)
<< START CLI >>
2012/1/20(金) 5:06:35
[/SYS]% df
PATH  DEV      TOTAL      FREE USED  UNIT MAXFILE NAME
/SYS  pcb1    854336    852716   0%  4096  65535  EM1D512

dfコマンドでアタッチされているファイルシステムの情報を参照できます。 microSDカードに作成した第2パーティション(pcb1)が/SYSに接続されています。 pcb0はFATパーティションです。

FATに配置したファイル(install.bz、install_tshell.bz)を使って、pcb1パーティションにT-Kernelシステムをインストールします。 T-KernelからFATファイルシステム(pcb0)をアタッチします。

途中で「再起動してください」とメッセージが出ますが、最後の1回だけでよいため無視してください。

<デバッグコンソール>
[/SYS]% att -m pcb0 FAT
pcb0 -> FAT
[/SYS]% expf -U /FAT/install.bz
[/SYS]% install /SYS
インストールが完了しました。再起動してください。
[/SYS]% rm -r install
[/SYS]% expf -U /FAT/install_tshell.bz
[/SYS]% install_tshell /SYS
インストールが完了しました。再起動してください。
[/SYS]% rm -r install_tshell
[/SYS]% det -u pcb0
[/SYS]%
[/SYS]% df
PATH  DEV      TOTAL      FREE USED  UNIT MAXFILE NAME
/SYS  pcb1    854336    833540   2%  4096  65535  EM1D512

Teamacaronを再起動させます。

<デバッグコンソール>
[/SYS]% exit
<< EXIT cli >>
[IMS]% exit     1
[IMS]% exit -1

PMC T-Kernel/EM1D512 + Extension Version 1.1.00
Copyright (C) 2009-2010 by Personal Media Corporation

** SegmentMgr OK
** ProcessMgr OK
** MemoryMgr OK
** MessageMgr OK
** TaskCommMgr OK
** GNameMgr OK
** DeviceMgr OK
** ClockMgr OK
** EventMgr OK
** FileMgr OK
** UsbMgr OK
** ClockDrv OK
** SysDiskDrv OK

<<<< IMS >>>>
[IMS]% $chgsys -s2 uda rda
pid = 2 (pri = -1)
[IMS]% lodspg   screen          !35
SYSPRG screen [1] d0186000 - d018c000
[IMS]% lodspg   kbpd            !30
SYSPRG kbpd [2] d017c000 - d0186000
[IMS]% lodspg   lowkbpd         !28
SYSPRG lowkbpd [3] d0199000 - d01a0000
[IMS]% lodspg   rsdrv           !26
SYSPRG rsdrv [4] d0192000 - d0198000
[IMS]% lodspg   netdrv          !23
SYSPRG netdrv [5] d01b1000 - d01b8000
[IMS]% lodspg   unixemu
SYSPRG unixemu [6] d020b000 - d0242000
[IMS]% lodspg   tcpipmgr
SYSPRG tcpipmgr [7] d0242000 - d027a000
[IMS]% lodspg   font            !120
SYSPRG font [8] d027a000 - d02a0000
[IMS]% lodspg   dp
SYSPRG dp [9] d04d1000 - d0536000
[IMS]% lodspg   tip
SYSPRG tip [10] d0450000 - d0466000
[IMS]% lodspg   hmi
SYSPRG hmi [11] d0536000 - d056a000
[IMS]% lodspg   omgr
SYSPRG omgr [12] d04a5000 - d04c6000
[IMS]% $$sysdmn         !112 &
pid = 4 (pri = 112)
[IMS]% $logon
pid = 5 (pri = -1)
[IMS]% $cli     STARTUP.CLI     !224
pid = 8 (pri = 224)
<< START CLI >>
2012/1/20(金) 5:15:54
[9] /SYS/$$PROGRAM.BOX/DLED

TCPIPマネージャなど、拡張分のサブシステム群が起動するようになりました。 ここまでで、起動ディスクの作成は完了です。

ネットワークを設定する

netconfコマンドを使ってIPアドレス、ネットマスクを設定します。 設定した結果は/SYS/NETCONFというファイルに保持されます。

<デバッグコンソール>
[/SYS]% netconf c
hostname   =  ? tm01
host ip    = 0.0.0.0 ? 192.168.0.101
dns1name   =  ?
dns1 ip    = 0.0.0.0 ?
dns2name   =  ?
dns2 ip    = 0.0.0.0 ?
domain     =  ?
gateway ip = 0.0.0.0 ?
subnetmask = 255.255.255.0 ?
wlan       = none (n/a/i)?
[/SYS]% tp -a NETCONF
#################################################
# NETCONF (R2)
#################################################
#
# Network Conf
#
$$HOST  tm01 cnet 255.255.255.0 192.168.0.101 NETDRV DEVICE=Neta
$$DNS
$$DNS
$$GW
#
# Modem Conf
#
MODEM
MODEM
#
# DialUp Conf (max 20)
#
DIALUP

引数なしでnetconfを実行すると現在の設定値を出力します。

<デバッグコンソール>
[/SYS]% netconf
hostname   = tm01
host ip    = 192.168.0.101
dns1name   =
dns1 ip    = 0.0.0.0
dns2name   =
dns2 ip    = 0.0.0.0
domain     =
gateway ip = 0.0.0.0
subnetmask = 255.255.255.0

RTCを配置する

起動させたい実行プログラム(RTC)と設定ファイルをmicroSD上に配置します。 FATファイルシステム、T-Kernel標準ファイルシステムのどちらでも構いません。

開発環境のホストとなるLinux PCからは、T-Kernel標準ファイルシステムを直接マウントできません。 デバッグコンソールからシリアルを使ってTeamacaron上にプログラムを転送するのが一般的です。

TeamacaronではUNIXエミュレータ(unixemu)と呼ばれる機能が使えます。 unixemu対応コマンドが格納されたディレクトリをパスに追加しておくと便利です。 UNIXライクのコマンドがFATファイルシステムを対象としても利用できます。

<デバッグコンソール>
[/SYS]% att -m pcb0 FAT
pcb0 -> FAT
[/SYS]% df
PATH  DEV      TOTAL      FREE USED  UNIT MAXFILE NAME
/SYS  pcb1    854336    833540   2%  4096  65535  EM1D512
/FAT  pcb0   1052192   1042848   0% 32768      ?  (MS-DOS)
[/SYS]% cd /FAT
[/FAT]% ls
/FAT: Not Found
[/FAT]% ux/ls
install.bz  install_tshell.bz  sdboot.bin  tmonitor.bin
[/FAT]% ux/ls -l
total 18624
-rwxrwxrwx    1  0  0  1553734 Apr  2  2010 install.bz
-rwxrwxrwx    1  0  0  7817057 Apr 29  2010 install_tshell.bz
-rwxrwxrwx    1  0  0     5056 Apr  2  2010 sdboot.bin
-rwxrwxrwx    1  0  0    76672 Apr 13  2010 tmonitor.bin

[/SYS]% cd /SYS/bin/ux
[/SYS/bin/ux]% ls
ls                  cp                  pwd                 rm
mv                  mkdir               rmdir               chmod
fcnv

今回はFATファイルシステム上にRTCを配置して実行させる例を示します。 FATファイルシステムであれば、Linux PCからもマウントでき、プログラムの置き換えが楽になります。

各種設定ファイルをLinux PCから編集するため、T-KernelからFATへコピーします。 Linux PCで編集したあと、T-Kernel側へ書き戻します。

<デバッグコンソール>
[/SYS]% att -m pcb0 FAT
pcb0 -> FAT
[/SYS]% cd /FAT
[/FAT]% ux/mkdir CFG
[/FAT]% ux/mkdir -p USR/LOCAL/BIN
[/FAT]% cd /SYS
[/SYS]% ux/cp SYSCONF DEVCONF STARTUP.CMD STARTUP.CLI .xcli /FAT/CFG/

<Linux PC>

開発ホストPCでmicroSDカード上の設定ファイルを編集します。

.xcliでは、コマンドサーチパスの追加と第1パーティション(pcb0)のアタッチを記載します。 FATファイルシステムのアタッチには-mオプションを指定します。

---- .xcli ----
*
*	.xcli (T-Engine)
*
*	CLI 初期コマンドスクリプト
*	(C) Copyright 2002 by Personal Media Corporation
*
if &CLI < 0
	exit
endif
*
date
*
cd /SYS
path /SYS/bin/ux /SYS/bin /SYS
*
alias ll ls -l
*
att -m pcb0 FAT
----

SYSCONFを編集し、システムリソースの最大値を少し増やしておきます。

(同時に実行させるRTCの数が増えるとリソース不足となるため)

---- SYSCONF ----
#
#	T-Kernel/OS
#
TMaxTskId	500	# 最大タスク数
TMaxSemId	500	# 最大セマフォ数
TMaxFlgId	500	# 最大イベントフラグ数
----

OpenRTM on T-Kernelに含まれるビルド済みのRTCを使います。

aoki@nes-pc01:/usr/local/te/bin/em1d512$ ls
TkEcTestComp*  dummy  rtc_hokuyoaistComp*  rtcd*  rtcprof*
aoki@nes-pc01:/usr/local/te/bin/em1d512$ cp TkEcTestComp rtc_hokuyoaistComp rtcd rtcprof /media/304C-8497/USR/LOCAL/BIN/

サンプルRTC(TkEcTestComp)向けのrtc.confを作成します。 ネーミングサービスが192.168.0.1:2809で起動している前提です。

---- rtc.conf ----
corba.nameservers: 192.168.0.1:2809
naming.formats: %n.rtc
logger.enable: NO
exec_cxt.periodic.rate:10
exec_cxt.periodic.type:TkPeriodicExecutionContext
----
aoki@nes-pc01:/usr/local/te/bin/em1d512$ cp rtc.conf /media/304C-8497/USR/LOCAL/BIN/

TkEcTestCompを自動起動するように起動スクリプトを作成します。

実行させたいRTCを変更するときにFAT上のファイルを編集するだけで対応できるようになるので、 以下の順で実行するように記載します。

/SYS/STARTUP.CLI
 ↓
/FAT/USR/LOCAL/BIN/run_rtc.cmd
 ↓
TkEcTestComp

STARTUP.CLIにrun_rtc.cmdのaliasを書きます。doのところで実行されます。 aliasにせず、直接、実行させても問題ありません。

/SYS/.xcliでFATパーティションのpcb0をアタッチさせているので、 /FAT/* のプログラムを起動させるのは、.xcliより後にしてください。

---- STARTUP.CLI ----
*
*	@(#)STARTUP.CLI (EM1D512) 09-11-27
*
*	システム起動用 CLI 初期コマンドスクリプト (T-Shell)
*	Copyright (C) 2009 by Personal Media Corporation
*
/SYS/.xcli
*
*alias do /SYS/$$PROGRAM.BOX/DLED /SYS/USR 0
alias do /FAT/USR/LOCAL/BIN/run_rtc.cmd
*
if &DBG == 0
	do
	exit
else
	do &
endif
----
---- run_rtc.cmd ----
/FAT/USR/LOCAL/BIN/TkEcTestComp -f /FAT/USR/LOCAL/BIN/rtc.conf &
----
aoki@nes-pc01:/usr/local/te/bin/em1d512$ cp run_rtc.cmd /media/304C-8497/USR/LOCAL/BIN/

TeamacaronにmicroSDを装着して電源を入れます。

編集した設定ファイルをT-Kernel標準ファイルシステム上の/SYS/*に書き戻します。

<デバッグコンソール>
[/SYS]% att -m pcb0 FAT
pcb0 -> FAT
[/SYS]% cd /FAT/CFG
[/FAT/CFG]% ux/ls -a
.  ..  .xcli  DEVCONF  STARTUP.CLI  STARTUP.CMD  SYSCONF
[/FAT/CFG]% ux/cp .xcli DEVCONF STARTUP.CLI STARTUP.CMD SYSCONF /SYS/

Teamacaronを再起動させるとTkEcTestCompが実行されます。

<Linux PC>

Eclipse toolsのRT System Editorを使ってRTCをActivateさせると実行を開始します。

<デバッグコンソール>
[/SYS]% onActivated
m_exetime:80msec
m_maxcnt:10
[time] 109msec (min:100, max:110)
[time] 110msec (min:100, max:110)
[time] 110msec (min:100, max:110)
[time] 109msec (min:100, max:110)
[time] 110msec (min:100, max:110)
[time] 110msec (min:100, max:110)
・・・
[time] 110msec (min:100, max:110)
[time] 110msec (min:100, max:110)
[time] 110msec (min:100, max:110)
[time] 110msec (min:100, max:110)
onDeactivated

以上