LPC800シリーズを使ってみる2

-前回までのあらすじ-
OpenOCDで最初の1kByteしか書けなくてふてくされて他の事やってました。特に
いないさんの誕生日が近づいてきているのでそれの準備に虹裏メイドパワーを
お注ぎ申したり(もう製作完了しました!2月9日はこうご期待!)、副業先の引っ
越しに巻き込まれたり500mも移動してませんが住み家の引っ越しやらでいろいろ忙し
かったのですが、ちょっと落ち着いたのでOpenOCDのコミットを見るとLPC43xx系の
フラッシュありタイプの書き込みサポートがレビュー中状態で追加されていました。

気になって変更箇所見てみるとLPC800シリーズの書き込みにも関する大きなヒント
が見つかったので再びチャレンジしてみた次第です。


ゲームは一瞬で終わっていた…ユーザーマニュアルにちゃんと明記されてたorz
LPC812はLPC2000系やLPC17xx,LPC12xx,LPC13xx,LPC11xxx系と違いIAPスタックの
最大消費量が少し多くなるとの事です。少しの差が成否を分けていたようですorz
そいやvsprogのコードにもそんなこと書いてあったような…まぁいいです。

それをもとにちゃんとドライバを作り込むと拍子抜けするくらい簡単に書き込みが
出来るようになりましためでたしめでたし!

↓LPC812完全対応のOpenOCD+SWD接続のVersaloonで書いた時のメッセージです。
> "C:¥Devz¥Coreutils¥bin¥make.exe" program
openocd -s C:/Devz/ARM/OCD/tcl -f interface/vsllink_swd.cfg -f target/lpc812_swd_flash.cfg -c "mt_flash main.elf"
Open On-Chip Debugger 0.7.0-dev-00151-g4a5c9a4-dirty (2013-01-31-19:33)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : OpenOCD runs in SWD mode
none separate
adapter speed: 250 kHz
cortex_m3 reset_config sysresetreq
Info : Versaloon(0x15)by Simon(compiled on Jul 18 2012)
Info : USB_TO_XXX abilities: 0x0000072E:0x010001EF:0xC0000007
Info : clock speed 250 kHz
Info : lpc812.cpu: hardware has 4 breakpoints, 2 watchpoints
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0xf1000000 pc: 0x1fff0008 msp: 0x10000ffc
auto erase enabled
wrote 2048 bytes from file main.elf in 0.499965s (4.000 KiB/s)
verified 1600 bytes in 0.109367s (14.287 KiB/s)
shutdown command invoked

> Process Exit Code: 0
> Time Taken: 00:01



↓SWDで繋がるということはもちろんSTlink/V2も使用できるということですね♥
> "C:¥Devz¥Coreutils¥bin¥make.exe" program
openocd -s C:/Devz/ARM/OCD/tcl -f interface/stlink-v2.cfg -f target/lpc812_hla_flash.cfg -c "mt_flash main.elf"
Open On-Chip Debugger 0.7.0-dev-00151-g4a5c9a4-dirty (2013-01-31-19:33)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
adapter speed: 1000 kHz
none separate
adapter speed: 250 kHz
Info : clock speed 250 kHz
Info : STLINK v2 JTAG v16 API v2 SWIM v0 VID 0x0483 PID 0x3748
Info : Target voltage: 2.869535
Info : lpc812.cpu: hardware has 4 breakpoints, 2 watchpoints
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0xf1000000 pc: 0x1fff0008 msp: 0x10000ffc
auto erase enabled
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x10000004 msp: 0x100000c8
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x10000004 msp: 0x100000c8
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x10000004 msp: 0x100000c8
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x10000004 msp: 0x100000c8
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x10000004 msp: 0x100000c8
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x10000004 msp: 0x100000c8
wrote 2048 bytes from file main.elf in 0.343750s (5.818 KiB/s)
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x1000002e msp: 0x10000ffc
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x1000002e msp: 0x10000ffc
verified 1600 bytes in 0.062500s (25.000 KiB/s)
shutdown command invoked

> Process Exit Code: 0
> Time Taken: 00:01

STLink/V2のほうが若干書き込み速度が速いですか…!
でもLPC800系はフラッシュ容量の最大が16kByteなので特に気にならないかと
思われます…。



当たり前ですがいつも通りのデバッグもいつも通り可能です。


もちろんSTLink/V2でも自由自在に可能です♥



て訳でLPC812の書き込み・デバッグに完全対応したOpenOCDのバイナリとパッチ
公開します。OpenOCDのLPC812対応に関しては全世界でねむいさんが最初です!
あとは秋月さんがLPC810のDIP品を売ってくれるのを待つばかりですね〜♥
あ、ついでにLPC812-LPCXpressoのプロジェクトも更新してます


