SIMPLE TERMは特に高機能という訳でも無くテキトーなリアルターミナルですが、いつもGCC Developer Liteのインストーラと一緒に同梱している都合から、面倒くさがりな作者の都合に合わせて操作を横着するための機能がちまちまと追加され続けています。
今回はフロー制御のお話です。
H8シリーズとのシリアル通信による簡易的なコミュニケーション用として作られたSIMPLE TERMですが、当初からRS232Cを前提とした3線シリアル通信を行う事を念頭に置いていた事もあり、ハードフロー制御は行わないものとしていました。特にDTR/DSRに関してはその当時FLASH WRITERがケーブルの接続チェックに使っていたこともあり、SIMPLE TERMには設定すら無く今でも常時無効にしています。
時代は変遷し、マイコンとPCはUSBで直結して仮想COMポートを介して通信するのが主になってきました。当然マイコンには自分のUSBを制御するコードが入って入るわけでして、弊社でもどこぞやのライブラリを使って実現させています。
ところが、PCがその仮想COMポートを開いている否かをマイコン側で判断しないといけないシチュエーションがありまして、特にマイコン側から一方的に送信する場合は無くてはならない条件だったりします。
ホストがWindowsであるのが前提ですが、今のところSAM3やSAM7Sシリーズ用のUSB CDCエミュレーションライブラリではポートのオープン/クローズを簡易的に判断させていますが、いかんせんOS限定というのはいただけない。
ということで、次期GCC Developer Liteにおいてこのあたりを大幅に仕様変更します。
- SIMPLE TERMも他の一般的なターミナルソフトなどと同様に、ポートのオープン/クローズに連動してDTRを自前で制御。
- マイコン向けのUSB CDCエミュレーションライブラリ(SAM7S,SAM3S,STM32F3シリーズのみ)に含まれるWindows限定の判定ルーチンを止め、DTRの状態によってオープン/クローズを判定。
この仕様変更に伴う功罪は以下の通りです。
- 旧バージョンのSIMPLE TERMで新しいUSB CDCエミュレーションライブラリを使用したターゲットの仮想COMポートを開くと、見かけ上ターゲットからの応答が得られない。
- 新しいSIMPLE TERMはUSB CDCエミュレーションライブラリの新旧にかかわらず通信が行える。
- 新しいライブラリを使用したターゲットはLinuxやmacOSでもOK。
- つまり、ツールが新しくてターゲットが古い場合はOKで、ツールが古くてターゲットが新しいのがNG。
今後のGCC Developer Liteのリリースの際はこの点に留意ください。
技術