みなさん、こんにちは!富士通コンピュータテクノロジーズのあさばてっぺいです!Linux関連の初心者講座を連載していましたが、なんと今回は会社の仲間と一緒にNXPさんのデュアルコアマイコンの連載をスタートすることになりました!これからよろしくお願いしますね!
はじめに
さまざまな組み込みシステムで使用されるマイクロコントローラのパフォーマンスを上げる手段として、従来は安易に動作速度を上げる手法が使われてきました。しかし、動作速度を上げると消費電力(発熱)とデバイス単体のコストの問題が浮上してきます。そこで、最近では、マルチコアという手法が取り入れられるようになりました。マルチコアは、システムのタスクを各コアで分担することにより、消費電力による発熱を回避したり、逆に協力しあって、ハイパフォーマンスを実現することができます。実際の現場は、すでにデュアルコアやクアッドコアなど、2つ以上のCPUで、複数の処理を並行して実行するマルチコアの手法が進んでいます。
今回APSでは、初めての方でも簡単にマルチコア技術を体感いただける講座として、NXP Semiconductors社のデュアルコア搭載マイコン「i.MX RT1170」を実際に動かすデモをご紹介します。
デュアルコアマイコン「i.MX RT1170」とは?
i.MX RT1170クロスオーバーMCUは、マイコンでありながらプロセッサに迫る高い演算性能と豊富な機能を誇るi.MX RTシリーズの中でフラグシップとなる製品です。メイン・コアはArm® Cortex®-M7コアで最大1GHzと汎用マイコンで初めてGHz動作を実現しています。また、サブ・コアとして400MHz動作のCortex-M4コアを搭載しており、ユースケースに応じて柔軟にCPUコアの使い分けを可能とします。
NXPではi.MX RTシリーズを含むArmコアのマイコン製品群に対して、MCUXpressoというソフトウェア開発スイートを無償で提供しています。MCUXpressoは、統合開発環境(MCUXpresso IDE)、RTOSや各種ドライバやミドルウェアを含むSDK(MCUXpresso SDK)、ピン配置や内部クロックの設定をGUIで行えるコンフィグレーションツール(MCUXpresso Config Tools)、暗号化やセキュアブート等をサポートするプロビジョニングツール(MCUXpresso Secure Provisioning Tool)にて構成されています。
ソフトウェアの導入
MCUXpressoのダウンロード
まずはMCUXpressoで必要となるソフトのダウンロードを行いましょう
※My NXPへの登録が必要です
MCUXpresso SDK(MIMXRT1170-EVK向け)
Host OSが合っていることを確認して、Select Allを選択して、ダウンロードしましょう。
これは最新版(Current)を選んで、環境にあったものをダウンロードしましょう。
MCUXpressoのインストールとセットアップ
最初にMCUXpressoをインストールしましょう
インストール中にデバイスドライバのインストールが行われるので、セキュリティ警告ダイアログが出ますが、続行してください。
次にMCUXpressoを立ち上げ、MCUXpressoにMCUXpresso SDKを登録します
MCUXpressoを立ち上げると、まずMCUXpressoの画面と、Windowsファイヤーウォールの画面が出ます。これはMCUXpressoが内部的に利用している通信に対するブロックなので、アクセスを許可してください。
MCUXpressoを立ち上げると、次のスタートアップ画面が出ます
左上のウィンドウのアイコンを押して、スタートアップ画面の全画面表示を解除しましょう。
そうすると、MCUXpressoのメイン画面が表示されます
このInstalled SDKのところに、MCUXpresso SDKでダウンロードしたファイルをドラッグアンドドロップすると、SDKを登録するかが聞かれてセットアップされます。
ボードの操作に必要なソフトのインストール
次にボードの操作に必要となるソフトを入れましょう
- MCU UART Driver
- シリアルポートのターミナルソフト
Tera Term等、お好みのソフトをいれてね
詳細について知りたい方は ”Get Started with the i.MX RT1170”の”2. Get Software”を読んでね!
MCUXpresso を用いた開発
ボードを動かす準備
ボードのセットアップ
- まず、PCとボードをUSBケーブルで接続します
- 次にディップスイッチ(SW1)の設定を確認します
ターミナルソフトを立ち上げてシリアルポートに接続しよう
- ターミナルソフト(Tera Term等)を起動し、以下の設定にします
- ボーレート(通信速度):115200bps
- データ長:8bit
- パリティビット:パリティ無し
サンプルプロジェクトの取り込み
File -> New から 「Import SDK Examples」を選択します
i.MX RT1170のSDKがインストールされていると一覧に評価ボードが出るので選択して Next を押します
サンプルプロジェクトの「multicore_examples」から [hello_world_cm7:Linked to: hello_world_cm4;] を選択します。選択すると、マルチコアプロジェクトとして紐づけられている [hello_world_cm4] にも自動でチェックが入ります。
プロジェクトに、CM7側のプロジェクトとCM4側のプロジェクトが追加されます。
サンプルプロジェクトのビルド
CM7側のプロジェクトを選択し、Project メニューから Build All 選択するとビルドがはじまります。
同時にCM4側のビルドも実行されます。
プロジェクト一覧の [>] をクリックして中を確認します。Binaries に、CM7、CM4 双方ともにaxfファイルが生成されていることを確認します。
実行とデバッグ
ビルドが完了したら、CM7側のプロジェクトを選択した状態で、Debug 開始をクリックすると評価ボードでのデバッグが始まります。
デバッグ開始の際に、デバッガ接続について確認のダイアログボックスがでるので、OKを押してください。
※2回目からは聞かれません
今回はマルチコアデバッグですので、もう一方のコアへの接続も聞かれるのでこちらも「OK」を押して進んでください。
※2回目からは聞かれません
Debug タブに、CM7とCM4のデバッグ状態を表す表示が並びます。
マスターであるCM7側の main 関数先頭でブレークがかかった状態で待機しています。
上部にあるメニューからプログラムの開始や一時停止を行うことができます。
レジュームを押し、停止しているCM7のプログラムをスタートさせます。
同じようなボタンが右側にもありますが、こちらはすべてのコアを同時に停止させたり再開するときに利用します。
Tera Term などのシリアルコンソールを開き、評価ボードと接続している状態でプログラムをスタートさせると、プライマリ側であるCM7がスタートしたメッセージと、セカンダリ側のCM4をスタートさせたことを知らせるメッセージがでます。
CM4側がスタートさせられると、CM4側プログラムのmain関数先頭でブレークがかかります。
CM4側もレジュームボダンを押してスタートさせると、セカンダリコアのアプリが開始されたことを示すメッセージがシリアルコンソールに出力されます。
また、評価ボード上の中央下部にあるLED(緑)が点滅を開始します。
両方のコアが動いた状態だと、Debugタブの Thread は両コアともに Running となります。
Suspend All Debug sessions ボタンを押すと、両コアともにブレークがかかります。その近くにある Resume All Debug sessions ボタンを押すと両コアとも再開します。
任意のコア側のみを停止させることも可能です。停止したいコア側のThreadを選択した状態で、Suspend ボタンを押してください。
片側のコアのみ停止させることができます。
今回のサンプルプログラムでは、CM4側でボード上の LED(緑)の点滅を制御しています。
CM7側だけを停止させてもCM4側は動作しているので、片方のコアは動作したままであることを目で見て確認することができます。
以下に動画も用意しましたので、是非こちらも見てみてください。
M7側も動作状況が目でみてわかるように、本文内で利用していたサンプルプロジェクトのM7側プログラムに手を加えています。
※ループ部分にシリアルへ文字列を一定間隔で送信する処理を追加
まとめ
今回は初回ということで、MCUXpressoで必要となるソフトのダウンロードからセットアップまでを行い、ボードをセットアップしてサンプルプログラムを動かしてみました。ビルド〜実行〜デバッグも非常にスムーズに動かすことができましたね。次回は機械学習(ML)を実行させるまでの手順と性能をサンプルプログラムで紹介したいと思っています。お楽しみに!
i.MX RT1170 EVK
i.MX RT1170 EVKは、高性能なソリューションを高集積基板で提供します。低コストで優れたEMC性能を実現するスルーホール設計の6層PCBで構成され、主要なコンポーネントとインターフェースを搭載しています。
最新情報をメーカーサイトで見る
組み込みLinux導入/開発支援サービス
組込みLinuxによりお客様の装置開発に新たな価値を提供します。
富士通コンピュータテクノロジーズ
こちらも是非
“もっと見る” マルチコア|i.MX RT1170編
GUI Guiderを使って質の高いGUIをササッと作ってみよう
今回はNXP社から提供されている開発ツールの一つである「Gui-Guider」を使用して、質の高いGUI(グラフィカルユーザーインタフェース)を簡単に作成してみたいと思います。簡単なインタフェースであれば、コーディングを行うことなくGUIを作成することもできます。
マイコンで機械学習(Machine Learning)をやってみよう
今回はNXP社から提供されている機械学習ソフトウェア開発環境「eIQ」を使って、機械学習を行ってみたいと思います。ツールのダウンロードからセットアップ、サンプルプロジェクトの動かし方まで紹介していますので、是非お手元でも試してみてください。