2022年末にてArm Online Compilerが閉鎖ということで、第55回から第57回でその移行先を試してみました。今回もその続きです。Mbed OSを載せるにはギリギリのリソースのマイコンで新規プロジェクトをビルドしてみるの回です。Cortex M0、RAM16KBというマイコン2機種でやってみます。
※「モダンOSのお砂場」投稿順Indexはこちら
ターゲットボードと移行の難易度(勝手な意見)
ターゲットボードは以下の2種類としてみました。どちらもArmコアマイコンでMbedOS搭載機としてはミニマムなリソースに近いのではないかと思われます。
NUCLEO-F072RB | BBC micro:bit V1.3 | |
---|---|---|
MCU | STM32F072RBT6 | nRF51822 |
CORE | ARM Cortex M0 | ARM Cortex M0 |
RAM | 16kB | 16kB |
FLASH | 128kB | 256kB |
NUCLEO-F072RBについては、Mbedの以下のページに解説があります。
また、BBC micro:bit については以下です。なお、ターゲットはV1.3ボードです。V1.5やV2.0は対象外と思われます。
2つの似たスペックのボードについてKeil Studio Cloud上で新規プロジェクトを作成してみました。今のところの状態は、
-
- NUCLEO-F072RBは、MbedOS6の新規プロジェクトで何の問題もなく使える
- BBC micro:bitは、MbedOS2であればプロジェクトを作れるが、micro:bit特有のライブラリを使うところで躓いている。まだ使えていない。
です。なんだかな~。
NUCLEO-F072RBの場合、Mbed OS6ですんなり
NUCLEO-F072RBはリソースが少ないので、昔はMbedOS6、とくにRTOSまで含めた構成では使えなかった朧気な記憶があったのです。しかし今回、Keil Studio Cloud上で試したところでは、「ベアメタル」でも「RTOS含む」でもどちらもビルド可能でした。ただし「Lチカ」のサンプルプロジェクトです。
まず、ベアメタルのMbedOS6サンプルプロジェクトをビルドしてボードに書き込み、走らせた後、Stdioに出力された開始メッセージが以下に。ちゃんとMbed OS6.13.0とありますな。
つづいて、RTOS含むの方のBlinklyをチョイ変したソース(count変数をループの度にカウントアップし、printfするように追加)をデバッグビルドし、Keil Studio Cloudのオンラインでのデバッグを起動したところが以下に。ちゃんとデバッガも起動しておりますな。
勿論、デバッガの操作の裏で標準出力への出力も問題ありませぬ。こんな感じ。
NUCLEO-F072RBの場合、コンフィギュレーションはベアメタルであろうが、RTOS含むであろうが、MbedOS6対応ということですんなり開発できそうです。
BBC micro:bit v1.3の場合、Mbed OS2でドタバタ?
同じ容量のRAM、倍の容量のFLASHをもつ micro:bit v1.3については難儀です。Mbed OS6ターゲットでは、残念ながらBBC micro:bitはターゲットボードとしてもらえません。Mbed OS2ターゲットにしたときのみ可能です。micro:bitの場合、LED点滅すら固有の方法によるしかないため、専用ライブラリを呼ぶ必要があるためかと思います。また、BLEのサポートの件もあるのでしょう。
MbedOSのmicro:bit用のhello worldサンプルは以下のページに置かれています。
micro:bit >> Code >> microbit-hello-world
上記のページの右肩のところに “Import into Keil Studio” という魅力的なボタンがあります。これを押したらなんとかしてくれるんでないかい。プルダウンメニューを引き出すとその先頭に「Import into Keil Studio」とあります。
上記のメニューを選択すると、Keil Studio Cloudのウインドウが開き(勿論、ログインできるようになっていれば)、必要そうなファイルがKeil Studio Cloudの環境に取り込まれているのが確認できます。できたのか?
しかしつれないです。以下のようなメッセージが出てビルド対象になる「アクティブ・プロジェクト」にしてもらえません。
Problemみると、MicroBit.hが無いとか、MicroBitクラスなど知らんとか、MicroBitクラスの中で定義されている筈の release_fiber(fiberはMicroBitの軽量スレッドみたいなもの)が無いとかライブラリ関係です。
ヘッダファイルは、プロジェクトに含まれているのですが、パスが違っているみたい。該当のサブディレクトリに向けたらOK。肝心の microbit ライブラリ本体は自動でセットアップしてくれれば、いいのにと思いましたが、手動でやってみます。ライブラリは以下のURLにあります。
Lancaster University >> Code >> microbit
Keil Studio CloudのAdd Mbed Library機能を使ってライブラリのパスとお名前を指定してみます。こんな感じ。
これでライブラリが取り込まれました。
しかし、依然、アクティブプロジェクトにしてもらえません。なんだかKeil Studio Cloudのコンパイラ(Clang)の認識しないオプションがあるみたい。コンパイラの違い、ターゲットライブラリの違いなのか。トホホ。
それではということで、空のMbed OS2プロジェクトを作り、そのターゲットボードを BBC micro:bit に向けてみました。これであれば、プロジェクトを作成し、アクティブ化もできます。ただし、この場合、micro:bit特有のライブラリが使えないので、ライブラリは別途設定しないとなりません。
エイヤーで設定、サンプルプロジェクトのソースもコピペしてみました。ビルドは途中まで走ったのですが、途中で落ちました。今のところ対策不明。また今度。トホホだな。