気持ちでプローブをつなぎ、気持ちでUARTのデコードまで試してみました。気持ちの結果(うまく動作していない)サンプリングレートとサンプル数の設定をいくつか変更してみたところ、いずれもきちんと動作していそうでした(RLE付きの圧縮保存系は未確認)。動作していますが、ここでのデコード結果はデタラメです。バイナリエディタで書き込み対象のArduinoスケッチを開いてバイト列の一致を探したところ、一切見つかりませんでした。rate)が合っていないのではないかと考えました。rateを割と好きに変更できます。IDEの書き込みログを詳細表示へ切り替えて確認したところ、案の定57600指定になっていました。57600そういうわけで1MHz-16Mサンプル取得を指定してデコーダのオプションを次のように設定しました。formatをasciiからhexへ変更しただけで他はデフォルト値のままです。デコード設定の変更はダイアログを閉じるとすぐに反映されるので、データの再取得は必要ありません。rate指定に対して取得済みデータのレートが低すぎる場合には警告が表示されます。57600では200kHzまで怒られて500kHzから通りました。Modeを利用しました。さきのレート計算によると115,200bpsの通信も500kHzで収まるので、よくあるシリアル通信であれば64Mサンプルめいっぱい使って131秒間キャプチャできる計算です。Modeでは(16ch時10MHz、8ch時25MHzの制約はあるものの)データ量制限がある程度緩和されます。ディスク容量の限りキャプチャできるかというとそういうわけではなく、DSView側の制限で512Mサンプルまでしか指定できません。512Mサンプル取得を指定してキャプチャを実行するとメモリ確保エラーが発生します。32bitアプリ・・・。このあたりは必要と思う人がいじって拡張すればよいという感じでしょうか。rateを指定してデコードしたところ図11のとおり、キャプチャした信号をデコードした結果と書き込み対象ファームウェアのバイナリの一部が一致することを確認できました。rateをなんとか調べて合わせるのが重要という教訓を得ました。I2Cのように常時クロック信号が出ているものなら高レートでクロック信号をキャプチャするだけで実レートの推測が可能なはずですが、UARTだと微妙に面倒ですね。bitrateというデコーダがDSView内にあるのを見つけたので、今度使ってみます)。bitを見つけた時点で信号サイクルの逆数から通信レートを察するのが基礎技能なんでしょうか。その後にDTR信号線の立ち上がり/立ち下がりにトリガーを仕込んでのデータキャプチャも試してみました。IDEの場合、画面上の書き込みボタンを叩くと再度コンパイルから走るためキャプチャタイミングを図りづらいのですが、トリガーがあると無駄に巨大データをキャプチャせずに済みますね。DSViewのUI上で信号線にトリガーオプションを付けるだけで、期待通り必要な部分のサンプリングをおこなえました。今後DSView(というか元のPulseView+プラグイン群)ではSPI通信のデコーダ(図12)など、プロトコル解析機能が割と充実しているので開発の中で順次試していこうと思っています。Proを購入し、使ってみました。製品は2週間ほどで届き、未署名ドライバの壁はあるもののトリガー込みできちんと動作しました。Miniに対するUSBシリアル書き込み(UART)をデコードしてみました。rateをなんとか調べて合わせるのが重要です。想定通りに動作したので満足しました。これから使っていけそうです。MacBookを4/10に注文、4/14出荷、届いたのは4/17だったので正確にはもうすぐ2ヶ月ですが。Dockerで簡単にGPU対応のTensorFlow入りコンテナを作る方法こんにちは。作品群を読んでいたら連休が終わりそうです。重くなるので読み込まないようにすればOK。資料を補足するシリーズです。途中でやったことや、参考情報を書いていきます。