rtc (mod_path_plan-0.4.9) | 2012-01-24 20:00 |
rtm-t-kernel (openrtm-tk-1.0.2) | 2012-02-23 12:00 |
Teamacaronの実機でサンプルを実行するまでに最低限必要な環境を挙げます。
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)と設定ファイルを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
以上
[ページ情報]
更新日時: 2012-08-19 23:07:05, 更新者: openrtm-tk
[権限]
表示:無制限, 編集:ログインユーザ, 削除/設定:メンバー