7章:ToCoNet(トコネット)のソフトウエア開発環境(SDK) とPingPong
作成2014.08.09
いよいよ、ToCoNet(トコネット)のソフトウエア開発環境(SDK)に挑戦してみたいと思います。まずはサンプルPingPongを検討します。
ToCoNet(トコネット)のソフトウエア開発環境(SDK)のダウンロード
(1)アドレス:http://tocos-wireless.com/jp/products/ToCoNet/TWESDK.html
(2)ダウンロードファイル:Windows 版SDK 2014/8月号 SDK 全部入り (582MiB, ZIP)をダウンロードします。
SDK 全部入り (582MiB, ZIP)
Eclipse を含む全ファイルです。
(3)圧縮ファイル「TWESDK_201408.zip」を」解凍します。
(4)解凍すると「TWESDK_201408」フォルダー内に「TWESDK」フォルダーがあります。
(5)C:ディレクトリ直下に「TWESDK」フォルダーを移動します。
(6)以上でToCoNet(トコネット)のソフトウエア開発環境(SDK)の設定は完了です!!
ToCoNet(トコネット)のソフトウエア開発環境(SDK)の基本操作
(1)C:\TWESDK¥eclipse.cmdをダブルクリックするとeclipseが起動します。
(2)ワークスペース「../..Wks_ToCoNet」のままOKボタンを押します。
(3)起動画面は以下に示すように9項目のエラーが表示されます。
(4)プロジェクト・エクスプローラには11個のサンプルプログラムが登録されていますが、いったん登録を削
除して必要なサンプルプログラムのみを再登録します。
(5)サンプルプログラムを右クリックして削除を選択します。
(6)以下の画面が表示されますが、ディスク上からプロジェクト・コンテンツを削除をチェックしないでOKボタンを押します。
(7)以下の警告画面が表示されますが継続ボタンを押します。
(8)同様な操作で全てのサンプルプログラムが登録を削除します。
(9)「ファイル」_「インポート」を選択します。
(10)既存プロジェクトヲ」ワークスペースへを選択して次へボタンを押します。
(11)参照にC:\TWESDK\Wks_ToCoNet\Samp_PingPongを設定して、完了ボタンを押します。
(12)以下のようにSamp_PingPongのみが設定されます。
(13)「構成のビルド」_「アクティブにする」_「PingPong(2)(JN5164)(for TWE-Lite)」を選択する。
(14)「プロジェクト」_「クリーン」を選択します。
(15)以下の画面でOKボタンを押します。
(16)「プロジェクト」_「全てビルド」を選択します。
(17)コンソールタブをクリックします。
(18)14:17:42 Build Finished (took 324ms)が表示されます。
ソースコードの修正
(1)プロジェクト・エクスプローラの「PingPong.c」をダブルクリックするとソースコードが表示されます。
(2)コード解析でエラー表示がありますが、以下の操作で表示を消します。
(3)「ウインドウ」_「設定」を選択
(4)「C/C++」_「コード解析」の全てのチェックを外します。
(5)static void vProcessEvCore(tsEvent *pEv, teEvent eEvent, uint32 u32evarg)の修正
*リセットボタンで実行されます。
*vfPrintf(&sSerStream, "\r\n*** ToCoNet PINGPONG SAMPLE %d.%02d-%d ***", VERSION_MAIN, VERSION_SUB, VERSION_VAR);にTEST1**を挿入します。
*vfPrintf(&sSerStream, "\r\n*** コマンド<>dspt ***");を追加します。
(6)static void vHandleSerialInput(void)の修正
*シリアル入力で実行されます。
*vfPrintf(&sSerStream, LB "Fire PING Broadcast Message.");にTEST2**を挿入します。
(7)「プロジェクト」_「クリーン」を選択します。
(8)「プロジェクト」_「全てビルド」を選択します。
(9)C:\TWESDK\Wks_ToCoNet\Samp_PingPong\PingPong\Build\Samp_PingPong_PingPong_JN5164_0_1_4.binがビルドされた実行ファイルです。
デバッグ機能とエラー表示
(1)デバッグ機能はサポートされていないようです。
(2)実行ファイル中にチェックポイントの表示を挿入する以外なさそうです。
(3)Program "g++" not found in PATHやProgram "gcc" not found in PATHといったエラーは無視する必要があるようです。
(3)「C/C++」_「コード解析」を実行すると多くのエラーや警告が表示されるため、「C/C++」_「コード解析」のチェックは全て外したほうが良いです。
**複雑なプログラムの解読・修正は難しそうです。
実行プログラムの書込み
(1)TWE-Lite専用プログラマのダウンロード
http://tocos-wireless.com/jp/tech/misc/LiteProg/index.htmlから以下のプログラムをダウンロードします。
*TWE-Lite プログラマ 0.3.4.1
TWE-Lite プログラマ 0.3.4.1
*「TWE-Programmer_0_3_4_1.zip」を解凍すると「TWE-Programmer.exe」があります。
*「TWE-Programmer.exe」のだぶるクリックで起動します。
(2)無線マイコンTWE-Lite DIP (トワイライト・ディップ)への書込み
*TWE-Lite R(トワイ・ライター)に無線マイコンTWE-Lite DIP (トワイライト・ディップ)をセットしてUSBをパソコンに接続します。
*「TWE-Programmer.exe」を起動します。
*「C:\TWESDK\Wks_ToCoNet\Samp_PingPong\PingPong\Build\Samp_PingPong_PingPong_JN5164_0_1_4.bin」をドロップエリアにドロップすると実行プログラムの書込みが完了します。
(3)ToCoStick(トコスティック)への書込み
*TWE-Lite R(トワイ・ライター)を外し、ToCoStick(トコスティック)をパソコンに接続します。
*「TWE-Programmer.exe」を終了し、再起動します。
*「C:\TWESDK\Wks_ToCoNet\Samp_PingPong\PingPong\Build\Samp_PingPong_PingPong_JN5164_0_1_4.bin」をドロップエリアにドロップすると実行プログラムの書込みが完了します。
ターミナルソフトのダウンロード
(1)http://sourceforge.jp/projects/ttssh2/からターミナルソフトTera Termををダウンロードします。
(2)最新リリース Tera Term 4.83 (日付: 2014-06-01) をダウンロードします。
(3)teraterm-4.83.exeをダウンロードして実行します。
(4)日本語を選択します。
(5)次へボタンを押します。同意して次へ
(6)インストール先を指定して次へ
(7)標準インストールで次へ
(8)日本語を選択して次へ
(9)プログラムグループを指定して次へ
(10)標準設定のままインストールで完了します。
動作確認
(1)TWE-Lite R(トワイ・ライター)に無線マイコンTWE-Lite DIP (トワイライト・ディップ)をセットしてUSBをパソコンに接続します。
(2)ToCoStick(トコスティック)をパソコンに接続します。
(3)「Tera Term」をダブルクリックで起動します。
(4)新しい接続でシリアルCOM9: USB Serial Port(COM9)を選択します。
(5)「設定」_「シリアルポート」を選択します。
(6)ボー・レートを115200に設定します。
(7)「Tera Term」を再度ダブルクリックで起動します。
(8)COM8: USB Serial Port(COM8)を選択します。
(9)ボー・レートを115200に設定します。
(10)COM9のウンドウをアクティブにします。
(11)TWE-Lite R(トワイ・ライター)のリセットボタンを押します。
(12)tキーを押します。
(13)COM8のウンドウをアクティブにします。
(14)tキーを押します。
(15)<キーを押します。
(16)>キーを押します。
(17)dキーを押します。
(18)sキーを押します。
(19)pキーを押します。T
*実行結果画面を以下に示します。
上記の画面の変化から、tキーでパケット通信が行われていることが確認できます。
主要なプログラムルーチン
(1)void cbAppColdStart(bool_t bAfterAhiInit)//初期に実行
(2)void cbToCoNet_vRxEvent(tsRxDataApp *pRx)//パケット受信
(3)static void vHandleSerialInput(void)//シリアル受信
(4)static void vProcessEvCore(tsEvent *pEv, teEvent eEvent, uint32 u32evarg)//リセット時実行
(5)ToCoNet_bMacTxReq(&tsTx);//パケット送信
(6)vfPrintf(&sSerStream, "set power to %d.", u8pow);//シリアル送信
アプリケーション層向け無線受信データ構造体(#include "ToCoNet.h")
typedef struct {
uint32 u32SrcAddr; //!< 送信元アドレス
uint32 u32DstAddr; //!< 送信先アドレス
uint8 u8Lqi; //!< 受信時のリンク品質(電波強度) LQI は Link Quality Indicator の略。
uint8 u8Len; //!< データ長
uint8 u8Cmd; //!< データ種別 (0..7)
uint8 u8Seq; //!< シーケンス番号 (0x00..0xFF)
uint8 *auData; //!< データ[0..u8Len-1]
uint32 u32Tick; //!< 受信時のTickTime
uint8 u8Hops; //!< NWK層での中継回数
uint8 u8RouteXOR;//!< NWK層での中継経路の各アドレスを XOR 計算したもの。中継経路推定を行える
uint8 u8Lqi1St;//!< NWK層での最初のルータが受信したLQI値
bool_t bNwkPkt;//!< NWK層からのパケットなら TRUE
bool_t bSecurePkt;//!< 暗号化されて届いた場合は TRUE
} tsRxDataApp;
typedef struct {
uint32 u32SrcAddr; //!< 送信元アドレス。16bit(ショート)または32bit(ロング)を指定する。(Nwk層では自動的に設定される)
uint32 u32DstAddr; //!< [N] 送信先アドレス。16bit(ショート)または32bit(ロング)を指定する。
uint8 u8Cmd; //!< [N] データ種別 (0..7)。データの簡易識別子。
uint8 u8Seq; //!< [N] シーケンス番号
uint8 u8Len; //!< [N] データ長
uint8 u8CbId; //!< [N] 送信識別ID。送信完了イベントの引数として渡され、送信イベントとの整合を取るために使用する
uint8 auData[MAX_TX_APP_PAYLOAD]; //!< [N] 送信データ
bool_t bAckReq; //!< TRUE Ack付き送信を行う
bool_t bSecurePacket; //!< (未実装) TRUE: AES による暗号化を行う
uint8 u8Retry; //!< MACによるAck付き送信失敗時に、さらに再送する場合(ToCoNet再送)の再送回数
uint16 u16DelayMax; //!< 送信開始までのディレー(最大)[ms]。指定しない場合は 0 にし、指定する場合は Min 以上にすること。
uint16 u16DelayMin; //!< 送信開始までのディレー(最小)[ms]
uint16 u16RetryDur; //!< ToCoNet再送再送間隔[ms]。
uint32 u32Tick; //!< 内部で使用される。
void* pvOpt;//!< モジュール内部で利用
} tsTxDataApp;
結果の検討
(1)ToCoNet(トコネット)のソフトウエア開発環境(SDK)は独特の環境であり、これになれるのは大変そうである。
(2)エラーや警告が多数でるが、実行ファイルは問題無くビルドできる。
(3)デバッグ機能がサポートされていないため、デバッグが難しい。
(4)複雑なプログラムは容易には理解できないため、まずは比較的簡単なPingPongで動作確認を行った。
(5)PingPongは正常に動作し、簡単な修正が可能であることが確認できた。
追記
(1)TWESDK_201408.zipのPingPongプロジェクトはビルドが正常におこなえませんでした。
(2)TWESDK_201404-upd.zipのPingPongプロジェクトを使用しました。
8章:PingPong専用Windowsプログラムとその活用 に行く。
トップページ に戻る。