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基板)に簡単に移植できる。ホスト側は共通になるかも。