nanoFrameworkのファームウェアビルド
.NET Micro Framework後継の一つ、nanoFramework。
https://www.slideshare.net/TakashiMatsuoka2/tinyclr-os-on-wio-lte/9
何気なくドキュメントを見たら、ファームウェアのビルド手順が書かれていて、わたしでも出来るかも?と思い、やってみました。
参考にするドキュメントはこちら。
ターゲットボードは、手元に有るSTM32F4DISCOVERY
とします。
ビルド環境のセットアップ
ディレクトリを作成
C:\>mkdir C:\nanoFramework C:\>mkdir C:\nanoFramework_Tools
Visual Studio Codeをインストール
既にインストールされていました。
CMakeをコピー
CMakeサイトからcmake-3.13.1-win64-x64.zip
をダウンロードして、C:\nanoFramework_Tools\CMake
に解凍します。
Ninjaをコピー
ninjaのReleaseからv1.8.2のninja-win.zip
をダウンロードして、C:\nanoFramework_Tools\Ninja
に解凍します。
GNU ARM Embedded Toolchainをコピー
GNU-RM Downloadsからgcc-arm-none-eabi-7-2018-q2-update-win32.zip
をダウンロードして、C:\nanoFramework_Tools\GNU_ARM_Toolchain
に解凍します。
ChibiOSをコピー
ChibiOSのSourceForgeから
ChibiOS_18.2.1.zip
だと、nf-interpreterが想定しているものより古いバージョンのためコンパイルエラーになりました。(-.-) githubから取りましょう。
ChibiOSのstable_18.2.xブランチをzipダウンロードして、
C:\nanoFramework_Tools\ChibiOS-stable_18.2.x
に解凍します。
nf-interpreterをクローン
デフォルトのdevelopブランチだと、UART周辺でコンパイルエラーになりました。(-.-) masterブランチを明示的に指定しましょう。
githubのnanoframework/nf-interpreterをクローンします。
C:\>cd C:\nanoFramework C:\nanoFramework>git clone -b master https://github.com/nanoframework/nf-interpreter.git
Visual Studio Codeのセットアップ
Visual Studio Code拡張をインストール
下記URL先のInstallをクリックして、Visual Studio Code拡張をインストールします。
CMake-variants.jsonを設定
C:\nanoFramework\nf-interpreter\cmake-variants.json
を作成します。
{ "buildType": { "default": "MinSizeRel", "choices": { "debug": { "short": "Debug", "long": "Emit debug information without performing optimizations", "buildType": "Debug" }, "release": { "short": "Release", "long": "Enable optimizations, omit debug info", "buildType": "Release" }, "minsize": { "short": "MinSizeRel", "long": "Optimize for smallest binary size", "buildType": "MinSizeRel" }, "reldeb": { "short": "RelWithDebInfo", "long": "Perform optimizations AND include debugging information", "buildType": "RelWithDebInfo" } } }, "linkage": { "default": "", "choices": { "ST_STM32F4_DISCOVERY": { "short": "ST_STM32F4_DISCOVERY", "settings": { "BUILD_VERSION" : "0.9.99.999", "TOOLCHAIN_PREFIX" : "C:/nanoFramework_Tools/GNU_ARM_Toolchain", "TARGET_SERIES" : "STM32F4xx", "CHIBIOS_SOURCE" : "C:/nanoFramework_Tools/ChibiOS-stable_18.2.x", "CHIBIOS_BOARD" : "ST_STM32F4_DISCOVERY", "SWO_OUTPUT" : "ON", "USE_RNG" : "ON", "NF_FEATURE_DEBUGGER" : "ON", "NF_FEATURE_RTC" : "ON", "API_Windows.Devices.Adc" : "ON", "API_Windows.Devices.Gpio" : "ON", "API_Windows.Devices.Spi" : "ON", "API_Windows.Devices.I2c" : "ON", "API_Windows.Devices.Pwm" : "ON", "API_Windows.Devices.SerialCommunication" : "ON" } } } } }
settings.jsonを設定
C:\nanoFramework\nf-interpreter\.vscode\settings.json
を作成します。
{ "cmake.generator": "Ninja", "cmake.configureSettings": { "CMAKE_MAKE_PROGRAM":"C:/nanoFramework_Tools/ninja/ninja.exe" }, "cmake.cmakePath": "C:/nanoFramework_Tools/CMake/bin/cmake.exe" }
nanoBooterとnanoCLRをビルド
Visual Studio Codeを起動して、ファイル -> フォルダを開く、でC:\nanoFramework\nf-interpreter
を開きます。
Would you like to configure this project?
というメッセージウィンドウが表示されたら、Not now
をクリックします。
Never configure projects on opening?
というメッセージウィンドウが表示されたら、For this Workspace
をクリックします。
メッセージが何も表示されなくなったら、ステータスバーのNo Kit Selected
をクリックして、
[Unspecified]
を選択します。
ステータスバーのBuild
をクリックします。
2分ちょっとでビルド完了。
nanoBooter.hex
とnanoCLR.hex
が出来上がりました。