前回からの続きです。
このテーマを最初からご覧になる場合はこちらからどうぞ。
デバッグ・シリアル出力の問題
さて、TOPPERS/ASPのMSP430版の説明は全て書き終えたつもりですが、どうしても納得行かない点が一つだけ残っています。
気が付いている方は慧眼でいらっしゃる。
サンプルプログラムの実行中にTeraTermへ出力されるメッセージの出方がどうも気に入らないのです。
他のターゲットでは「task1 is running...」が一行ずつスムーズに出力されるのに対し、今回の評価ボード「MSP-EXP430F5529LP」にTOPPERSを載せた場合に、これが何故か二行ずつ出力されるのです。
ダラダラっ、ダラダラっと…。
気持ち悪いです。
最初はOSに実装したシリアル通信ドライバのバグかと思って修正を試みましたが、特に悪い点は見つからず、ドライバの問題ではないと結論付けました。
その証拠に…。
サンプルプログラムが動作している最中にプログラムを停止させます。
すると、ターゲットはリセットに入り、フラッシュROMに書き込まれたプログラム、すなわちサンプルプログラムをまた最初から実行します。
その際の出力メッセージはちゃんと「task1 is running...」が一行ずつスムーズに出力されます。
何故でしょう…?
今回の評価ボード「MSP-EXP430F5529LP」はデバッガを積んでいます。
このデバッガは「eZ-FET lite」といって、その正体はデバッガの機能をプログラミングされた「MSP430F5528」という型番の、これまたMSP430マイコンです。
ナナメに付いている石がそれです。
(メインCPUと1文字違いの型番っていうのも、なんだかなぁ…。)
で、この「eZ-FET lite」のMSP430マイコン、デバッガのお仕事の他にUSB/シリアル通信変換機能をも司っているようです。
もしかして、出力メッセージがスムーズじゃないのは、デバッガの機能とUSB/シリアル通信変換を同時に行っているため、処理が一杯一杯になっているのでは?
であるならば、少なくともUSB/シリアル通信変換は「eZ-FET lite」にはやらせず、別の手段で代用してみよう、と思いました。
幸いにして、以下のように「eZ-FET lite」の脇にメインCPUからのシリアル信号(RXDとTXD)が出ています。
この部分のジャンパーピンを外して「eZ-FET lite」をUSB/シリアル通信変換から開放してあげましょう。
そして、以下のような市販のUSB/シリアル通信変換ケーブルを用意します。
このケーブルをジャンパーピンを外した「MSP-EXP430F5529LP」のシリアル信号(RXDとTXD)と接続します。
GNDは適当な所から引っ張ってきましょう。
シリアルの信号を横から掻っさらう感じですね。
こんな感じ。
さて、市販のUSB/シリアル通信変換ケーブルをパソコンに接続し、TeraTermの接続ポートをこのケーブルのものに変更して、サンプルプログラムを実行してみると…。
スムーズに「task1 is running...」が一行ずつ出力されるじゃありませんか!
推測通り、評価ボード「MSP-EXP430F5529LP」に内蔵されている「eZ-FET lite」は、非力なマイコンで処理を行っているため、負荷がかかるとシリアル出力の処理落ちが発生することが分かりました。
まあ、タダで付いてくるデバッガだから文句は言えませんし、ただデバッグメッセージを表示したいだけなら何もスムーズでなくて構いません。
何より肝心のデバッグ機能に問題が出るわけではないので良しとしましょうか!
…バグだと思って、ちょっと焦ったじゃないか!
<終わり>
0 件のコメント:
コメントを投稿