FeliCa Liteのユーザーズマニュアルを読んでいて、理解が難しかったのがD_IDブロック。
何度読んでもわからなかったが、自分なりの解釈を行った。
ユーザーズマニュアルは、こう書いてあると思っている。
- [15-8]は値を変更することができない
- [7-0]は値を変更することができない
- D_IDに書き込みを行うと、IDdとPMmの値は変更できないが、IDmの値を変更できる
- D_IDの3~4バイト目はR/W
また、IDmを変更しないための注意点として、以下がある。
- システムブロックを書き換え禁止にする前にD_IDに書き込まないこと
- 発行したら、システムブロックを書き換え禁止にすること
私がわからなかったのは、書き込んでいいのか悪いのか、書き込んでほしくないのかどうか、書き込んだら一体どうなるのか。そのあたりだ。
で、こういう解釈をした。
- D_IDの3~4バイト目はR/W。ほかはRO。
- よって、[15-8]のPMmは書き込みもできないし、書き込んでも初期値と同じ値が読める
- [7-0]のうち、[4-3]は書き込みができる
- [4-3]に書き込んでも、IDdが変更されるわけではなく、IDmが変更になる。
- [4-3]に書き込んでも、読み込んだ値は初期値と同じ。
- システムブロックを書き換え禁止にしないとD_IDへ書き込めてしまうため、IDmが(3,4バイト目だけだが)変更できてしまう。よって、発行時には書き換え禁止にすること。
使えなくなると怖いんで、実機で確かめてないけどね。
特に、[4-3]を書き込んだ後に読み込んだらどうなるのかがわからん。
ドキュメントの「値を変更することができない」は、読み込み値は常に同じということを表していると解釈した。つまり、書き込みと読み込みが非対称というわけだ。
IDブロックには「IDdを書き込む」とあるから、D_IDへの読み書きとは関係なくIDdを書けばよい。
IDdはD_IDを読み込めばいいから、IDmを変更したからといって心配はしなくていいのだろう。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。