micro:bitでµT-Kernel 3.0を動かそう

目次に戻る

前回の連載記事に戻る

[第2回]開発ツールの準備とµT-Kernel 3.0のコンパイル

本連載では、小学生向きのプログラミング教育などに使われているBBC micro:bit(以下、micro:bit)の上で動くようになったµT-Kernel 3.0を紹介している。連載第2回の本稿では、開発用のPCにµT-Kernel 3.0の開発用ツールを準備するとともに、micro:bit用µT-Kernel 3.0のソースコードの入手からコンパイルまでを行う。

µT-Kernel 3.0をmicro:bitに移植

トロンフォーラムから公開している最新版のリアルタイム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を動かすまでの手順

micro:bitに移植されたµT-Kernel 3.0を、実際に動かしてみよう。そのための大まかな手順は以下のとおりである。

[Step-1]
µT-Kernel 3.0の開発用ツールの準備

(1) Eclipseのインストール
(2) GNU Arm Embedded Toolchainのインストール
(3) xPack Windows Build Toolsのインストール
(4) PythonとpyOCDのインストール

[Step-2]
µT-Kernel 3.0のコンパイル

(5) micro:bit用µT-Kernel 3.0のソースコードの入手と展開
(6) EclipseにµT-Kernel 3.0のプロジェクトを作成
(7) Eclipseの操作によるコンパイルとビルド

[Step-3]
micro:bit実機へのµT-Kernel 3.0の転送と実行

(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” である。

表1 使用する開発用ツールとソースコード
  名 称 説 明 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回までお待ちいただきたい。

[Step-1]開発用ツールの準備

まず、micro:bit用µT-Kernel 3.0の開発用ツールを、ホストとなるWindows PCにインストールする。具体的な手順は以下のとおりである。なお、ご利用のPCなどの環境や開発用ツールのバージョンの違いにより、画面やメッセージ、ファイル名などの細部は異なる場合があるので、適宜読み替えていただきたい。

(1) 統合開発環境Eclipseのインストール

統合開発環境として、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のデスクトップ上にこのファイルへのショートカットを作っておく。

            

図1 Eclipse IDE for Embedded C/C++ Developersのダウンロード画面
図1 Eclipse IDE for Embedded C/C++ Developersのダウンロード画面


            

図2 Windows x86_64用Eclipseのダウンロード画面
図2 Windows x86_64用Eclipseのダウンロード画面

(2) GNU Cコンパイラと関連ツールのインストール

統合開発環境の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となる)が実行できるようになる。

 

図3 GNU Arm Embedded Toolchainのダウンロード画面
図3 GNU Arm Embedded Toolchainのダウンロード画面


 

図4 GNU Arm Embedded Toolchainのセットアップウィザードの起動画面
図4 GNU Arm Embedded Toolchainのセットアップウィザードの起動画面


図5 GNU Arm Embedded Toolchainのセットアップウィザードの完了画面
図5 GNU Arm Embedded Toolchainのセットアップウィザードの完了画面


(3) Windows用ビルドツールのインストール

次に、プログラムのビルド(オブジェクトコードの構築)を行うために、コンパイラやリンカなどを呼び出して実行するためのビルドツールである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」をクリックして設定を完了する。

 

図6 xPack Windows Build Toolsのダウンロード画面
図6 xPack Windows Build Toolsのダウンロード画面

 

図7 環境変数を編集する画面の検索
図7 環境変数を編集する画面の検索


 

図8 環境変数の設定画面
図8 環境変数の設定画面


 

図9 ユーザ環境変数Pathの編集画面
図9 ユーザ環境変数Pathの編集画面


環境変数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をこのように設定しておく必要がある。

(4) PythonとpyOCDのインストール

