Open tnishinaga opened 11 months ago
リセットの挙動を実際に見てみたのですが、pioの方もbitbangの方も想定される動作と異なる部分があるようです。 どちらも修正していきたいですね。
リセットの挙動を実際に見てみたのですが、pioの方もbitbangの方も想定される動作と異なる部分があるようです。
確認ありがとうございます。 どのあたりが違っていそうでしたか?
まず、テスト環境として pyOCD を活用していることを述べておきます。
pyOCD に commander モードというのがあり、簡易なコマンド処理が出来るようになっています。
コマンドには以下のようなものがあります。
set nreset 1
RSTピンをHighにする
set nreset 0
RSTピンをLowにする
show nreset
RSTピンの状態を表示する
PIOの場合
プローブの起動後・リセット後 ⇒ (一瞬だけLow のちHigh のち) Hi-Z
set nreset 1
⇒ (一瞬だけLow のち) High
set nreset 0
⇒ Low
show nreset
⇒ Low
bitbangの場合
プローブの起動後・リセット後 ⇒ (一瞬だけLow のち) High
set nreset 1
⇒ 一瞬だけHi-Z のちHigh
set nreset 0
⇒ 一瞬だけLow のちHigh
show nreset
⇒ 一瞬だけHi-Z のちHigh
というような挙動です。(細かく誤りがあるかもしれません)
リセット時の挙動 および PIOの場合 の set nreset 1
の項目を修正しました。 (2023/12/02)
ありがとうございます。
bitbangの方はdelayをまともに作れてないせいもあるとおもうのですが、なんか変なことになっていますね。
PIOの方の挙動をまず整えたいのですが、こちらはARMの作った既存のCMSIS-DAP実装と比べて挙動の差異はありましたか?
何が正解かはじっくり調べるのがよいと思いますが、想定される挙動はこういう感じだと思っています。
案1
プローブの起動後・リセット後 ⇒ Hi-Z
connect ⇒ High
set nreset 1
⇒ High
set nreset 0
⇒ Low
show nreset
⇒ そのまま
disconnect ⇒ Hi-Z
案2
プローブの起動後・リセット後 ⇒ Hi-Z
connect ⇒ そのまま
set nreset 1
⇒ Hi-Z
set nreset 0
⇒ Low
show nreset
⇒ そのまま
disconnect ⇒ そのまま
DAP Linkの挙動にあわせるなら、bitbang側もpinのdirectionを変更しないように修正が必要です。 pio版ができた今bitbang版開発の優先度は下がったと考えているので、希望があれば治すくらいの気持ちでいます。