libmapleで仮想COM の変更点


[[2011-08]]


---------
*libmapleを使って仮想COMベースのARMモニターを作る。 [#d86b615c]

-とりあえず出来ました。

ダウンロード:
-CQ-STARM , STM8S-Discovery , STBee , STBeeMini の4基板に対応しています。

-''こちらから[[ダウンロード:http://psp.dip.jp/web/upload/STM/cdctool.zip]]してください。''

~
移植の顛末:
-簡単に移植できるはずが・・・libmapleもCDC-仮想serialポートの実装は手抜きになっていて、それを知らずにハマりました。
--ホストPCから1文字づつ送る ---> デバイス側も1文字単位で受け取る。=問題なし。
--ホストPCから40バイトくらいまとめて送る--->デバイス側でまず1バイトのヘッダーを受信して、OKなら残り39バイトを受信する=バグる。

--バグ状況は、2度目のSerialUSB.read()では送信されたデータの2バイト目から40バイト目までを受け取るはずなのに、1バイト目から39バイト目までのデータを受け取って(コピーして)しまう。40バイト目は永遠に受け取れない。

-この手のソフトは、デバイス側とホスト側の両方を実装しないと試せないので、なかなかモチベーションが上がりません。

-CDC仮想comはバルク転送なのでデータをまとめて送るぶんには速いのですが、いわゆる普通のserialポートのようにPCから1バイト送ってはデバイスの応答を待つような書き方をすると、結局のところUSBの1フレーム=1mS掛かる問題が発生して、1秒間にせいぜい500回くらいしかハンドシェークできない結果になるようです。(下手をするとリアルなserialポートより遅くなります)
~
~
*積み残し問題 [#r48245df]

未解決です。
-STM32の仮想COMポートの検索方法---現在は、一番後ろのCOM:を決めうち。
--後ろから、調べていく方法に変更したい。
-STM32の仮想COMポートの特定方法
--特別なボーレート(0xffffとか)で初期化された場合にのみ特定しハンドシェークするようにする。
-pinMode/digitalRead/digitalWrite相当のコマンドの追加
-レート指定、トリガー指定可能なデジタル/アナログinputコマンド
-それに対応するホスト側ウィンドウ

~
今回のフォーカスはAVR/PICライターではなく、シグナルサンプラーになる予定です。
-NXP系チップに移植する予定は当分ありません。手間がかかりすぎます。
-入手性に関しても、LPC17xx系基板はXpresso以外にあまり手に入らないので除外です。




~
~


[[続きを読む>2011-09]]


[[仮想COMベースのブートローダー>libmapleでブートローダー]] 製作編


~

~
~
~
~
以下、まだ書きかけです。

~
***予定稿 [#dd3d377c]

-libmapleを使って[[仮想COMベースのブートローダー>libmapleでブートローダー]]を作る。

-libmapleを使って仮想COMベースのAVR/PIC/PIC24/OpenOCDライターを作る。



仮想COMを使用する理由
-HIDよりも転送速度が速い。(はず)
-Linux上ではHIDよりもcom portのほうが扱いやすい。

-Windows上でも、STM32用の仮想COMドライバーを入れるだけなので、それほど心理的抵抗はないと思われる。

-LPC1114(AMRY基板)に簡単に移植できる。ホスト側は共通になるかも。