2023年8月16日水曜日

[備忘録] OpenOCDをLPC18xx(LPC1800系LPC1857)で使う

  • OpenOCDに含まれるコンフィグレーションファイルlpc1xxx.cfgは使えそうに見えるが使えない
  • コンフィグレーションファイル中のflash bankの設定では"auto"ではなく"lpc4300"を明示的に指定する

OpenOCDはLPC18xxをサポートしているが、LPC17xxなどのように各品種を包括的にサポートする(ほぼできそうな)lpc1xxx.cfgのようなコンフィグレーションファイルは存在しないようだ。わずかに、lpc1850.cfgのような一部のみサポートするコンフィグレーションは存在するが、flash bankやworkareaといった定義・設定がないか、不十分だと考えられる。

また、lpc1xxx.cfgで使用されている

# flash bank <name> lpc2000 <base> <size> 0 0 <target#> <variant> <clock> [calc checksum] [iap entry]
set _IAP_ENTRY 0
if { [info exists IAP_ENTRY] } {
    set _IAP_ENTRY $IAP_ENTRY
}
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME lpc2000 0x0 0 0 0 $_TARGETNAME \
    auto $_CCLK calc_checksum $_IAP_ENTRY


というflash romの定義は"auto"とあることからLPC18xxでも使えそうな気がするが、実際には"auto"は機能しない。OpenOCDのソースコードを見て分かったのは、"auto"設定で対応可能なのはIAP(In-Application Programming)のテーブルアドレスが0x1fff1ff1に置かれているLPCデバイスに限られる。
一方、LPC18xxのIAPテーブルアドレスは0x10400100に書いてあるアドレスを読み出すことで得られる。この方式はLPC43xxシリーズと同じ方法で、実際のところflashのバンク構成などもLPC43xxの方が近い。Cortex-m3(LPC18xx)とCortex-m4(LPC43xx)の違いはあるが、どちらかというとLPC43xx用のコンフィグレーションを参考にして、LPC18xx用のコンフィグレーションを一から書いた方が早そうである。

0 件のコメント:

コメントを投稿