いきなり細かいところからですいません。本来はパケットだの、フレームだのSETUPがどうのと、始めるのでしょうが・・・
データトレースを見てデバッグ中の参照頻度の多い順です。エンディアンが(どっちか忘れましたが)通常と逆なので注意が必要です
データトレースを見てデバッグ中の参照頻度の多い順です。エンディアンが(どっちか忘れましたが)通常と逆なので注意が必要です
![](https://image01.seesaawiki.jp/h/8/h8h8h8/8c58a4d96f70481b.jpg)
フィールド | 説 明 |
---|---|
dCBWSignature | CBWのEyeキャッチ ASCIIコードで"USBC"、 なかなかお茶目ですよね |
dCBWTag | コマンドブロックタグ。CBWとCSWを関連付けるための任意の値らしい 並行動作出来るってことですよね |
dCBWDataTransferLength | データトランスポートの推定データ長(バイト数)。 ここが0 の場合データトランスポートは存在しません |
bmCBWFlags | ビット7 が0 の場合、データトランスポートはバルクアウト転送で行われ、 1 の場合、バルクイン転送で行われます。ビット6〜0 は0 固定 |
bCBWLUN | 論理ユニット番号(Logical Unit Number) |
bCBWCBLength | 次のCBWCB フィールドの有効バイト数 |
CBWCB | 実行されるコマンドブロック(Read、Writeなど)を格納するフィールド SCSIコマンドに準拠しているみたい |
ふぅーっ。。。
CBWだけで疲れました。表組みではなくExcellで説明作れば楽なのですが、見栄えが・・
本当はUSBの仕様書を見るべきなのでしょうが、ポチは日本語しか分かりません。ターゲットとして書かれていますが、この辺のルネサスのドキュメントは役に立ちます。ポチへの影響大きく(他に適当なドキュメントが見当たらないので)、UFIだと思い込んでいる大きな要因です
![](https://image02.seesaawiki.jp/h/8/h8h8h8/60baf2c390a9d790.jpg)
フィールド | 説 明 |
---|---|
dCSWSignature | CSWのEyeキャッチ ASCIIコードで"USBS" |
dCSWTag | CBWとCSWを結びつけるためのID。関連するCBWのdCBWTagが返却されると想定されるが、 今の処使っていない(とりあえず今は0固定) |
dCSWDataResidue | CBW のdCBWDataTransferLength 値と実際にファンクションが処理したデータ量の相違を報告します |
bCSWStatus | コマンドの実行結果。コマンドが正常に完了した場合、ターゲットは0x00を返却します。 ゼロ以外の値は次の通りとし、コマンド実行時の不具合を示します コマンドフェイルは0x01、フェーズエラーは0x02。 |
信用しないでください。そもそも見ているドキュメントを間違っているような・・・。Bootabilityが怪しいです。WRITE(10)もない
3.1 INQUIRY Command
3.2 READ(10) Command
3.3 REQUEST SENSE Command
Additional Sense Code
3.4 TEST UNIT READY Command
4.1 MODE SENSE(10) Command
4.2 READ CAPACITY
(1)CBW+READコマンド形式
![](https://image02.seesaawiki.jp/h/8/h8h8h8/f5f7c5550dd39d46.jpg)
フィールド | 説 明 |
---|---|
Logical Block Address | The logical block at which the read operation begins. と、言っても何のことか??、セクタの通し番号です |
Transfer Length | The number of contiguous logical blocks of data that are transferred. 転送セクタ数です。通常、(Transfer Length)×512Bytesが転送されます 尚、dCBWDataTransferLengthにはバイト数を指定します |
上記は両方ともエンディアンには注意が必要です
No | 転送 | データ |
---|---|---|
1 | BULK OUT | CBW+READコマンド |
2 | BULK IN | (実際の)READデータ |
3 | BULK IN | CSW |
と、いう感じです。簡単ですよね、動けば・・。
しかし、SCSI準拠か何か知りませんがワード境界を無視したり、予備領域が多かったり、よく分かりません
なお、READにはREAD(10)以外にも沢山の種類があります。DISK容量の増加に対応したのだと思います
英語が分からないので、よく分かりませんが、権威のありそうなページです
SCSI Common Codes & Values
手近かにはここでも
Key Code Qualifier Wikipedia
センスの意味が分かれば、バグの原因が分かる訳ではないですが、分からないと気になります
![](https://image02.seesaawiki.jp/h/8/h8h8h8/ea78f621a1832944.jpg)
Operation Codeしかない単純なコマンドですが、ハマりました。「アキバオー」で買ったUSBメモリは電源ON直後だけ、TEST UNIT READYに対してCSWでエラーを返します。REQUEST SENSEでSENSEを調べると28hで"Not Ready to Ready"(文字通りの解釈で良いのか?)でした。単純にTEST UNIT READYを繰り返しましたが何度送っても、CSWはエラーのままです。(SH-2AをRESETして(電源OFFしないで)実行し直すと、正常に立ち上がります)
途方に暮れていたのですが、ATTACHEDから処理をし直すと立ち上がりました
フ−ッ!
本来のリトライの仕方は分かりません
最新コメント
2017-08-16
2017-08-15
2017-03-05
2010-11-25
2010-11-17