やっぱARMっしょ2at DENKI
やっぱARMっしょ2 - 暇つぶし2ch59:55
09/05/26 15:36:42 +64YVI7l
>>56 >>57 みんな、早速のレスありがとう。

取り合えず成功しました。
最初に資料を読んだときにはスルーしてたけど、よくよく読んでみたら、
こんな事が書いてありました。

The reserved ARM interrupt vector location (0x0000 0014) should contain
the 2’s complement of the check-sum of the remaining interrupt vectors.
This causes the checksum of all of the vectors together to be 0.
The boot loader code disables the overlaying of the interrupt vectors
from the boot block, then checksums the interrupt vectorsin sector 0 of the flash.

最初に実験していたときは、ダミーデータ(1122334455みたいな)を書こうとしていたけど
上記の通りこのエリアに限っては、正しいチェックサムを含んだ値を書かなければ、ちゃんと
受け付けてくれなかったみたいでした。

ということで、まとめると。

ISPの際に、0x0000番地からの割り込みベクター部分をフラッシュに書き込む際には、
0x0000,0x0004,0x0008,0x000C,0x0010,0x0018,0x001C(つまり0x0014以外)から始まる
ベクターの値を合計して2の補数を取った値をチェックサムとして0x0014に記録した
データでなければフラッシュに書き込んでもらえない。

という事でした。 2の補数を取る際に最初うっかりハマったのは、ARMは基本的に
リトルエンディアンであるという点。 SHの時のクセでうっかりビッグエンディアンで
チェックサムを計算したら、当然の様にハネられたので、数分悩んでしまった。
更に捕捉すると、ベクター値の合計なので、ダブルワード(4bytes)毎に加算してね。

いやぁ~、やっぱり資料は全て読まないとダメという事を再認識した次第。
お騒がせして申し訳ない。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch