« 技術士の登録で駆け回る | トップページ | DWMのARM基板を研究中 »

2006.02.13

DWM付録のARM基板でLEDチカチカ

今日は、午後から新宿で打ち合わせでした。
歌舞伎町は怖いと聴いていたので、人にぶつからないようにビクビクしながら歩きます。ひえぇ

------------

さて、戻ってきてから、購入したDWM付録のARM基板を動かしてみました。
JTAGのコネクタをつけてXILINXのParallelIVケーブルをつなぎます。

dwm1

MITOUJTAGを起動してみると、見事にARM7を認識成功。MITOUJTAG内蔵のARM7デバッガも動きました。
dwm3

とりあえず、LEDチカチカのプログラムを作成して、SRAMが配置されているアドレス0x10000にダウンロードしてみると、LEDが点滅。
成功・・・かと思いきや、数十秒でチカチカが止まってしまいます。電源に電解コンデンサを入れたりしても改善せず。

チカチカが止まると、アドレスカウンタは変なアドレスを指して、プログラムが存在していないところを実行しています。

調べたところ、どうやらLEDチカチカの途中でアドレス0x0000000Cへジャンプしてしまっているようです。
(0x0000000cにジャンプしているというのは、0x0000000Cにハードウェアトラップを設定すると引っかかるのに、0x00000008にトラップを設定しても引っかからないということから判断しました。)

ARMの解説本を読んでみると、0x0000000Cにジャンプというのは、ARMのコアがプリフェッチ・アボートした場合です。
プリフェッチ・アボートというのは何かというと、命令のフェッチに失敗するような場合に発生する例外です。これは普通にプログラムを実行している場合には遭遇しない例外です。何か、ハードウェアの問題が起きている可能性があるような致命的な例外です。

不意に聞いた噂によれば、この基板ではADuC7206のコア電源(LVDD)という端子(内蔵のLDOで作られた2.6Vの)が、3.3Vの電源につながってしまっているそうです。

そこで、下の写真のように27番ピン(LVDD)を浮かせ、浮かせたピンの下にカットしたポリイミドのテープを滑り込ませて絶縁します。そして、手持ちにあった1uFと0.01uFのコンデンサでGNDにつないだところ、プリフェッチアボートは起こらなくなりました。
LEDチカチカは1時間経っても正常に動作するようになりました。

dwm2

この加工は結構大変でした。まず、半田吸い取り線を使って、ICの27番ピン付近の半田をできるだけ吸い取ります。ICのピンにはほとんど半田が残っていないような状態にします。吸い取ったら、細いピンセットを使って、無理やり基板からピンを剥がします。ちょっと力加減を間違うと隣のピンを曲げてしまったり、折ったりします。何度か危ない目に遭いました。こうしてピンを浮かせたら、何らかの方法で固定しないと、簡単に折れてしまいそうです。私はテープで固定しましたが、ホットメルトでもいいかもしれません。
27番の周辺のピンには半田を流して、吸い取られた半田を補充します。

DWMの第3章によれば、本当はLVDDには0.47uFのコンデンサをつけるのだそうですが、手元になかったので、適当な容量のコンデンサをつなぎました。

ただし、LVDDだけが原因ではないかもしれません。なぜなら、LVDDにこのような処置した直後にもプロフェッチ・アボートは完全には収まりませんでした。しばらく使っているうちに、プリフェッチアボートしなくなりました。
しかしながら、ためしにこの27番端子をVCC(3.3V)にショートさせたりすると、再びプリフェッチ・アボートしてしまいました。

LVDDに何か強烈なことが起きると、プロフェッチアボートしてしまうのかもしれません。
ただ、正直なところ、この端子が原因かははっきりとはわかりません。より詳しい検証をするには、浮かせた27番ピンをもう一度戻したり(それは嫌だ!)、もう一冊DWMを買ってきて試すということになりそうです。

|

« 技術士の登録で駆け回る | トップページ | DWMのARM基板を研究中 »

コメント

大変恐縮ではございますが、フェッチの失敗が生じるのはハードウェアに障害がある場合、という内容が記載されている書籍 or ウェブサイトをご教授頂けないでしょうか。それとも、これは一般的なことなのでしょうか。

投稿: 奥田 淳 | 2011.05.20 17:09

何が知りたいんですか?

投稿: なひたふ | 2011.05.23 03:32

適切な表現かでなければ恐縮ですが、
プリフェッチアボートが発生するケース = ハードウェア故障の可能性が高い
と考えて良いかどうかです

投稿: 奥田 淳 | 2011.05.24 10:43

>プリフェッチアボートが発生するケース = ハードウェア故障の可能性が高い
そうとも言えません。

このブログの記事は、DWMのARM基板の電源が悪すぎてエラーが起きたという現象と、その対策方法について記したものです。

記事の内容とは関係なく、プリフェッチアボートに関する一般的なことを知りたいのであれば、ここではお答えできかねます。

投稿: なひたふ | 2011.05.24 12:04

返信が遅れてしまい申し訳ございません。

承知致しました。
丁寧なご対応頂き、ありがとうございました。

投稿: 奥田 淳 | 2011.05.31 14:06

コメントを書く



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




« 技術士の登録で駆け回る | トップページ | DWMのARM基板を研究中 »