おまけ
尺が余ったのでもう少し続けます。

先日ChaN'氏がFatFs0.09bをリリースしました。ドライブのボリュームラベルに対応
しています!ねむいさんもこちらの適用を進めてすでにおきぱにて対応済みのサンプル
を公開しています。今回の作業でSTM32VL,STM32Lでボリュームラベルを設定した時に
ディレクトリ構造が破壊される恐ろしいバグが自分のMMCドライバ側に眠っていたのが
判明したので何気に修正してます。
…ぇーっといままでwriteの方は放置してましたすみません!!

LPC800はぢめました(Versaloonを使ってLPC812に書き込み&デバッグを行う)


……ッッ

ギ ブ ア ッ プ orz

去年末に入手しVersaloon+OpenOCDで書き込みデバッグせしめることを頑張って
きましたがもうお手上げですorz

20130201追:
OpenOCDからも書き込みができるようになりました!!
さすが私!







と書き切ってしまうと今日のブログ終わっちゃうのでvsprogから書き込みを行う別の
突破口を見つけ成功しましたのでLPC812使用記を兼ねてお知らせします。

Cortex-M0+コアが使用されているLPC800系のペリフェラルのアーキテクチャはM0コアの
LPC1114系とは違う部分があります(USB付きだからかLPC11uxx系も全く違う)。
フラッシュメモリの構造もその一つですが、フラッシュサイズの上限が16kByteまでしか
無いLPC800シリーズではLPC11xx系とは比較すると以下のようにセクタ/ページサイズ
が細かくなっています。
*セクタサイズ
LPC11xx : 4kByte
LPC8xx : 1kByte
*ページサイズ
LPC11xx : 256byte
LPC8xx : 64byte

OpenOCDやvsprogに代表されるフラッシュ書き込みルーチンはLPC系のARMマイコンでは
JTAG/SWD経由でもIAPを召還して書き込みを実行する方式のため新たなデバイスの
対応に特段に難しい措置は必要はありません。
だから公式に対応してなくとも自分でセクタ/ページサイズの定義をちょちょいと追加して
やれば終了のはず…なのですがOpenOCDでは1セクタ目を書いた時点でHardFaultに
なってしまいアウチとなったのでしたorz

20130201追:
OpenOCDからも書き込みができるようになりました!!
さすが私!



しかしvsprogではあっさり成功してしまいましたので誰かがOpenOCDで頑張ってくれる
までは当分vsprogでLPC812に書き込みを行います。

↓書き込んだときのメッセージです。PN2のコンソール出力キャプチャに対応させる
 ため、LPC800と直接関係ない表示系も少しいじってますのでご了承を。
> "C:¥Devz¥Coreutils¥bin¥make.exe" program
vsprog -clpc812m101fdh20 -ms -I main.hex -oe -owf -ovf
VSProg 1.0 svn:1364M
CopyRight(c) 2008-2010 by SimonQian

URL: http://www.SimonQian.com/en/Versaloon
mail: SimonQian@SimonQian.com

Info: Versaloon(0x15)by Simon(compiled on Jul 18 2012)
Info: USB_TO_XXX abilities: 0x0000072E:0x010001EF:0xC0000007
Info: Target runs at 0.000V
Info: SWDID = 0x0BC11477
Info: AHB-AP_ID = 0x04770031
Info: ROM_ADDRESS = 0xE00FF003
Info: CFG = 0x00000000, Little-endian
Info: CORTEX-M0 r0p0 processor detected
Info: CPUID = 0x410CC600
Info: Bootloader version 13.1
Info: Chip-id read is 0x8122.
Info: erasing flash
erasing flash |========================================| 0.06s used
Info: flash erased
Info: SWDID = 0x0BC11477
Info: AHB-AP_ID = 0x04770031
Info: ROM_ADDRESS = 0xE00FF003
Info: CFG = 0x00000000, Little-endian
Info: CORTEX-M0 r0p0 processor detected
Info: CPUID = 0x410CC600
Info: programming flash
writing flash |========================================| 0.39s used
Info: flash programmed for 1600bytes(4.00KB/s)
Info: verifying flash
reading flash |========================================| 0.09s used
Info: flash verified for 1600bytes(16.80KB/s)

> Process Exit Code: 0
> Time Taken: 00:01




OpenOCDはフラッシュ書き込みはできないもののそれ以外のすべての操作はLPC11xx系と
同様に可能です。いつものInsightを使ったデバッグとI/OViewも自由自在です。
※STLink/V2もデバッグ可能です。

ということで少々セコ技ですがいつもの構成で開発環境が整ったのでLPC812Xpresso
用のプロジェクトファイルを公開します

