LPC1769を使う3

mbedやLPCxpresso,Arduino等の圧倒的な利点というのは、ベースとなる
ハードウエアが共通かつ基礎的なアプリケーションフレームワークが
おぜん立てされているという点で、他の方が作られたすぐれたアプリ
ケーションを手元で誰でも簡単にすぐに追実験できるということに尽きる
と思います。
1年前はまだまだ秘境だったARMの分野の裾野を一気に広げたというのは
賞賛すべきことだと思いました!一方、情(に)弱(い)ねむいさんは足しか
出ていないような中華LPC1769基板をひたすらどうにかしていた…。





超高速なIOを利用して件のSPI接続可能でQVGAな液晶をSoft-SPIで…。
SPIバス接続してさらにDMAでぶん投げられたらもっと早くなるでしょう。


さて、先日NxPのサイトにてLPC17xx用のペリフェラルライブラリがアップデート
されました。
こちらを元にテスト段階のLPC1769の環境も固めていきたいとおもいます。
このライブラリはGCC向けにはCodeSourceryG++の使用を前提としてスタート
アップ・リンカスクリプト・etcが用意されています。LPC13xx,LPC11xx系は
ほぼ自前でこさえましたがせっかくなのでLPC17xx系は豊富なメモリ資産が
あるのでCodeSourcery提供のものを積極的に使用していきます。

で、注意しなければならないのがそのスタートアップ等なのですが、そっくり
そのまま使う人はべつにどうということはないのですが私のようにCRPの記述入れて
たりChecksumValitdateを直打ちな人は不整合が起こらないようにしなければ
なりません。あと見落としづらいのがdataやbss領いk(iruka氏が分かりやすく解説してくれてますので省略)



んでもってaudin氏に尋ねられた浮動小数点演算でハングする件をちょっと試して
みました。冒頭のカワウソ画像に見える浮動小数点演算の結果はsprintf(書式は%f)
+FONTXドライバの文字表示で表示していますが、NxPのLPC17xxのライブラリのGCC
向けで使用されているCodeSourceryのスタートアップ(CodeSourcery Common Start-up Code Sequence (CS3))
を使うとsyscalls.cというかsbrkを作り込まなくてもふつーにsprintf関数とか
使えました。しらんかった…。
ということで私の環境では浮動小数点演算OKでした。

そろそろベースも固まってきたことですからLPC1769用のとっかかりプログラムも
更新するつもりです。
またaudin氏がOpenOCD+Insightから利用できるIOビュー画面機能を実現する方法
を公開されていますのでこちらもありがたく使わせてもらいます!






今日はもう一件、どちらかというとこっちの方が重要な事柄なんですけどVersaloon
で使用できるSWD接続なOpenOCDデバッグがまだ制限付きですがLPC11xx,LPC13xx系
でようやく出来るようになっています!
LPC1114,LPC1343はJTAG接続が存在せず、SWDでしか接続できません。
OpenOCDが0.5.0に上がるのを機にSWD接続も対応になるとのことですがそれに
先立って公開されていたパッチを適用してデバッグを試してみました。

↓フェイクじゃなくてマジもんです。SWD接続に使用したデバイスはもちろんVersaloon。


キャプ画像見てもらったら分かるともいますが、audin氏のIOView機能をLPC11xx系に
適用して、ビット単位でGPIOのポートを見れるようにしています。コレめちゃくちゃ
便利すね…!もうLPC-LinkとかLPCXpressoのIDEとか必要ですらないです
…これで勝つる!!1!
…と言いたいところですがデバッグは問題ないですがOpenOCDからのフラッシュメモリ
操作がまだLPC11xx系には完全対応しておらず(LPC13xx系は普通に使えること確認
しました!
)、eraseしかできません。
まぁvsprogがあるので書き込みはこっち使っておいて正式対応までちょっと我慢です。


↑おまけ。LPC1114の基板に改造加えてEtherPodっぽくしてみました

Comments

こんにちわ audinです。
sprintf試していただいてありがとうございます。

ようやく原因が分かりました。
OpenOCDの「soft_reset_halt」コマンドが抜けていたようです。
詳細はブログに追記、修正しました。

スタートアップライブラリ「CS3」も試してみましたがOKでした。少し使ってみます。

  • audin
  • 2010/08/15 10:18 AM

ねむいです。おはようございます。

そちらも上手くいったようでなによりです。
OpenOCDからLPC17xxを確実に叩く方法もある程度固まってきましたね〜

私のブログでも何度か述べていますが、NxP系ARMマイコンは、
CheckSumValidationがあるので良く知らなかった頃は私も面食らいました。

それと割り込みベクタの飛び先は固定しておかないと、ソース編集して
ビルドするたんびに計算しなおしとかなってしまいますのですこし
考えてスタートアップ組む必要性があります。ご注意ください。

Post a Comment








Go to top of page