本連載では、小学生向きのプログラミング教育などに使われているBBC micro:bit(以下、micro:bit)の上で動くようになったµT-Kernel 3.0を紹介している。連載第2回の本稿では、開発用のPCにµT-Kernel 3.0の開発用ツールを準備するとともに、micro:bit用µT-Kernel 3.0のソースコードの入手からコンパイルまでを行う。
トロンフォーラムから公開している最新版のリアルタイムOSがµT-Kernel 3.0である。µT-Kernelは、多くの組込み機器に採用実績のあるT-Kernelから派生する形で生まれた小規模システム向けのリアルタイムOSであり、シングルチップマイコンなどROMやRAMの容量が限られた環境や16ビットCPUでの利用を想定している。µT-Kernelのバージョンアップ版であるµT-Kernel 2.0の仕様は、IEEEの定めるIoTエッジノード向け世界標準OSの仕様「IEEE 2050-2018」(*1) のベースとなった。さらに、「IEEE 2050-2018」で定められた仕様を取り入れつつ再度のバージョンアップを行う形でµT-Kernel 3.0が誕生した。µT-Kernel 3.0の特長や開発の経緯については、トロンフォーラムのリアルタイムOS入門の記事(*2) に詳しい説明がある。
µT-Kernel 3.0ではOSの仕様のみを定めており、ソースコードは開発者が自由に実装してよい。トロンフォーラムでは、µT-Kernel 3.0の実装例の一つとして、Arm Cortex-M3/M4、ルネサスRX231などに対応したµT-Kernel 3.0のソースコードを開発し、GitHubに公開した(*3) 。また、各種の開発評価ボードで動作するµT-Kernel 3.0 BSP(Board Support Package)のソースコードについても、GitHubに公開中である(*4) 。今回の連載では、µT-Kernel 3.0 BSPのソースコードをmicro:bitに移植した。
micro:bit(V2の場合)のCPUはNordic SemiconductorのnRF52833(Arm Cortex-M4コア、ARMv7-Mアーキテクチャ)である。したがって、同じCPUコアを持つSTマイクロエレクトロニクスのSTM32L486VGを搭載したSTM32L4 IoT-Engine向けのµT-Kernel 3.0のソースコードをベースに、メモリマップや割込み関連処理などのハードウェア依存部分を変更して移植作業を行った。具体的な移植作業の詳細については本稿で述べないが、実際の移植作業や変更箇所に関して技術的な興味がある方は、micro:bit用µT-Kernel 3.0のソースコードに付属している実装仕様書や、移植後のソースコードをご覧いただきたい。micro:bit用のソースコードの入手方法については後述する。
micro:bitに移植されたµT-Kernel 3.0を、実際に動かしてみよう。そのための大まかな手順は以下のとおりである。
(1) Eclipseのインストール
(2) GNU Arm Embedded Toolchainのインストール
(3) xPack Windows Build Toolsのインストール
(4) PythonとpyOCDのインストール
(5) micro:bit用µT-Kernel 3.0のソースコードの入手と展開
(6) EclipseにµT-Kernel 3.0のプロジェクトを作成
(7) Eclipseの操作によるコンパイルとビルド
(8) micro:bitのFlash ROMの消去
(9) 端末ソフトの起動とmicro:bit実機への接続
(10)デバッグ実行用のEclipseの設定
(11) micro:bit実機での実行
micro:bitはごく小規模なコンピュータであり、この上で動くソフトウェアのプログラム開発にはmicro:bitとは別のPCを利用する。プログラム開発用のPCを「開発用ホストPC」、あるいは単に「ホスト」とよび、micro:bit用のプログラムの作成、編集、コンパイルなどの作業はすべてこのホスト上で行う。これに対して、ホスト上で開発したプログラムを実行するmicro:bitのほうを「ターゲット」とよぶ。実際にプログラムを実行する機器という意味で、ターゲットを「実機」とよぶこともある。
ターゲット(実機)とホストが別のコンピュータである開発スタイルを「クロス開発」とよんでおり、micro:bitのプログラム開発もクロス開発である。一般に、IoTエッジノードや組込みシステムの開発はクロス開発になる場合が多い。一方、ターゲットとホストが同じコンピュータとなる開発スタイルは「セルフ開発」とよばれる。WindowsやLinuxのPC上で開発したプログラムを同じPC上で実行する場合はセルフ開発である。
micro:bitではクロス開発を行うので、開発用ホストPCとしてWindows PCを使用し、このPCに開発用ツール(表1)をインストールする。以下では、Windows 11を使用した場合の手順を紹介している。Windowsを操作する際のユーザ名(ユーザフォルダ名)は “user01” である。
名 称 | 説 明 | URL | |
---|---|---|---|
A | Eclipse IDE for Embedded C/C++ Developers | GUI画面からソースコードの作成や編集、コンパイル、デバッグなどを行う統合開発環境 | https://www.eclipse.org/downloads/packages/release/2022-03/r/eclipse-ide-embedded-cc-developers |
B | GNU Arm Embedded Toolchain | Armマイコンを使った組込み開発用のGNU Cコンパイラおよび関連ツール一式 | https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads |
C | xPack Windows Build Tools | プログラムの構築(ビルド)のためのWindows用のツール一式 | https://github.com/xpack-dev-tools/windows-build-tools-xpack/releases |
D | Python | プログラミング言語Pythonの言語処理系 | https://www.python.org/downloads/ |
E | pyOCD | Python上で動作するArmマイコン用のデバッグツール | (Pythonからインストール) |
F | micro:bit用µT-Kernel 3.0 | ソースコード一式(パスワード付きZIPファイル) | https://www.personal-media.co.jp/book/tw/tw_index/362.html |
ところで、前号のTRONWARE VOL.195にもµT-Kernel 3.0の開発用ツールを説明した記事(*5) がある。同じµT-Kernel 3.0の開発であり、使用する開発ツールの一部も共通であるが、メインで使用する統合開発環境が異なっている。すなわち、前号記事ではVisual Studio Codeを使っているのに対して、こちらの記事ではEclipseを使う。µT-Kernel 3.0のソースコードは特定の開発環境に依存しない設計となっているため、EclipseやVisual Studio Codeのほか、半導体メーカーの提供する統合開発環境を利用することもできる。
なお、誌面の都合により、本号の連載第2回では[Step-2]のコンパイルまでを説明する。micro:bitの実機でµT-Kernel 3.0を実行する[Step-3]については、次号の連載第3回までお待ちいただきたい。
まず、micro:bit用µT-Kernel 3.0の開発用ツールを、ホストとなるWindows PCにインストールする。具体的な手順は以下のとおりである。なお、ご利用のPCなどの環境や開発用ツールのバージョンの違いにより、画面やメッセージ、ファイル名などの細部は異なる場合があるので、適宜読み替えていただきたい。
統合開発環境として、Eclipse IDE for Embedded C/C++ Developersを使用する。表1のA行のURLの画面を開き、「Windows x86_64」のリンクをクリックする(図1)。リンク先のダウンロード画面から、Windows用のEclipseをダウンロードする(図2)。ダウンロードされたファイルeclipse-embedcpp-2022-03-R-win32-x86_64.zipに対して、Windowsの右クリックメニューの「すべて展開」を使って解凍するが、このときの展開先フォルダには “C:¥” を指定する。展開先フォルダが初期値のままの場合、展開後のパス名が長くなりすぎてエラーが出ることがあるからだ。展開するとEclipseの実行ファイル “C:¥eclipse¥eclipse.exe” ができるので、後で Eclipse を実行するときのために、Windowsのデスクトップ上にこのファイルへのショートカットを作っておく。
統合開発環境のEclipseは、GUI画面からコンパイラやデバッガを呼び出すためのランチャであり、コンパイラやデバッガの実際の処理を行うプログラムは別に必要である。そのために使用するのがGNU Arm Embedded Toolchainである。GNU C/C++コンパイラのgccやデバッガのgdb、binutilsとよばれる関連ツール類、ライブラリなどの機能を含んでいる。
インストールするには、表1のB行のURLの画面を開いて下のほうにスクロールし、Downloads: 10.3-2021.10の中にあるgcc-arm-none-eabi-10.3-2021.10-win32.exeをクリックしてダウンロードする(図3)。ダウンロードしたexeファイルをダブルクリックして実行し、GNU Arm Embedded Toolchainのインストールを行う。「このアプリがデバイスに変更を加えることを許可しますか」というユーザアカウント制御の画面が出るので、「はい」をクリックする。続いて使用言語を選択する画面が出るので、Japaneseなど適切なものを選ぶ。すると、セットアップウィザードが出るので、画面の指示に従ってインストールを進める(図4)。最後の画面では、「Add path to environment variable」にチェックを入れ、環境変数PATHを設定する(図5)。この措置により、コマンドプロンプトの画面からgccやgdb(コマンド名としてはarm-none-eabi-gccやarm-none-eabi-gdbとなる)が実行できるようになる。
次に、プログラムのビルド(オブジェクトコードの構築)を行うために、コンパイラやリンカなどを呼び出して実行するためのビルドツールであるxPack Windows Build Toolsをインストールする。ビルドツールの主な中身は、古くからUNIXなどの開発用OSで使用されてきたmakeとよばれるコマンドである。makeコマンドは、ソースコードの更新の有無をファイルのタイムスタンプを見て判断し、更新されたソースコードのみを再コンパイルするといった機能を持つ。開発ツールの一部ともいえるが、WindowsでGNU Arm Embedded Toolchainを使う場合は、makeコマンドに相当するビルドツールを別に用意する必要がある。今回の開発環境のシステム構成では、Eclipseの画面操作によってこのビルドツール(make)が呼び出され、ビルドツールの中からコンパイラ(gcc)が呼び出されるという関係になる。
表1のC行のURLの画面を開き、xpack-windows-build-tools-4.3.0-1-win32-x64.zipのリンクをクリックしてダウンロードし(図6)、Windowsの右クリックメニューの「すべて展開」を使ってこのファイルを解凍する。展開先フォルダには “C:¥Program Files”を指定し、このフォルダの下にビルドツールの実行用ファイルをインストールする。
続いて、インストールしたビルドツールのコマンドがコマンドプロンプトの画面から実行できるように、ユーザ環境変数のPathにビルドツールのパス(実行用ファイルを入れたフォルダのパス)を追加する。具体的な操作としては、Windowsの検索窓に「環境変数」と入力すると(図7①)、「環境変数を編集」という選択肢が出るので(図7②)、この項目をクリックして環境変数の設定画面(図8)を表示する。画面上半分にあるユーザ環境変数の中の「Path」をクリックして選択し(図8①)、「編集」ボタンをクリックすると(図8②)、ユーザ環境変数Pathの編集画面(図9)が表示される。この画面の「新規」のボタンをクリックすると(図9①)、最終行の次の行への追加入力が可能になるので、ビルドツールのパスである“C:¥Program Files¥xpack-windows-build-tools-4.3.0-1¥bin”を入力してから(図9②)、「OK」をクリックする。環境変数の設定画面(図8)についても「OK」をクリックして設定を完了する。
環境変数Pathに設定されたパス(フォルダ)の下にある実行ファイルは、コマンドプロンプトの画面において、フォルダ内のファイル名を指定するだけで実行できるようになる。たとえば、上記によりインストールされたmakeコマンドの実行ファイルはC:¥Program File¥xpack-windows-build-tools-4.3.0-1¥bin¥make.exeであるが、これがmakeあるいはmake.exeというコマンドとして実行できるようになる。ただし、環境変数Pathの設定変更を反映するには、Windowsを再起動する必要がある。再起動後にコマンドプロンプトの画面を開くと、ビルドツールに含まれていたmakeやcpなどのコマンドが実行可能になっている。
今回の場合、コマンドプロンプトの画面からこれらのコマンドを実行するわけではないが、Eclipseからmakeなどのビルドツールを呼び出して実行するためにも、環境変数Pathをこのように設定しておく必要がある。
最後に、
Pythonの言語処理系をインストールするには、表1のD行のURLの画面を開き、「Download Python 3.10.5」のボタンをクリックしてダウンロードする(図10)。ダウンロードしたexeファイルをダブルクリックするとPythonのインストール画面が出るので(図11)、一番下の「Add Python 3.10 to PATH」にチェックを入れてから(図11①)、「Install Now」の部分をクリックする(図11②)。インストールが始まり、手順(2)のときと同じように「このアプリがデバイスに変更を加えることを許可しますか」というユーザアカウント制御の画面が出るので、「はい」をクリックする。インストールが進行し、数分でインストール完了を示すSetup was succssfulの画面が出るので、「close」をクリックして閉じる。
続いてpyOCDをインストールするが、そのためには、上記でインストールしたPythonを使う。コマンドプロンプトの画面からpythonを実行するのだが、その前にWindowsを再起動して、pythonコマンドを実行するための環境変数Pathの更新を反映しておく必要がある。再起動後のコマンドプロンプトの画面で以下のコマンドを入力すると、pyOCDのインストールが始まる。
python -mpip install -U pyocd |
経過を示すメッセージが多数表示され(図12)、2-3分でインストールが完了する。コマンドプロンプトの画面で“pyocd”と入力し、ヘルプメッセージが表示されれば(図13)、正しくインストールされていることを確認できる。
次に、micro:bitで動作するµT-Kernel 3.0のソースコードを入手してEclipseに入れ、Eclipseの画面操作によりコンパイル、ビルドを行ってオブジェクトコードを生成する。
micro:bit用µT-Kernel 3.0のソースコードは、本誌TRONWARE VOL.196のダウンロードページからパスワード付きのZIPファイルで公開している。開発用ホストPCのブラウザを使って表1のF行のURLからこのZIPファイルをダウンロードし、Windowsの右クリックメニューの「すべて展開」で解凍する。解凍の際にはパスワードの入力が求められるので、本稿の最後に記載されたパスワードを入力する。展開先フォルダは任意でよいが、次のステップでは、Eclipseの中からその展開先フォルダを指定する。今回の実行例では、“C:¥mtk3¥mbit”というフォルダを作り、この中にmicro:bit用µT-Kernel 3.0のソースコードを展開した。
Eclipseを使ったプログラムの開発はプロジェクトという単位で管理される。そのため、まずはEclipse上にmicro:bit用µT-Kernel 3.0のプロジェクトを作成する。上記(1)でインストールしたEclipseを、Windowsのデスクトップ上に置いたショートカットのアイコンから起動する。初回の起動時には、Eclipseの各種設定などを保存するためのワークスペースのフォルダを指定する画面が表示される(図14)。通常は初期値のままでよく、次回以降の確認は不要なので、「Use this as the default and do not ask again」の欄にチェックを入れておく(図14①)。
ワークスペースとして利用するフォルダを確認した後に、「Launch」をクリックしてEclipseの起動を続ける(図14②)。初回の起動ではEclipseのWelcome画面(チュートリアル)が出る場合もあるが、Welcomeタブの「×」をクリックすると消える。起動直後の状態では、画面の内部には何も表示されていない(図15)。
µT-Kernel 3.0のプロジェクトを作成するために、左上のFileメニューから「Open Projects from File System...」を実行する。Import Projects from File System or Archiveの入力画面が出るので、Import sourceの入力欄に、先ほど展開したµT-Kernel 3.0のソースコードの中のmtkernel_3のフォルダのパスを入力する。今回の場合は“C:¥mtk3¥mbit¥mtkernel_3”を入力する。そのためには、入力欄の右側にある「Directory...」のボタンをクリックして(図16①)、PC内にある実際のフォルダを参照しながら、このフォルダのパスを設定すればよい。「Finish」をクリックして(図16②)、元のEclipseの画面に戻ると、画面左側のProject Explorerのペインにmtkernel_3が表示されているのが確認できる(図17)。なお、Project Explorerのペインが表示されていない場合は、上部のWindowメニューから「Show View」→「Project Explorer」を選択すると表示されるようになる。
Project Explorerのペインの「mtkernel_3」上にマウスポインタを置き(図18①)、右クリックメニューの「Build Project」を実行すると(図18②)、µT-Kernel 3.0のコンパイルとビルドが実行され、その状況を示す多数のログがConsoleのペインに表示される。最後に「Build Finished」と表示されるので、正常に終了したことを確認する(図19)。念のため、Consoleの画面のスクロールを戻し、コンパイルとビルドの途中経過も確認してみよう。上記(3)でインストールしたmakeや、(2)でインストールしたarm-none-eabi-gccなどが実行されていることが分かる(図20)。
µT-Kernel 3.0のコンパイルとビルドは、このように、メニューを1回選ぶだけの簡単な操作で終了する。
* * *
今回は、micro:bitでµT-Kernel 3.0を実行するための準備として、開発用ホストPCにEclipseやPython、GNU Cコンパイラ、関連ツール類のインストールを行った。また、micro:bit用µT-Kernel 3.0のソースコードを入手して、Eclipse上のプロジェクトに設定し、コンパイルとビルドを行った。
すでにお気づきかもしれないが、今回説明した開発ツール類のほとんどは汎用のものであり、µT-Kernelに依存する部分やmicro:bitに依存する部分は少ない。ArmコアのCPUを使った組込みシステムやIoTエッジノードのプログラムをEclipseを使って開発しようとすれば、今回の説明と似たような手順になる。逆に言えば、ここで説明した内容を理解しておけば、Armコアの他のCPUや他の評価ボード、他のリアルタイムOSや他の組込みシステムのプログラムを開発する際にも、参考になる部分が多いはずだ。
次回はいよいよ、Eclipseを使ってmicro:bit上のµT-Kernel 3.0を実行する。
■ micro:bit用µT-Kernel 3.0のソースコードのダウンロード |
---|
https://www.personal-media.co.jp/book/tw/tw_index/362.html
|