OpenOCD小ネタ15 -LPC5410x,LPC82xシリーズの書き込み対応-

11月ごろに新規ラインナップリリースの報は小耳にはさんでいたのですがまだまだ先かと
思っていたLPC54102XPressoが秋月さんから唐突に発売されておりました。
同時にLPC824MAXも販売されましたので早速手に入れ評価してみましたのでご紹介します。


●LPC82xシリーズのフラッシュ書き込みに対応

LPC824MAX、正式名称はLPCXPresso824MAXです。

中心部のLPC824はCortex-M0+コアを持つLPC810シリーズの上位に位置し、フラッシュ
メモリとSRAM容量の増強に加えてDMAも追加されております。もはやLPC810シリーズと
は別品種(後述の部分も含め)とみて良いでしょう
付属のデバッガはおなじみMBED版CMSIS-DAPです。マスストレージからの書き込みも
サポートしております(が当ぶろぐでは全く使いません)

ん…?なんかコネクタのハンダが雑だ…

!!!!!!なんかコネクタうまくハマらないと思ったら…
とりあえず精密ラジオペンチで障害物取り除いて対処しました。
後で新しいのに取り換えておきましょ。


気を取り直してOpenOCDから書き込みしようとしてみました…
が、
LPC81x系と同じだろうと高をくくっていましたが正しく書き込めませんorz
もう少し突っ込んで調査してみると最初の1kBしか書き込めてない現象…これはまさか

UM10800rev1の386ページにはIAPのスタックはLPC810系と同じく148byte確保せよと
指示してあるのですがこれに従うと駄目でlpc4300系みたいに208byte確保しないと
ただしく書き込み動作、正確にはIAPコマンド51が連続で実行できませんでした。
マニュアルの整備がまだ行き届いてない感じですね。LPC82xはリリースして結構時間
経ってるので多分同じ指摘が来てるはずです。来月あたりにこっそり変わってると思い
ます。NxPさんはドキュメントの修正対応かなり早いので特に気にしてませんがあまり
高に言うとコワモテのくまさんに〆られるのd


そんなわけでLPC824にも書き込みデバッグが可能になりました。
ついでにLPC11xxとLPC17xxで対応しているフラッシュメモリサイズの自動認識についても
LPC800シリーズ向けに対応しておきましたのでcfgファイルの統一可能です♥



●LPC54102のフラッシュ書き込みにも対応


LPC54102XpressoはCortex-M4FとCortex-M0+が同居したLPC5410xシリーズとV3に
バージョンが上がったLPCXpressoのハードウエアで構成されています。

デバッガとしてはLPC-Link2同等品として動作します。CMSIS-DAPでデバッグが可能に
なっております。

またコネクタ構成もArduinoのシールド互換に構成になっており、mbedにも対応予定
だそうですがmbed公式にはまだ影も形も使ってる人すらもいません。つまりこの記事
投稿するのが早ければ私が国内第一号になるはずです!!!


と、その前に書き込みをできるようにしなければなりません。LPC824と同じくOpenOCD
にパッチを当てる必要がありました。ブートローダーの構成・エントリポイントはLPC1500
シリーズと同じですが当然ながらフラッシュメモリのセクタサイズとIAP消費スタック
容量が異なりますのでそれに合わせて作りこんでいきました。


作りこみ自体は慣れたものなのでLPC5410x系のフラッシュ書き込みは危なげなく完了
し、現状M4コア単独のみですが動作も確認できました。

但し書き込み時にはcfgサイドでちょっとコツが必要です。LPC5410xはLPC1000系には
存在しているベクタアドレスのリマップ機能がなく、電源投入時はもちろん各リセット
時にもブートローダー(0x03000000から開始)にまず飛び、ブートROMの先頭が0番地に
来ます。つまりリセット直後にhaltをかけた状態でベリファイを行うと、ユーザフラッシュ
ではなくブートROMの内容を読んでしまいベリファイに失敗します。

これを防ぐためにフラッシュにプログラムを書いた後は一旦リセットをかけてユーザ
プログラムを走らせ(reset run)てからhaltをかけてやる必要があります。
私が公開しているOpenOCDのプログラムと同梱のLPC54102向けcfgは一連の操作を
リブートコマンドとしてprocに定義してありますのでユーザサイドでは特に意識しないで
書き込み・デバッグが可能となっております。

おきぱにはGCCでビルドできるLPC54102XPresso向けのプロジェクトを置いてますので
秋月さんで購入された方は試してみてください。上で述べたとおりこのボードに仕込
まれてるものはLPC-Link2相当でHighSpeedで繋がるため、OpenOCDから書くと極めて
遅いと言われているCMSIS-DAPにも関わらずかなり早いです。


これらLPC2000向けパッチはgerritにもパッチをあげておりますので興味のある方は
ビルドして試してみてください。またWindows環境の方はおきぱのOpenOCDバイナリ
パッチ適用済みですのでご利用ください!

Go to top of page