【Zephyr編】micro:bitで本格的な組込みソフトウェア開発
BBC micro:bit は、様々な方法で、組込みソフトウェア開発が可能です。
本記事では、リアルタイムオペレーティングシステムの実装である Zephyr を使って、本格的な組込みソフトウェア開発環境を構築し、VSCodeでサンプルプログラムをデバッグ実行します。
Windows 10 (64bit版) 上での開発環境構築
次のドキュメントを参考にして、Windows 10 (64bit版) 上に開発環境を構築します。
Getting Started Guide
https://docs.zephyrproject.org/latest/getting_started/index.html
本記事では、具体的なダウンロード元やインストールフォルダを示していますので、将来、バージョンアップなどにより、動作しなくなる可能性があります(2020/07/10現在)。
Getting Started Guide
(1) Windows Update の実施
[スタート]-[設定]-[更新とセキュリティ]-[Windows Update] で、更新プログラムのチェックをし、必要に応じて、ダウンロードをインストールを実施します。
(2) Chocolateyと依存パッケージのインストール
次のファイルをダウンロードし、c:\temp\install.ps1
として保存します。
https://chocolatey.org/install.ps1 ←右クリックで「名前を付けてリンク先を保存」
コマンドプロンプトを管理者として実行し、次のコマンドで、ダウンロードしたinstall.ps1を実行します。
PowerShell -ExecutionPolicy RemoteSigned c:\temp\install.ps1
新たに、コマンドプロンプトを管理者として実行し、次のコマンドで、依存パッケージをインストールします。
choco feature enable -n allowGlobalConfirmation
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
choco install ninja gperf python git
一旦、Windows 10を再起動します。
(3) Zephyrの取得とPython関連パッケージのインストール
コマンドプロンプトを開き(通常)、次のコマンドで、C:\zephyr
開発用ディレクトリとPython仮想環境を作成します。
cd c:\
mkdir zephyr
cd zephyr
pip install virtualenv
virtualenv venv
c:\zephyr\venv\scripts\activate
pip install west
続けて、次のコマンドで、Zephyrの取得とPython関連パッケージをインストールします。
cd c:\zephyr
west init zephyrproject
cd zephyrproject
west update
west zephyr-export
pip install -r c:\zephyr\zephyrproject\zephyr\scripts\requirements.txt
(4) Toolchainのインストールと環境変数の設定
gcc-arm-none-eabi-7-2018-q2-update-win32.exeをダウンロードし、インストールします。
※インストール先のフォルダ名にはスペースを含めないようにします。
例えば、C:\GNUToolsArmEmbedded2018-q2-update
へインストールします。
``
次の2つの環境変数を設定します。
# | 環境変数 | 値 |
---|---|---|
1 | ZEPHYR_TOOLCHAIN_VARIANT | gnuarmemb |
2 | GNUARMEMB_TOOLCHAIN_PATH | C:\GNUToolsArmEmbedded2018-q2-update |
※ 環境変数は、[スタートボタン]の右クリック-[システム]-[システム情報]-[システムの詳細設定]で、「環境編巣(N)...]ボタンを押下して、「新規(N)...」または「新規(W)...」で、ユーザー環境変数またはシステム環境変数として、追加設定します。
(5) BBC micro:bit サンプルプログラム
コマンドプロンプトを起動し、次のコマンドで、サンプルプログラムのビルドを実行します。
c:\zephyr\venv\scripts\activate
cd c:\zephyr\zephyrproject\zephyr\
west build -p auto -b bbc_microbit samples\boards\bbc_microbit\display
(6) BBC micro:bit 本体への書き込み
ビルドが完了したら、BBC micro:bit 本体とパソコンをUSB通信ケーブルで接続し、次のコマンドで本体へ書き込みます。
west flash
※ 本体への書き込みができない場合、BBC micro:bit のファームウェアの最新化を行ってください。
VSCodeを用いた開発環境の構築
Visual Studio Code (VSCode)を用いたに開発環境を構築します。
VSCodeのインストール
https://code.visualstudio.com/Download のページから、Windows版のVSCodeをダウンロードし、インストールします。
VSCode拡張機能のインストール
VSCodeを起動し、次の2つの拡張機能をインストールします。
- C/C++ 拡張機能(Microsoft)
- Native Debug 拡張機能(webfreak)
C/C++ 拡張機能 のインストール
-
Ctrl-P
を押下し、VSCodeの検索ボックスを開きます。 - 検索ボックスに
ext install cpptools
と入力し、Enterキーを押下します。 - リストのトップに拡張機能の
C/C++
が表示されますので、インストール
ボタンでインストールします。
Native Debugger 拡張機能 のインストール
-
Ctrl-P
を押下し、VSCodeの検索ボックスを開きます。 - 検索ボックスに
ext install webfreak.debug
と入力し、Enterキーを押下します。 - リストのトップに拡張機能の
Native Debug
が表示されますので、インストール
ボタンでインストールします。
ワークスペースの関連付け
エクスプローラーでC:\zephyr
フォルダーを開き、ファイル名やフォルダ名以外の空白の部分で、右クリックし、`Code で開く'で、VSCodeで開きます。
デバッグ環境構成の定義(GDB)
VScodeのメニューから[実行(Debug)]-[構成を開く(Open Configuration)]を選択し、環境の選択の中からGDB
を選択します。launch.json
ファイルが追加され、テキストエディタに表示されますので、次の内容で上書き保存します。
{
"version": "0.2.0",
"configurations": [
{
"name": "gdb_zephyr",
"type": "gdb",
"request": "attach",
"executable": "${workspaceRoot}\\zephyrproject\\zephyr\\build\\zephyr\\zephyr.elf",
"target": ":3333",
"cwd": "${workspaceRoot}",
"gdbpath": "C:\\GNUToolsArmEmbedded2018-q2-update\\bin\\arm-none-eabi-gdb.exe",
"remote": true,
"autorun": [
"monitor reset"
],
}
]
}
サンプルプログラムのデバッグ
サンプルプログラムをステップ実行でデバッグしてみます。
ブレークポイントの追加
zephyrproject\zephyr\samples\boards\bbc_microbit\display\src\main.c
を開き、行番号の左で、ブレークポイントを追加・削除できます。
GDBサーバーの開始
Ctrl-@
キーを押下し、ターミナルを開きます。次のコマンドを実行し、GDBサーバーを起動します。
コマンドプロンプトを起動し、次のコマンドを実行し、GDBサーバーを起動します。
c:\zephyr\venv\scripts\activate
cd c:\zephyr\zephyrproject\zephyr\
west debugserver
デバッグ実行の開始
次の手順で、デバッグ実行を開始します。
-
Ctrl-Shift-D
キーを押下し、左縦のアクティビティバーから「実行(Debug)」アイコンを選択し、左側のペインを切り替えます。 - 「実行(Debug)」ドロップダウンリストで、
gdb_zephyr
を選択します。 - 「実行(Debug)」横の緑色の「デバッグの開始」ボタンをクリックするとGDBセッションが開始されます。
- すぐさま、デバッグが開始され、ブレークポイントで、一時停止します。
- 「続行(F5)」で、処理が続行され、次のブレークポイントで一時停止します。
VSCodeのタスク
バッチファイル
C:\zephyr
フォルダーに次の3つのバッチファイルを作成します。
call .\venv\scripts\activate.bat
cd .\zephyrproject\zephyr\
west build -p auto -b bbc_microbit %1
call .\venv\scripts\activate.bat
cd .\zephyrproject\zephyr\
west flash
call .\venv\scripts\activate.bat
cd .\zephyrproject\zephyr\
west debugserver
tasks.jsonの追加
次の手順で、tasks.jsonファイルを追加します。
- Ctrl-Shift-Pキーを押下し、表示された検索ボックスで、tasksと入力すると候補が絞り込まれますので、タスク: タスクの構成 / Tasks:Configure Taskを選択します。
- テンプレートからtasks.jsonを作成をクリックし、リスト末尾のOthersをクリックします。
- tasks.jsonファイルが追加され、エディタに表示されます。
tasks.jsonの内容を次の定義内容で上書き保存します。
{
"version": "2.0.0",
"tasks": [
{
"label": "build_zephyr",
"type": "process",
"command": "build.bat",
"group":{
"kind": "build",
"isDefault": true
},
"args": [
"samples\\boards\\bbc_microbit\\display"
]
},
{
"label": "flash_zephyr",
"type": "process",
"command": "flash.bat",
"dependsOn": [
"build_zephyr"
]
},
{
"label": "debug_zephyr",
"type": "process",
"command": "debug.bat",
}
]
}
タスクの実行方法
例えば、debug_zephyr
タスクを実行するには、次の手順で操作します(他のタスクも同様)。
- Ctrl-Shift-Pキーを押下し、検索ボックスを開きます。
- tasksと入力すると、候補が絞り込まれますので、タスク: タスクの実行 / Tasks: Run Taskをクリックします。
-
debug_zephyr
が実行するタスクの選択候補に表示されますので、それをクリックします。 - 下段のペインで、`debug.bat'が実行されます。
尚、build_zephyr
タスクに関しては、その定義でgroup
が指定されていますので、Ctrl-Shift-Bキーで、実行できます。
まとめ
micro:bitで本格的な組込みソフトウェア開発ができることを確認しました。
- リアルタイムオペレーティングシステムの実装であるZephyr を使いました。
- C/C++による本格的な組込みソフトウェア開発環境を構築しました。
- サンプルプログラムのLチカをmicro:bit本体で動作させました。
- VSCodeでサンプルプログラムをデバッグ実行し、ステップ実行できることを確認しました。
- westコマンドをVSCodeのタスクとして実行できるようにしました。