PARTNER Debugger Tips
2010年10月19日
KZM-A9-DualボードにU-bootとLinuxカーネルを移植中です。
で、さっそくやらかしました。
DDRの初期化をスキップしているU-bootのバイナリを間違えてブートのNORフラッシュに焼いてしまいました。これをやってしまうとJTAG-ICEも起動できなくなってしまいます。昔のFull ICEと違ってJTAG-ICEは起動時に一度リセットを解除するので、その瞬間にCPUが暴走すると接続できなくなってしまいます。困った! どうしよう ...
2009年12月15日
この間、NOR flash memory にちゃんとデータが書き込めているかを簡単にチェックしようと思ったとき、PARTNER の機能が便利だったので紹介します。
0xa0000000 から 64 MB の NOR flash memory があると仮定します。
また、0x00000000 から十分な DRAM があると仮定します。(今回はターゲットのメモリを直接利用します。)
PARTNER は NOR flash を通常のメモリと同様に読み書きすることができます。(NAND flash は未サポートです。)
l (load) コマンドや rd (file read) で、適当なデータ (c:\nor_flash.bin) を先頭から 0x1000 バイト (セクタサイズ) 書き込んだとします。
- データファイルの内容をメモリに読み込む
> rd c:\nor_flash.bin,0
- 0xa0000000-0xa0000fff 番地までの内容を、0 番地からの内容と比較
> c a0000000,a0000fff,0
大容量のダンプを比較する場合には、以下のようにファイルに書き出して (RAM Disk などの高速なディスク領域が望ましいです) 外部ツールを使うべきですが、ちょっとしたデバイスの確認などには、PARTNER のこれらのコマンドを使用するのが便利だと思います。
- ファイルにメモリの内容をダンプ
> wr c:\nor_flash.data,a0000000,a0000fff
0xa0000000 から 64 MB の NOR flash memory があると仮定します。
また、0x00000000 から十分な DRAM があると仮定します。(今回はターゲットのメモリを直接利用します。)
PARTNER は NOR flash を通常のメモリと同様に読み書きすることができます。(NAND flash は未サポートです。)
l (load) コマンドや rd (file read) で、適当なデータ (c:\nor_flash.bin) を先頭から 0x1000 バイト (セクタサイズ) 書き込んだとします。
- データファイルの内容をメモリに読み込む
> rd c:\nor_flash.bin,0
- 0xa0000000-0xa0000fff 番地までの内容を、0 番地からの内容と比較
> c a0000000,a0000fff,0
大容量のダンプを比較する場合には、以下のようにファイルに書き出して (RAM Disk などの高速なディスク領域が望ましいです) 外部ツールを使うべきですが、ちょっとしたデバイスの確認などには、PARTNER のこれらのコマンドを使用するのが便利だと思います。
- ファイルにメモリの内容をダンプ
> wr c:\nor_flash.data,a0000000,a0000fff
2009年10月22日
※ JTAG を熟知した上級者向けの Tips です。
※ 社内で裏ワザ的に使われている Tips なので、ブログでこっそり紹介。正式にサポートは行いません。
PARTNER-Jet の JTAG クロック周波数は、cfg ファイルの記述 (J_FRQ。通常は AUTO か ADPT が指定されています)、または zjc コマンドによって変更することが可能です。
マニュアルには、JTAG クロックの zjc コマンドによる動的な変更は危険なのでひかえるようにと注意書きが書いてますが、設定を熟知した上で使うならば便利です。
周辺装置のノイズが多いなどの状況で、安定して PARTNER-Jet を動かしたい場合には、JTAG クロックの値を若干下げてみることが有効なのだそうです。
また、大きなデータを転送する場合などには、ターゲットがサポートする範囲で、若干大きめの値に変更することで、(PARTNER-Jet はもともと高速なデータ転送がウリの 1 つなのですが) より高速なデータ転送が可能になるそうです。(ただし、あまりクロックを上げすぎると不安定になるので要注意です。)
このように、JTAG クロックを調整することにより、状況に応じて安定性と高速性のバランスを調節できるそうです。私はまだ初心者なので試したことは無いのですが、社内では普通に使われている Tips のようです。先輩にこの Tips を教わるまで、JTAG クロックをいじるなんて全く思いつきませんでした。面白かったので紹介しました。
※ 社内で裏ワザ的に使われている Tips なので、ブログでこっそり紹介。正式にサポートは行いません。
PARTNER-Jet の JTAG クロック周波数は、cfg ファイルの記述 (J_FRQ。通常は AUTO か ADPT が指定されています)、または zjc コマンドによって変更することが可能です。
マニュアルには、JTAG クロックの zjc コマンドによる動的な変更は危険なのでひかえるようにと注意書きが書いてますが、設定を熟知した上で使うならば便利です。
周辺装置のノイズが多いなどの状況で、安定して PARTNER-Jet を動かしたい場合には、JTAG クロックの値を若干下げてみることが有効なのだそうです。
また、大きなデータを転送する場合などには、ターゲットがサポートする範囲で、若干大きめの値に変更することで、(PARTNER-Jet はもともと高速なデータ転送がウリの 1 つなのですが) より高速なデータ転送が可能になるそうです。(ただし、あまりクロックを上げすぎると不安定になるので要注意です。)
このように、JTAG クロックを調整することにより、状況に応じて安定性と高速性のバランスを調節できるそうです。私はまだ初心者なので試したことは無いのですが、社内では普通に使われている Tips のようです。先輩にこの Tips を教わるまで、JTAG クロックをいじるなんて全く思いつきませんでした。面白かったので紹介しました。