PC版 SYSLAB blog  http://syslab.asablo.jp/blog/......

Raisonance Ride7 & ARM Tools (16) LPC1114FN28/102 の追加
2012-08-28


禺画像]
以前 LPC1114-301 を登録して使えるようにしたが、今回は LPC1114-102 を追加する。
忘れていたが割り込みを使うと動かないのも解決する必要がある。
まず、LPC1114-102 の登録からだ。

●LPC1114-102.reg
 レジストリデータ、書き終えたら実行する。
 もちろんレジストリエディタを使って直接入力してもよい。

 

●LPC1114-102.sim
 Simulator data、必要な項目のみ記述する。

 

●HFARM.XML に LPC1114-102 を追加
 SubFamily "LPC11x" に LPC1114-102 を追加登録する。

  32-bit ARM Cortex-M0 MCU\n32K FLASH at address 0x00000000\n4K RAM at address 0x10000000\n1 UART\n1 I2C\n1 SSI/SPI controller\n5 general purpose counters/timers\n10-bit ADC with 6 input channels\n13 motion-control PWM outputs\n22 GPIOs\n28 pins

これで、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 を書き換えるだけだ。