« 誕生日過ぎてました | トップページ | 職場でニコニコカレンダー (^-^) »

2007年10月 5日 (金)

JTAG-ICEを使ったSH7149のROMデバッグ

久しぶりにblogを書きます。blogを書かないと何もしていないかのように見えますが、東海大の先生と組んで、つくばチャレンジに向けた準備を進めています。で、今日は判ったことを忘れないようにメモする意味で書き込んでおきます。

今、CPUボードにはアルファプロジェクトのAP-SH2F-9A (SH7149) を使用して、同社のJTAG-ICE (XrossFilder)を使用してデバッグを行っています。RAM上でデバッグをするときには気にしていなかったのですが、最近のSH2にはKey Codeなるものがあって、ROMデバッグをしようと思ったらこいつが邪魔してくれました。JTAG-ICEでCPUにリンクアップするとき、Key Codeが一致していないとフラッシュメモリが全消去される仕様なのだそうです。この話は、http://www.apnet.co.jp/support/an/AN801.pdf に説明があります。ですが、Key Codeに何を設定したらいいかまでは書いていません。これじゃROMデバッグができません。

ネット上でいろいろ探してみたところ、解決策は、http://www.tokudenkairo.co.jp/jtag/cq7144a.htmlの「ソフトウェアの準備」の項にありました。これでようやく話が見えてきました。SH7146F/SH7149Fの「キーコードアドレス」は0x00000040 と言う意味がやっとわかりました。SH7149(SH7146シリーズ)のハードウェアマニュアルを見ると例外処理ベクタテーブルの表にはH'00000034~H'0000007Fのアドレスが(システム予約)になっています。ここのH'00000040から4Byteがキーコード用の領域に使われているという意味だったようです。H'00000040 のベクタ番号は16番なので、ここに書き込まれた値とJTAG-ICEで設定するKey Codeの値が一致していればよいわけです。

そこで早速、http://www.tokudenkairo.co.jp/jtag/cq7144a.htmlに倣って、ソースコード中のハードウェアベクタのテーブルの16番のところに適当な値を書いてからビルド、ROMに転送して、JTAG-ICEにも同じ値を設定してリンクアップさせてみたところ、RAMデバッグ時と同様にデバッガが動作してくれました。試しにデバッガで00000040番地を覗いてみたところ、確かに先ほど設定した値が入っていました。これで一応の解決を見たと考えています。

今回の問題はCPUボードのRAM上でデバッガを動かしながら組んだプログラムに対してテストを行うためにROM化しようとして発覚しました。これで失敗したテストケースに対してデバッグが出来るようになったわけで。テストケースを作るのはこれからです。道のりはまだまだ遠い。

« 誕生日過ぎてました | トップページ | 職場でニコニコカレンダー (^-^) »

コメント

織田さん、こんにちは。
着々とバージョンアップされているようですね。

ご無沙汰しています。

 うちの環境はこんな感じになりました。
 http://www.teamknox.com/mt/archives/2007/10/ft2232_and_ezse.html

以上、よろしくお願いいたします。

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/167990/16664123

この記事へのトラックバック一覧です: JTAG-ICEを使ったSH7149のROMデバッグ:

« 誕生日過ぎてました | トップページ | 職場でニコニコカレンダー (^-^) »

最近の写真