最後に、Pythonパイソンの言語処理系とpyOCDをインストールする。Pythonとは、特に最近のAI分野などで利用が広まっている高機能な汎用プログラミング言語である。リアルタイムOSや組込み開発ではあまり馴染みのない言語かもしれないが、ここではPythonで作られたpyOCDというデバッガを動かすためにPythonの言語処理系が必要である。pyOCDは、実機のmicro:bit上で動作しているプログラムをEclipseからデバッグしたり、micro:bitのFlashROMに書き込まれているプログラムを消去したりするために使用する。なお、pyOCDの“OCD”とは“On Chip Debug”の略であり、実機のCPUに内蔵されたデバッグ機能とデバッグ用のソフトウェアを使ってクロス開発時のデバッグができるようにしたツールを表わす。“py”はPythonの意味である。


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)、正しくインストールされていることを確認できる。

 

図10 Pythonのダウンロード画面
図10 Pythonのダウンロード画面

 

図11 Pythonのインストール画面
図11 Pythonのインストール画面


 

図12 コマンドプロンプトの画面でpyOCDをインストール
図12 コマンドプロンプトの画面でpyOCDをインストール


 

図13 コマンドプロンプトの画面でpyOCDを実行
図13 コマンドプロンプトの画面でpyOCDを実行


[Step-2]micro:bit用µT-Kernel 3.0のコンパイル

次に、micro:bitで動作するµT-Kernel 3.0のソースコードを入手してEclipseに入れ、Eclipseの画面操作によりコンパイル、ビルドを行ってオブジェクトコードを生成する。

(5) micro:bit用µT-Kernel 3.0のソースコードの入手と展開

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のソースコードを展開した。

(6) Eclipseにµ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」を選択すると表示されるようになる。

 

図14 Eclipseのワークスペース設定画面
図14 Eclipseのワークスペース設定画面

 

図15 Eclipseの起動直後の画面
図15 Eclipseの起動直後の画面

 

図16 プロジェクトにソースコードをインポートする画面
図16 プロジェクトにソースコードをインポートする画面


 

図17 Project Explorerにmtkernel_3が追加された画面
図17 Project Explorerにmtkernel_3が追加された画面


(7) Eclipseの操作によるコンパイルとビルド

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回選ぶだけの簡単な操作で終了する。

 

図18 mtkernel_3の上で右クリックメニューの「Build Project」を実行
図18 mtkernel_3の上で右クリックメニューの「Build Project」を実行


 

図19 EclipseでµT-Kernel 3.0のコンパイルとビルドを実行した画面
図19 EclipseでµT-Kernel 3.0のコンパイルとビルドを実行した画面


図20 µT-Kernel 3.0のコンパイルとビルドの実行開始直後のコンソール画面
図20 µT-Kernel 3.0のコンパイルとビルドの実行開始直後のコンソール画面


* * *

今回は、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
(*)
圧縮ファイルの展開には、下記パスワードが必要となります。
展開パスワード:U2rS7mY4c
ソースコードをご利用になる前に、必ず上記ページ掲載の「ご利用条件およびご利用上のご注意」をお読みください。
(*1)
 IEEE 2050-2018仕様
https://standards.ieee.org/ieee/2050/7178/
(*2)
 リアルタイムOS入門「µT-Kernel 3.0で学ぶリアルタイムOSプログラミング」
https://www.tron.org/ja/page-722/
(*3)
 µT-Kernel 3.0のソースコードのリリースページ
https://github.com/tron-forum/mtkernel_3/releases
(*4)
 µT-Kernel 3.0 BSP(Board Support Package)のソースコードのリリースページ
https://github.com/tron-forum/mtk3_bsp/releases
(*5)
 「µT-Kernel 3.0でIoTエッジノードを作ろう [第2回] 開発環境とµT-Kernel 3.0の実行」豊山 祐一, TRONWARE VOL.195, p.44, 2022
  • 本ページは、「TRONWARE Vol.196」の掲載記事「micro:bitでµT-Kernel 3.0を動かそう 第2回 開発ツールの準備とμT-Kernel 3.0のコンパイル」をWebで公開したものです。

ページの先頭に戻る

 

次回の連載記事に進む