酔漢電子工作手帳

2007-03-04

ADuC7026周りがアップデートされている

| 11:35 | ADuC7026周りがアップデートされている - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - ADuC7026周りがアップデートされている - 酔漢電子工作手帳

今朝、PizzaFactoryのアップデートをかけたところ、数点新しくなっていました。非公式にアナウンスされていた作業を含んでいるようです。

ADuC7026の設定が大幅に簡素化されたのがうれしい点です。

OpenOCDのスクリプトがアップデートされている

スクリプト改造が不要になりデフォルトのADuC702x用を使えばよくなりました。とっても簡単です。図はExternal Tool設定のもの。デフォルトで使っています。

f:id:suikan:20070304112847p:image

.gdbinitの読み込み時にtarget設定が不要になっている

これまでARMのデバッグを行う際、.gdbinitの先頭でtarget remote localhost:3333の宣言が必要でした。その宣言が不要になっています。

現在使っているgdbスクリプトはこれです

# Can't use SW breakpoint for ROM
monitor arm7_9 force_hw_bkpts enable

# MMR definition
set $pRSTSTA=0x4
set $pRSTCLR=0x4

# resetting ARM core. See page 47 of datasheet
set {char}$pRSTSTA=4
set {char}$pRSTCLR=4

FRK-ADuCはシステム・リセットを配線していないため、monitor resetコマンドは使えません。

フラッシュが書き込まれていない事がある

| 10:21 | フラッシュが書き込まれていない事がある - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - フラッシュが書き込まれていない事がある - 酔漢電子工作手帳

安定して動くツールが手に入ったので、次第に他の部分の問題がはっきり見えてきました*1

TOPPERS/JSPの標準アプリケーションsample1をきちんとトレース、ブレークできるようになったので、sample1を改良してみました。といっても、コードを削りまくって小さなプログラムにするだけです。ところが動いたり動かなかったり。その後フリー・スタンディングに進んだのはこのプログラムの動作をちゃんと見たかったからです。

念願かなって見えるようになりました。で、見てみると、とても不安定です。pcを0に設定してリスタートをかけてもうまく動作しません。そこでARMWSDベリファイをかけると0番地にエラーがあります。もう一度デバッガで覗くと、最初の16byteが0xFFでした。

ADuC7026の最初の16バイトは例外ベクトル領域です。特に最初の4byteはリセットベクトルです。これが正しく設定されていないなら、まっとうに動くわけがありません。HEXファイルを開いてみたところ、最初の16byteのデータレコードはきちんと生成されています。FLASHは書きこみで0のビットを1にすることはできません。と言うことは、一度正しく書かれたデータが0xFFで上書きされたのではなく、最初からかかれなかったということになります。昨晩はここで力尽きて寝ました。

で、今朝調査を再開。HEXファイル当該レコードチェックサムはあっているようです。

ためしに最初の2行*2分のレコードを残して残りのデータレコードを全部消し、ARMWSDにかけて焼いてみました。するとなぜかきちんと焼けているようです。何かのタイミングでしょうか。

さらににフルレコード状態で最初の1レコードのみコピーして重複させると、これもうまく行きます。ちゃんと実行できました。

まとめておく

原因が何かは特定できていません。データシートでは1万回書き込みできることになっています。一方で、DWM基板ですので当初VDDintに3Vかかっていました。ダメージがあるかもしれません。

とりあえず以下の方策でしばらく凌ぐことにします。まず、ARMWSDですが、

で、問題が起きたら当該レコード*3エディタで重複させます。

*1:そもそもTINY JTAGを購入したのは、プリンタ・ポートICEが信用できなくて、物事を切り分けられなかったから

*2:arm-efl-objcopyは16バイトを1レコード/1行として生成する

*3:今のところ、データレコードの先頭だけ

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20070304