Open Design Computer Project

オリジナルCPUから作る本格的自作コンピューター

ユーザ用ツール

サイト用ツール


hardware:sdi

SDI : MIST32 Standard Debug Interface

MIST32ベースのプロセッサのデバッガを定義します。JTAG(JTAG-TAP)と互換の仕様を採用します。

デバッグケーブル

  • JTAG Debugger(RST no support)
    • TDI
    • TDO
    • TMS
    • TCK

Instruction Register

すべてのレジスタは8bitとします。

  • IR_BYPASS
  • IR_ADDR_H
  • IR_ADDR_L

Data Register

状態遷移とコマンド

<>はコマンド名です。全てのコマンドはキャラクタ2文字で構成されます。図には記載していませんが、誤ったコマンドを送信するといかなるステートにおいてもErrorステートになり、Idleに自動的に戻ります。

ステート

Idle

この状態ではデバッガはプロセッサに対していかなる操作もしません。通常通りプログラムを実行し続けます。

Active

ACコマンド以外の全てのデバッグコマンドはActiveステートで受け付けます。

この状態ではプロセッサコアのパイプラインはは一部のハードウェアを除いて停止します。この状態においても、命フェッチ中の命令パイプ、Load/Store中のデータパイプ、これらが結合されるメモリパイプ(MMU, DPS, PIC, GCI, GCIデバイスを含む)は引き続き動作を続けます。この状態は一部のステートを除いて(Step Execute/Brake Executeは実行を行う)Active状態よりも下のステートに引き継がれます。

NOP

何も実行しません。ただし、レスポンスを返すので、デバッガが正しいことを確認する際に使用します。その後自動的にActiveに戻ります。

Register Read

指定されたレジスタを読み込みます。その後自動的にActiveに戻ります。

Register Write

指定されたレジスタの内容を変更します。その後自動的にActiveに戻ります。

Step Execute

1命令だけ実行します。その後自動的にActiveに戻ります。

Brake Execute

Set Brake Pointにて設定された値と、PCRを比較して一致するまで実行し続けます。その後自動的にActiveに戻ります。

Set Brake Point

Brake Executeで使用する値をセットします。その後自動的にActiveに戻ります。

Error

定義されないコマンドを送ると自動的にエラーステートに飛び、その後自動的にIdle状態に戻ります。

コマンド

ID

I(0x49)

AC

A(0x41)

NPP

N(0x4E)

RR

R(0x52)<$r>

  • $r : [1Byte]レジスタを指定します。

RW

W(0x57)<$r><$d>

  • $r : [1Byte]レジスタを指定します。
  • $d : [4Byte]書き込みたいデータ。

SE

S(0x53)

BE

B(0x42)

SB

P(0x50)<$d>

  • $d : [4Byte]書き込みたいデータ(つまりブレイクポイントのアドレス)

レジスタアドレス

0r0
1r1
2r2
3r3
4r4
5r5
6r6
7r7
8r8
9r9
10r10
11r11
12r12
13r13
14r14
15r15
16r16
17r17
18r18
19r19
20r20
21r21
22r22
23r23
24r24
25r25
26r26
27r27
28r28
29r29
30r30
31r31
32~63Reserved予約領域を指定した場合Error Stateへ
64CPUIDR
65TIDR
66FLAGR
67PCR書き込み禁止。した場合Error Stateへ
68SPR
69PSR書き込み禁止。した場合Error Stateへ
70IOSAR書き込み禁止。した場合Error Stateへ
71PDTR書き込み禁止。した場合Error Stateへ
72KPDTR書き込み禁止。した場合Error Stateへ
73TISR書き込み禁止。した場合Error Stateへ
74IDTR書き込み禁止。した場合Error Stateへ
75FI0R
76FI1R
77FRCLR書き込み禁止。した場合Error Stateへ
78FRCHR書き込み禁止。した場合Error Stateへ
79~127Reserved予約領域を指定した場合Error Stateへ
128PTIDR
129PFLAGR
130PPCR
131PPSR
132PPDTR

リターンデータとレスポンス

全てのリターンデータとレスポンスは、そのコマンドに問題がない場合$で囲まれます。問題があった場合には自動的にError Stateに状態遷移し、#NC#をレスポンスとして返してIdle状態に戻ります。

AR

$r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21,r22,r23,r24,r25,r26,r27,r28,r29,r30,r31,cpuidr,tidr,flagr,pcr,spr,psr,iosar,pdtr,kpdtr,tisr,idtr,fi0r,fi1r,frclr,frchr,ptidr,pflagr,ppcr,ppsr,ppdtr$

MEMO

R : Register Read

W : Register Write

P : Break Point Set

S : Stop Execute

I : Step Execute

G : Run Execute

hardware/sdi.txt · 最終更新: 2014/07/11 06:27 by takahiro