Low-Power Application Kit (Oryx)のApplication Kitのライブラリの一部は最新のMCUXpressoでコンパイルしようとするとエラーでコンパイルできません。問題が発生するのは、3軸加速度センサーとRTC(リアルタイムクロック)のライブラリです。そこでこれらのソースを修正します。
MCUXpressoIDEを起動したら、左側のWorkspaceの中にある"lib_OryxDev"を開いて"inc"の下にある"adxl345.h"をダブルクリックします。
ファイルが開きますので、470行と471行を以下のように変更します。修正後、念のためにCtrl+Sでセーブしておきましょう。
extern volatile uint8_t accelFlag;
extern volatile uint8_t accelIrqSrc;
続いてWorkspaceの"inc"中の"pcf8523.h"をダブルクリックして開きます。
55行を以下のように変更してセーブます。
extern volatile uint8_t rtcFlag;
次に"src"の中の"adxl345.c"を開きます。
43行目に以下の2行を追加してセーブます。
volatile uint8_t accelFlag;
volatile uint8_t accelIrqSrc;
さらに"pcf8523.c"を開き、48行に1行追加してセーブます。
volatile uint8_t rtcFlag;
Workspaceの"CMSISv2p00_LPC11Uxx"と"Lib_LPC11U14Dev"を開きます。
"CMSISv2p00_LPC11Uxx"を右クリックしてメニューを出します。
メニューの"Build Project"を実行します。続いて"Lib_LPC11U14Dev"も右クリックして"Build Project"を実行します。最後に"lib_OryxDev "を右クリックして"Build Project"を実行します。
これでライブラリの修正は終了です。ここで一旦開いたライブラリは右クリックのメニューの"Close Project"で閉じておきましょう。
それでは確認のためデモプログラムをコンパイルしてみます。
Workspacの"DemoApp"を開きます。
参照するライブラリを開くか確認してくるので"Yes"を選びます。
次に"DemoApp"を右クリックして"Build Project"を実行するとコンパイルが開始されます。コンパイル後、前回行ったようにボードをPCに接続して、スイッチを押してブートロードモードにしたら"GUI Flash Tool"アイコンをクリックしてボードのフラッシュメモリに書き込みます。なにも問題がなければデモが開始されるはずです。
他のデモプログラムも同じようにコンパイルできるはずです。(ただし、USB_HIDのデモはインライン命令でエラーになってコンパイルできません。面倒なので詳しくは調べていません。)デモの中にはフラッシュ書き込み後にエラーになってしまうものがありますが、そのときはmain.cのmainのすぐ初めにある、
LPC_SYSCON->PDRUNCFG |= (SYS_OSC_PD);
という行をコメントアウトするとエラーが出なくなります。理由はよく分かりません。まだ、このボードの詳細を把握してないからです。
とにかくこれで開発環境が整いました。このボードはSDK Builderでサポートされていないようなので、MCUXpressoのSDKは作れません。いま分かっている限りでは、インポートしたApplication Kit内のライブラリが開発環境の全てです。詳細を知るにはソースを読むしかないでしょう。まあ、自分的には液晶表示とタッチセンサーだけ使えればいいと思っているのでこの環境で満足ですが。
では、今度は自分で作ったプログラムをボードに書き込んでみます。
まず、左下の"▼Create or import a project"にある"Create a new c/c++ project..."を選びます。
ボード選択画面になりますが、当然サポートされていないので一番近そうなLPC11U37/401を選びます。
デモプログラムはLPC11U37/501になっていましたが、ボード上のチップにはLPC11U37F/401と書いてあったのでこちらを選択してみました。
続いて"Next>"を選び、次の画面で"C Project"を選びます。デモプログラムがCだったのでこれが無難でしょう。
更に"Next>"でプロジェクト名入力画面になるので、"HelloWorld"と入力してみました。
この後も色々聞かれますが、全てデフォルトのまま進めて最後に"Finish"を押します。
Workspaceに"HelloWorld"プロジェクトが作成されたら開いて右クリックでメニューを出し、"Properties"をクリックします。"C/C++ General"の"Paths and Symbols"でインクルードファイルやライブラリなどのパス設定を行います。設定が必要なのはIncludes、LIbraries、Library Pathsです。
インクルードパスの設定は面倒なので、サンプルプログラムの"Paths and Symbols"から"Export Setteings..."でファイルにエクスポートしてから自分のプロジェクトの"Import Settings..."で読み込むといいでしょう。
Library PathsとLIbrariesはインポート・エクスポートが無いのでデモプログラムの設定をコピペするなりして入力しましょう。入力が終わったら"Apply and Close"ボタンで保存します。本来は必要なライブラリだけ設定しておけばいいのですが、仕様がよくわかっていないので全部リンク出来るようにしておいた方が間違いないでしょう。
念のため、空のプロジェクトをビルドしてみましょう。エラーが出たら設定が間違っている可能性があります。ライブラリが見つからないようならライブラリファイルがない可能性もあります。その時は設定した3つのライブラリのプロジェクトをそれぞれ右クリックしてビルドし、ライブラリファイルを作成します。
これでやっとプログラムを書けます。"HelloWorld"プロジェクト内の"src"の"main.c"を開いてプログラムを記述します。以下に作成した簡単なプロクラムを貼っておきます。
高度なことも出来るボードですが、このボードはお手軽な感じで使っていこうと思ってます。タッチセンサーと液晶でポケットステーションのソフトみたいなものを作るのが似合っていそうです。
最後にタッチセンサーを使ったソフトを作ってみました。タッチセンサーの0~3を押すと液晶表示が変わるプログラムです。簡単なプログラムですが各デバイスの初期化ルーチンも入れてあるので、これをひな型にしてなにか作るのもいいでしょう。
ChangeImage.zip (クリックしてウィンドウが開いたら右上のダウンロードボタンを押してください)
ダウンロードしたアーカイブは解凍せずに"▼Create or import a project"の"import project(s) from file system..."からインポートしてください。
※コメント投稿者のブログIDはブログ作成者のみに通知されます