LPCXpresso(LPC1114)はぢめました

20120130追:
OpenOCDで書き込みとデバッグできるようになったから熟読すべし



なんてうかうかしてるうちにXpressoのLPC1768版登場ですって奥さん!ねむいさんは
中華製1768ボードを買ってしまいましたので今すげぇ涙目です!!!
(でもいいんだ、こっちの方が自由度あるし!!全然負け惜しみじゃないし)

さて、LPC1768の件も語ることが多いので次回にゆだねるとして、今回は巷で流行りの
LPCXPressoを使用してみました。今回はLPC1114版の方を使用します。
まずは環境作りなんですが、いつもの通りCodeRedが提供しているEclipseベースのIDE
ガン無視でコマンドラインからのビルド環境を構築しました。
構築にあたりtodotani氏Lynx-EyED氏microBuilder.euほかのページを参考にさせてもらいました。

構築と言ってもやってることはLPC2388やSTM32でやってたことと全く同一で、リンカ
スクリプトとスタートアップコードをLPC1114用にこさえるだけです。Cortex-M0も
CMSISライブラリが提供されていてSTM32のものと似たような構成にすれば間違いなく
正しく初期化し、動作するものを作ることができます。
私はさらにこれに加えてNxP製のARMマイコンに特有のCRPのセクションを追加
しました。
(まだありますけど後述)普段は使用しないのですが万が一のこと考えてです。
CRP無効にしていますがもちろん他のプロテクションレベルにもできます。
親切心を装って"とりあえずこのプログラム書き込んで試してみて"なんてCRPLevel3
の地雷を故意に仕込むことも可能なのでとてもお勧めですが絶対にやってはいけません!


んでもってLPCXpressoのIDEに同梱されていたLED点滅のサンプルをビルドし、
書き込みます。
書き込みの際にはLPCLinkではなくてSTM8S-DiscoveryのST-LINK部分を
改造したVersaloonを使用してみました。


なんと少し前にLPC1xxxシリーズもSWD接続・フラッシュ書き込み対応に
なっています!!

…でもまだちょっと不安定。さらなる改善を期待します。


LPC2388で経験されている方も多いでしょうが、大切なことなので2度言いますが
NxP製ARMマイコン書き込みの際に注意しなければならないのは電源投入->リセット後
必ず実行されるビルドインされたブートローダによるVectorCheckSumチェックです。
これはどういうものかというと特定のアドレスまでの(大抵はVector領域)の
チェックサムをとった値とさらに別の特定のアドレスの値をたして0に
(2の補数をとる)ならなかった場合、フラッシュ上のユーザプログラムを
実行せず強制的にISPのアドレスにすっ飛ぶという仕組み。
(これにCRPも絡みますが細かいことは各自UserManualで確認のこと)

OpenOCD等でLPC系のARMマイコンのcfgファイルに"calc_checksum"と言う単語が
あるのはそのためです。calc_checksumを有効にしているとフラッシュの書き込み
アルゴリズムの中でVector領域のチェックサムの2の補数を取った数がLPC2388なら
0x00000014に書き込まれます。
これによりユーザプログラムが実行できるわけですが、今度は0x00000014に
違う値が書き込まれていることになってしまうため、べリファイが通りません…
…OpenOCDの仕様上どちら立たずなのでしょか…
JTAGkey2Cloneの時も述べましたが、どうせほとんど変更とか無いですから
スタートアップにあらかじめ自分で計算して書き込んでおけばcalc_checksum無し
でもダイジョブで、かつOpenOCDからベリファイも使用できるようになります
すみません脱線しました。


話を戻すと、上記のVector領域のチェックサムの2の補数を置くべき場所はLPC1114
では0x0000001cになります。ここにあらかじめ計算しておいた値を書いておけば
良いです。LPCExpressoにビルドインされているLPC-Linkフラッシュライタは自前で
計算&書き込みできます。VersaloonもVSProg上では"-A"のオプションを付けること
により対応可能になりますがOpenOCDで使うときの為スタートアップコードに
書き込んでおきました。
SimonQian氏のサイトを見てると、もうそろそろOpenOCD0.5.x系にも対応するよ〜
…な記述がみられますね…。自分の使いやすい環境で開発するのが一番なので今後の
対応を期待しています!

てわけで基本のLED点滅のソースを…ご利用は自己責任で…


次はLPC1769でもやってみましょか…

Comments

こんにちは。OLED焼太郎です(違
悔しくてもう一個リアル店舗で買っちゃいました。

microBuilderでlpcrcでチェックサム修正してた理由が詳しく解りました。ありがとうございます。
LPCXpresso LPC176「8」もゲットしちゃいました。NXPさんによると秋月にもXpresso3兄弟が並ぶそうです。IDEに128kB縛りがあるのでこれも基板ぶった切ってBootloaderからダウンロードできるようにすると思います。

Lynx-EyED様、こんにちは。
ねむいです。

扱いかたに癖がありますが比較的安価でSPI接続なので
ちょっとした確認にも重宝しそうですね〜 >OLED

あとLPC17xx系について、後の日記にも書く予定ですがOpenOCDからの
JTAG書き込みは既に対応しています。FT2232系のJTAGアダプターが
あれば128kByte制限もなんのそのなので試してみたくださいね。
それと私LPCXpressoのLPC1768版が出るの知ってたら中華LPC基板買わな
かったのですがぜんぜん悔しくはないです!悔しくはないです!

Post a Comment








Go to top of page