以前
LPC1114-301 を登録して使えるようにしたが、今回は LPC1114-102 を追加する。
忘れていたが割り込みを使うと動かないのも解決する必要がある。
まず、LPC1114-102 の登録からだ。
●LPC1114-102.reg
レジストリデータ、書き終えたら実行する。
もちろんレジストリエディタを使って直接入力してもよい。
●LPC1114-102.sim
Simulator data、必要な項目のみ記述する。
●HFARM.XML に LPC1114-102 を追加
SubFamily "LPC11x" に LPC1114-102 を追加登録する。
これで、LPC1114-102 が使えるようになったはずだ。
さて、次は割り込みで動かなかった件。
シミュレータで追跡してみると6行目を2回実行すると HardFault_Handler につかまってしまう。
01: movs r1, #0
02: b LoopCopyDataInit
03: CopyDataInit:
04: ldr r3, =_sidata
05: ldr r3, [r3, r1]
06: strb r3, [r0, r1]
07: adds r1, r1, #1
08: LoopCopyDataInit:
09: ldr r0, =_sdata
10: ldr r3, =_edata
11: adds r2, r0, r1
12: cmp r2, r3
13: bcc CopyDataInit
14: ldr r2, =_sbss
15: b LoopFillZerobss
ロード、ストアの使い方がまずいのだろうか?
5行目の ldr を ldrb にすると問題ない。
ldr のままだと6行目の strb を str にしなければならない。
どうやらワード境界の問題だったようだ。
つまり、データがなければループしないのでうまくここを通過していたわけだ。
というわけで crt0_LPC11x.s を修正。
●crt0_LPC11x.s
crt0_LPC17x.s をベースにして作成してある。
ほとんど Vectors Table を書き換えるだけだ。
これで問題なく使えるようになった。調べてみると 2011年06月06日から動かないまま放置していた。まあ、Keil µVision3 + GCC で使っている startup は問題なく動いていたので不自由はしなかったわけだ。
環境:Ride7 version 7.30.10.0169
+ RKit-ARM version 1.30.10.0356
+ GCC Sourcery CodeBench Lite 2012.03-56
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。