2011年2月23日水曜日
3千円で楽しめるARMマイコンとRTOSの世界 (TOPPERS/ASP on LPCXpresso LPC1768)
= 謝辞 =
TOPPERS/ASP for LPCは@suikan_blackfinさんによってポーティングされました。
氏は様々な鋭い洞察力で過去にも沢山の偉業を成し遂げている方です。
ここに過去の沢山の偉業を挙げることは出来ませんが、素晴らしいポーティングに感謝すると共に、厚くお礼を申し上げます。
ありがとうございます。
氏のウェブサイトはhttp://d.hatena.ne.jp/suikan+embedded/にあります。
また、LPCXpressoはNXPセミコンダクターズジャパンさんが積極的に国内市場への展開を行って下さっています。このような安価で優れたツールを手に入れることのできるのは、嬉しい限りです。
NXPセミコンダクターズジャパンさんが運営されている日本語サイト(LPCZone)はhttp://www.nxp-lpc.com/cgi-bin/linkv.htmlにあります。
いずれのサイトも沢山の面白い情報が盛り沢山ですので是非ご覧下さい。
= はじめに =
TOPPERS/ASP for LPCはTOPPERS/ASPをNXPセミコンダクターズのLPCシリーズ上で
動作するようにしたもので@suikan_blackfinさんがメインテナンスされています。
http://sourceforge.jp/projects/toppersasp4lpc/
公開当初から完成度が高く、私も簡単に動作させて楽しむことができました。
そこで、今回は沢山の方にTOPPERS/ASP for LPCを楽しんで頂くためにLPCXpressoさえあれば楽しめるようにしようと考えました。
従来は評価用ボードに加えて、JTAGデバッガ、環境構築など様々な準備が必要でしたが、TOPPERS/ASP on LPCXpressoを使えばLPCXpresso上で簡単に動作させることができるようになります。
そうです。
LPCXpresso LPC1768(あるいはLPC1769)さえあれば良いのです。
従来のように高価なデバッガやRTOSを購入する必要はありません。
= 対応環境について =
ホストOS環境はLPCXpressoが対応しているLinux環境に今回は限定しました。
TOPPERS/ASPのビルドシステムにはシェルとperlに依存する箇所があります。
Windowsでも様々な外部ツールを使って、依存する環境に近い状況を作り出す事が可能ですが、今回は作業負担を軽減させるために割愛しました。
最近ですとVMware Player上で簡単にLinux環境が構築できますし、WindowsとLinuxの両環境で対応できるように沢山の時間をかけるよりも、早く提供したいという思いが先行した結果でもあります。
参考までに動作を確認した環境を記します。
* Ubuntu 10.10
* LPCXpresso 3.8.2 [Build 129][31/01/2011]
* LPCXpresso LPC1768 REV A
今回公開するプロジェクトの源流になったものは、TOPPERS/ASP for LPCのリリースのうちMisc. / LEDBLINK LPCXPRESSO 1768 1.6.0です。
= オリジナルからの変更点 =
@suikan_blackfinさんがお作りになったオリジナルから行った変更について記します。
変更は
* デバッグをIDE上でできるようにすること。
* 極力TOPPERS/ASPのオリジナルとの差分を小さくすること。
* LPCXpressoのみで実現可能なこと。
を念頭に作業しました。
ソースコードとビルド用ファイルについては以下の変更を行っています。
* 元々あったlpc1768_sram.ldとlpc1768_rom.ldを削除しました。
* LPCXpressoが生成したDebugとReleaseのリンカスクリプトを使用しました。
-> ENTRY(ResetISR)をENTRY(_start)に変更しました。
-> STARTUP(start.o)を追加しました。
-> __bss_start, __bss_endを追加しました。
-> __idata_start, __idata_end, __data_startを追加しました。
-> init_hook関数をPROVIDEで追加しました。
-> .isr_vectorを.vectorに名称を変更しました。
* kernel/target/lpc1768_generic_gcc/Makefile.targetに以下を追加しました。
-> CDEFS=-DDEBUG -D__CODE_RED -D__REDLIB__
* Makefileで生成されるオブジェクトの名称を変更しました。
* Makefileで生成されるオブジェクトの拡張子を変更しました。
LPCXpressoのプロジェクトに対しては以下の変更を行っています。
* Debug ConfigurationsのDebuggerタブでStop on startup at: main_taskに変更しました。
* Debug ConfigurationsのDebuggerタブでVector catch: Trueに変更しました。
* PropertiesのC/C++ BuildでGenerate Makefiles automaticallyのチェックを外しました。これによりLPCXpressoは外部Makefileを参照するようになります。
* PropertiesのC/C++ BuildでBuild directoryからDebugとReleaseを削除しました。
これによりプロジェクトのルートディレクトリを参照する形になりMakefileとの整合性が確保されます。
= 使い方 =
Linux上のLPCXpressoで使用できます。
ダウンロードしたzipファイルは展開せずにLPCXpressoの「Import Example project(s)」で使用します。
Browseボタンを押してダウンロードしたzipファイルを選択します。
インポートができたらLPCXpresso上でビルドして下さい。
場合によって、コンフィギュレータのビルドが必要かもしれません。
展開したディレクトリのトップにconfigureがありますので、それを実行して下さい。
ビルドが完了したらDebug 'TOPPERS-ASP_LPCXpresso-LPC1768'でデバッグできます。
Debugを選択してOKボタンを押してください。
以下のようにmain_taskで実行が停止すると思います。
ここまで来れば色んな事がIDE上で楽しめるようになっています。
RunメニューからResumeを選択してみて下さい。
LPCXpresso上のLEDがチカチカ点滅すると思います。
次にRunメニューからSuspendを選択して下さい。
実行が停止し、停止した箇所のソースコードが表示されます。
Disassemblyパネルを見ればC言語のソースとアセンブラの両方を確認しながらデバッグできます。
上記のようにLPCXpresso購入後、今回のTOPPERS/ASP on LPCXpresso LPC1768のzipファイルをダウンロードするだけで、TOPPERS/ASPのアプリケーション開発を体験することができます。
IDE上でソースコードを見ながらResume, Suspendなど便利な機能が使用できる点も見逃せません。
皆さんご存知のとおりLPCXpressoを購入することで使用できるLPCXpresso IDEはコードサイズ128KBの制限があります。
しかしながら、手軽にRTOSを楽しむことのできる環境を構築できることを考えると、なかなか優れた投資効果が得られると言えるのではないでしょうか。
= ダウンロード =
このファイルを使ったことによる如何なる結果も当方では責任を負えませんので、この点を御了承頂いた上で御利用下さい。
ファイルのダウンロード:こちらをクリック
(今後バージョン管理システムへの移行を考えています。)
= 最後に =
今回の対応は既存のTOPPERS/ASPのビルドの枠組みを超えない形で行ないました。
本来であれば、LPCXpresso上のプリビルドやポストビルドを駆使してカーネルに
対するコンフィギュレーションなどを行うのが筋ですが、先に述べたとおり早めの
公開を目指して割愛したものです。
もし、何かシンプルな方法でコンフィギュレータまでを包括的に処理させることが
できる方法を思いついた場合、是非ご一報頂ければと思います。
= お勧め書籍 =
今回の対応作業で参考にさせて頂いた書籍を紹介します。
* 起動プログラム ブート・ローダ入門
邑中雅樹さんの「TOPPERSで学ぶuITRONのブート・シーケンス」は必携です。
TOPPERS/ASP for LPCは@suikan_blackfinさんによってポーティングされました。
氏は様々な鋭い洞察力で過去にも沢山の偉業を成し遂げている方です。
ここに過去の沢山の偉業を挙げることは出来ませんが、素晴らしいポーティングに感謝すると共に、厚くお礼を申し上げます。
ありがとうございます。
氏のウェブサイトはhttp://d.hatena.ne.jp/suikan+embedded/にあります。
また、LPCXpressoはNXPセミコンダクターズジャパンさんが積極的に国内市場への展開を行って下さっています。このような安価で優れたツールを手に入れることのできるのは、嬉しい限りです。
NXPセミコンダクターズジャパンさんが運営されている日本語サイト(LPCZone)はhttp://www.nxp-lpc.com/cgi-bin/linkv.htmlにあります。
いずれのサイトも沢山の面白い情報が盛り沢山ですので是非ご覧下さい。
= はじめに =
TOPPERS/ASP for LPCはTOPPERS/ASPをNXPセミコンダクターズのLPCシリーズ上で
動作するようにしたもので@suikan_blackfinさんがメインテナンスされています。
http://sourceforge.jp/projects/toppersasp4lpc/
公開当初から完成度が高く、私も簡単に動作させて楽しむことができました。
TOPPERS/ASPはプロジェクトの性質上、商用のツールを使う前提でソースコードや周辺ファイルが公開されている事が多いのですが、これが障壁となって沢山の人が挫折するような状況でした。
そこで、今回は沢山の方にTOPPERS/ASP for LPCを楽しんで頂くためにLPCXpressoさえあれば楽しめるようにしようと考えました。
従来は評価用ボードに加えて、JTAGデバッガ、環境構築など様々な準備が必要でしたが、TOPPERS/ASP on LPCXpressoを使えばLPCXpresso上で簡単に動作させることができるようになります。
そうです。
LPCXpresso LPC1768(あるいはLPC1769)さえあれば良いのです。
従来のように高価なデバッガやRTOSを購入する必要はありません。
= 対応環境について =
ホストOS環境はLPCXpressoが対応しているLinux環境に今回は限定しました。
TOPPERS/ASPのビルドシステムにはシェルとperlに依存する箇所があります。
Windowsでも様々な外部ツールを使って、依存する環境に近い状況を作り出す事が可能ですが、今回は作業負担を軽減させるために割愛しました。
最近ですとVMware Player上で簡単にLinux環境が構築できますし、WindowsとLinuxの両環境で対応できるように沢山の時間をかけるよりも、早く提供したいという思いが先行した結果でもあります。
参考までに動作を確認した環境を記します。
* Ubuntu 10.10
* LPCXpresso 3.8.2 [Build 129][31/01/2011]
* LPCXpresso LPC1768 REV A
今回公開するプロジェクトの源流になったものは、TOPPERS/ASP for LPCのリリースのうちMisc. / LEDBLINK LPCXPRESSO 1768 1.6.0です。
= オリジナルからの変更点 =
@suikan_blackfinさんがお作りになったオリジナルから行った変更について記します。
変更は
* デバッグをIDE上でできるようにすること。
* 極力TOPPERS/ASPのオリジナルとの差分を小さくすること。
* LPCXpressoのみで実現可能なこと。
を念頭に作業しました。
ソースコードとビルド用ファイルについては以下の変更を行っています。
* 元々あったlpc1768_sram.ldとlpc1768_rom.ldを削除しました。
* LPCXpressoが生成したDebugとReleaseのリンカスクリプトを使用しました。
-> ENTRY(ResetISR)をENTRY(_start)に変更しました。
-> STARTUP(start.o)を追加しました。
-> __bss_start, __bss_endを追加しました。
-> __idata_start, __idata_end, __data_startを追加しました。
-> init_hook関数をPROVIDEで追加しました。
-> .isr_vectorを.vectorに名称を変更しました。
* kernel/target/lpc1768_generic_gcc/Makefile.targetに以下を追加しました。
-> CDEFS=-DDEBUG -D__CODE_RED -D__REDLIB__
* Makefileで生成されるオブジェクトの名称を変更しました。
* Makefileで生成されるオブジェクトの拡張子を変更しました。
LPCXpressoのプロジェクトに対しては以下の変更を行っています。
* Debug ConfigurationsのDebuggerタブでStop on startup at: main_taskに変更しました。
* Debug ConfigurationsのDebuggerタブでVector catch: Trueに変更しました。
* PropertiesのC/C++ BuildでGenerate Makefiles automaticallyのチェックを外しました。これによりLPCXpressoは外部Makefileを参照するようになります。
* PropertiesのC/C++ BuildでBuild directoryからDebugとReleaseを削除しました。
これによりプロジェクトのルートディレクトリを参照する形になりMakefileとの整合性が確保されます。
= 使い方 =
Linux上のLPCXpressoで使用できます。
ダウンロードしたzipファイルは展開せずにLPCXpressoの「Import Example project(s)」で使用します。
Browseボタンを押してダウンロードしたzipファイルを選択します。
Nextボタンを押すとzipファイル内にあるプロジェクトが表示されます。
Finishボタンを押すとワークスペースにプロジェクトがインポートされます。
インポートができたらLPCXpresso上でビルドして下さい。
場合によって、コンフィギュレータのビルドが必要かもしれません。
展開したディレクトリのトップにconfigureがありますので、それを実行して下さい。
ビルドが完了したらDebug 'TOPPERS-ASP_LPCXpresso-LPC1768'でデバッグできます。
Debugを選択してOKボタンを押してください。
以下のようにmain_taskで実行が停止すると思います。
ここまで来れば色んな事がIDE上で楽しめるようになっています。
RunメニューからResumeを選択してみて下さい。
LPCXpresso上のLEDがチカチカ点滅すると思います。
次にRunメニューからSuspendを選択して下さい。
実行が停止し、停止した箇所のソースコードが表示されます。
Disassemblyパネルを見ればC言語のソースとアセンブラの両方を確認しながらデバッグできます。
また、RTOS関連では欠かせないCPUレジスタも以下のように簡単に確認することができます。
上記のようにLPCXpresso購入後、今回のTOPPERS/ASP on LPCXpresso LPC1768のzipファイルをダウンロードするだけで、TOPPERS/ASPのアプリケーション開発を体験することができます。
IDE上でソースコードを見ながらResume, Suspendなど便利な機能が使用できる点も見逃せません。
皆さんご存知のとおりLPCXpressoを購入することで使用できるLPCXpresso IDEはコードサイズ128KBの制限があります。
しかしながら、手軽にRTOSを楽しむことのできる環境を構築できることを考えると、なかなか優れた投資効果が得られると言えるのではないでしょうか。
= ダウンロード =
このファイルを使ったことによる如何なる結果も当方では責任を負えませんので、この点を御了承頂いた上で御利用下さい。
ファイルのダウンロード:こちらをクリック
(今後バージョン管理システムへの移行を考えています。)
= 最後に =
今回の対応は既存のTOPPERS/ASPのビルドの枠組みを超えない形で行ないました。
本来であれば、LPCXpresso上のプリビルドやポストビルドを駆使してカーネルに
対するコンフィギュレーションなどを行うのが筋ですが、先に述べたとおり早めの
公開を目指して割愛したものです。
もし、何かシンプルな方法でコンフィギュレータまでを包括的に処理させることが
できる方法を思いついた場合、是非ご一報頂ければと思います。
= お勧め書籍 =
今回の対応作業で参考にさせて頂いた書籍を紹介します。
* 起動プログラム ブート・ローダ入門
邑中雅樹さんの「TOPPERSで学ぶuITRONのブート・シーケンス」は必携です。
* uITRON準拠 TOPPERSの実践活用
邑中雅樹さんの「TOPPERS/JSPのよりどころとなっているuITRON4.0仕様」にある本文とコラムを楽しく拝見しました。
高田広章さん(というか先生!)の「TOPPERSプロジェクトの概要と展開」にある本文とコラムを楽しく拝見しました。
邑中雅樹さんの「XScaleへのデバイス・ドライバの移植とカーネル移植の完了」にある本文とコラムを楽しく拝見しました。
中村健真さんの「Blackfin DSPへの移植」にある本文とコラムを楽しく拝見しました。
* ARM Cortex-M3 システム開発ガイド
レジスタに関する詳細説明を日本語で楽しむことができます。
2011年2月20日日曜日
LPCXpressoを切り離さないで賢く使う方法
各所で話題の格安Cortex-M3開発用ボードLPCXpressoシリーズですが、著名なブロガーの方々がデバッガ(LPC-LINK)とターゲットをザクザク切り離しているものですから、皆さんも切り離したくなる衝動を抑えられないのではないでしょうか?
私も同じように切り離しては「あれがない」、「これがない」と騒いでいました。
http://shinta-main-jp.blogspot.com/2010/12/lpcxpresso-lpc1768.html
http://shinta-main-jp.blogspot.com/2010/12/lpcxpresso-lpc1768jtagkey2popenocd.html
先日の記事でもUARTを手軽に使いたかったのですが、やはり切り離しただけの基板では「UARTがない!」病になり、ちょっと異なるアプローチが良いのではないだろうか?との考えに至りました。
そもそもニーズとして
* デバッガは自分が使いたいものを使いたい。(でも、たまにLPC-LINK使うかも。)
* UARTをわざわざ接続しなくてもあるじゃん。(LPC-LINKの経路使えばさ・・・。)
* 1つの基板だったものが2つの基板になっちゃってポータビリティ落ちてない?(あ、切り離す人はLPC-LINKは捨てるのか?)
など、切り離したくないシチュエーションも考えられるわけです.
上記のような優柔不断な感じは開発環境を選択する過程では十分に起こり得る話です。
今回ご紹介するアプローチはこういった選択に迷っている段階で役立つものです。
まず、LPCXpressoのデバッガとターゲットの間にある半田をハンダゴテと半田吸い取り線を使って取り除きます。
取り除いたら念の為テスタで絶縁状態になっていることを確認して下さい。
次に2x8のピンヘッダを取り付けます。
LPC-LINKとターゲットを接続するには以下のようにジャンパを接続するだけで済みます。
接続しているジャンパを取り外せばLPC-LINKとターゲットを分離することができます。
例えば、ターゲットに自分の好きなデバッガを接続したり、LPC-LINKから別のターゲットに接続することも可能です。
切断することを考えた場合、この2.54mmの間隔を綺麗に切断するのは意外に手間がかかります。
切断することを考えて設計したのではなく、上記のようにピンヘッダを取り付けるための設計と考えるとなんとなく合点がいきそうだとも思いました。
真相は是非聴いてみたいところですね。
私も同じように切り離しては「あれがない」、「これがない」と騒いでいました。
http://shinta-main-jp.blogspot.com/2010/12/lpcxpresso-lpc1768.html
http://shinta-main-jp.blogspot.com/2010/12/lpcxpresso-lpc1768jtagkey2popenocd.html
先日の記事でもUARTを手軽に使いたかったのですが、やはり切り離しただけの基板では「UARTがない!」病になり、ちょっと異なるアプローチが良いのではないだろうか?との考えに至りました。
そもそもニーズとして
* デバッガは自分が使いたいものを使いたい。(でも、たまにLPC-LINK使うかも。)
* UARTをわざわざ接続しなくてもあるじゃん。(LPC-LINKの経路使えばさ・・・。)
* 1つの基板だったものが2つの基板になっちゃってポータビリティ落ちてない?(あ、切り離す人はLPC-LINKは捨てるのか?)
など、切り離したくないシチュエーションも考えられるわけです.
上記のような優柔不断な感じは開発環境を選択する過程では十分に起こり得る話です。
今回ご紹介するアプローチはこういった選択に迷っている段階で役立つものです。
まず、LPCXpressoのデバッガとターゲットの間にある半田をハンダゴテと半田吸い取り線を使って取り除きます。
取り除いたら念の為テスタで絶縁状態になっていることを確認して下さい。
次に2x8のピンヘッダを取り付けます。
LPC-LINKとターゲットを接続するには以下のようにジャンパを接続するだけで済みます。
接続しているジャンパを取り外せばLPC-LINKとターゲットを分離することができます。
例えば、ターゲットに自分の好きなデバッガを接続したり、LPC-LINKから別のターゲットに接続することも可能です。
切断することを考えた場合、この2.54mmの間隔を綺麗に切断するのは意外に手間がかかります。
切断することを考えて設計したのではなく、上記のようにピンヘッダを取り付けるための設計と考えるとなんとなく合点がいきそうだとも思いました。
真相は是非聴いてみたいところですね。
2011年1月23日日曜日
LPCXpresso LPC1768とLPCXpresso LPC1769の比較写真
本日は写真だけ。
その他に特に変更はありませんが、Produced by Embedded Artistsと新たにシルクが加わっています。
基板色が若干異なりますね。
この兄弟は今年もARMマイコンの世界を広げてくれるでしょう。
LPCXpresso LPC1768 REV Aで水晶振動子が垂直に実装されていて、今にもとれそうだった問題が解決されています。基板名はLPCXpresso LPC1769 REV Bとなりました。
その他に特に変更はありませんが、Produced by Embedded Artistsと新たにシルクが加わっています。
基板色が若干異なりますね。
この兄弟は今年もARMマイコンの世界を広げてくれるでしょう。
ラベル:
LPCXpresso LPC1769,
NXP
登録:
コメント (Atom)