同時にLPC812に書き込み可能なvsprogのwindows用バイナリLPC812のcfg入りのOpenOCD
も更新しました。vsprogと同じフォルダにはLPC800系対応のパッチがありますので興味ある
人は自分でビルドして試してみてくださいね。

でもどちらかというとねむいさんは
20130201追:
OpenOCDからも書き込みができるようになりました!!
さすがわた(ry

いろいろ試す16…という名の新年のご挨拶

あけましておめでとうございます。

去年も色々ありましたが今年も私ねむいさんといないさん(とその他虹裏メイドたち)
をよろしくお願いいたします(ぺっこりん)。




さて、早速ですが1/6に私の誕生日を控えそれの仕込みに今修羅場ってるのでお年玉
代わりのファイル更新のご連絡をさらっとだけさせていただきます!

FatFs移植サンプルの更新
ねむいさんからのお年玉第一号です!
私のぶろぐのメインコンテンツのうちの一つですがSTM32F4をはじめとしたARMマイコン
のFatFs移植例をTFT-LCDドライバを大量追加して更新しました!
あとmakefileで無意味な記述や冗長な表現があった物を削除&外部に追い出して分かり
やすくした(つもり)です。

そしてChaN氏や海外のelec系BBSで紹介されて以来海外の方からも色々ご意見等を
戴くようになりました。国内の方の場合は私の作例見なくともFatFsの移植は簡単に
出来ちゃう人がほとんどなので、個人のノウハウが成否に大きく依存するTFT-LCDの
制御に関する情報を求めてやってこられるケースが非常に多くなっています。
尤も数年前に同じ事の繰り返しになるので概論書いて以後はもうやるまいと思って
いましたがまたTFT-LCDネタで一つ書こうかしらなんて考えています。

↑たとえばtaobaoで捨て値で買ってしまったような、ドライバーICの型番だけ分かって
 てピン配置が不明の未知のTFT-LCDモジュールの解析法とかです。こうご期待!


OpenOCDのバイナリを更新しました。
お年玉第2号でこちらもメインコンテンツのひとつですが、年末辺りからようやく
バイナリ使ってくれる方がちらほら出てくれたようです。(私のアナウンスもまずか
ったですが…)。

もちろんオリジナルには無い機能や書き込みスクリプトも搭載してますのでとりあ
えず落として使ってみてください。

あとわざわざ告知した理由は年末にTI-ICDI(LM4F-Launchpad)が公式対応したおりに
stlink系のAPI呼び出すときの手順が少々変更されたからで、以前私が配布していた
古いcfgファイルやプロジェクトファイルを使用しているとバッティングを起こして
エラー出て停止してしまう危険性があるためです。

おもに影響を受けるのはstlink系のハードウエアで、プロプライエタリドライバの
TI-ICDIが取り込まれた際に抽象化レイヤの名称が"stlink"から"hla"という普遍的な
名称に変更されています。
現在おきぱで配布しているものはこのhlaに置き換えたものなので新しいプロジェクト
と併せてお使いください。LPC1114をSTLinkで使ってた人は知らないと嵌るかも…。



●今年の抱負など
こうやって書いとかないと絶対実行しないタイプの人間なので

1.beagleboneをいじる
 ->気が付いたら買ってしまったので弄らないともったいないのです!!
  せめてPC連動の据え置き型mp3プレーヤーみたいなのを作ろうかと…

2.ANUXをいじる
 ->気が付いたら(ry
  せめて虹裏見る用のブラウザ(ry

3.ドットマトリクスLCDライブラリ
 ->ご存知の方もいますが2.5元i2c液晶買って以来数年間育て続けたネタですが、
  がた老さんに先を越されてしまいそうです(汗
  いまだ水面下ですが去年の春に16諧調グレイスケールOLEDまで実装したので
  TFT-LCDライブラリと同じ感覚で気軽に使用できる物を目指したいと思います!

4.英語の勉強
 ->私は読み書きは時間掛けると疎通は何とか可能だが会話がもう壊滅的でヤバい。
  学生のうちに英語圏で不自由なく生活ができるレベルの英会話は出来るように
  なっといた方がいいですよぅ…あと余裕あったら北京語も(日本に棲むような
  語学力ある中国人以外は英語全く通じない奴が多いので)

5.夏期(4~10月)に近畿圏でトレランを10本以上こなす
 ->へばって歩いちゃったら意味ないんですけどね…
  でもへとへとで山から帰ってきて風呂でさらに体液絞って絞って絞った後の
  ビールがものすっっごく美味いのです…♥
  それと現在使用しているGPSモジュールの精度がかなり良いので初期の精度が
  悪い時の測位データの採り直しも兼ねて・・。

6."5."で体重を50埖罎僕遒箸后
 ->油断するとすぐ60kg肥えやがる#

Go to top of page