Raisonance Ride7 & ARM Tools (16) LPC1114FN28/102 の追加2012年08月28日 01時35分22秒

LPC1114-102
以前 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