モダンOSのお砂場(59)Keil Studio Cloud、すんなりOS6、ドタバタOS2

Joseph Halfmoon

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の以下のページに解説があります。

Boards >> NUCLEO-F072RB

また、BBC micro:bit については以下です。なお、ターゲットはV1.3ボードです。V1.5やV2.0は対象外と思われます。

Boards >> BBC micro:bit

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とありますな。T0_baremetalRunsonF072RB

つづいて、RTOS含むの方のBlinklyをチョイ変したソース(count変数をループの度にカウントアップし、printfするように追加)をデバッグビルドし、Keil Studio Cloudのオンラインでのデバッグを起動したところが以下に。ちゃんとデバッガも起動しておりますな。T1_RunsonF072RB

勿論、デバッガの操作の裏で標準出力への出力も問題ありませぬ。こんな感じ。T1_RunsonF072RB_Printf

ブレークポイントで止まったところが以下に。T1_RunsonF072RB2

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」とあります。microBitHelloImport

上記のメニューを選択すると、Keil Studio Cloudのウインドウが開き(勿論、ログインできるようになっていれば)、必要そうなファイルがKeil Studio Cloudの環境に取り込まれているのが確認できます。できたのか?

しかしつれないです。以下のようなメッセージが出てビルド対象になる「アクティブ・プロジェクト」にしてもらえません。

microbit-Hello-ErrorOutput

Problemみると、MicroBit.hが無いとか、MicroBitクラスなど知らんとか、MicroBitクラスの中で定義されている筈の release_fiber(fiberはMicroBitの軽量スレッドみたいなもの)が無いとかライブラリ関係です。

microbit-Hello-Error

ヘッダファイルは、プロジェクトに含まれているのですが、パスが違っているみたい。該当のサブディレクトリに向けたらOK。肝心の microbit ライブラリ本体は自動でセットアップしてくれれば、いいのにと思いましたが、手動でやってみます。ライブラリは以下のURLにあります。

Lancaster University >> Code >> microbit

Keil Studio CloudのAdd Mbed Library機能を使ってライブラリのパスとお名前を指定してみます。こんな感じ。

addMicroBitLib

これでライブラリが取り込まれました。

しかし、依然、アクティブプロジェクトにしてもらえません。なんだかKeil Studio Cloudのコンパイラ(Clang)の認識しないオプションがあるみたい。コンパイラの違い、ターゲットライブラリの違いなのか。トホホ。

それではということで、空のMbed OS2プロジェクトを作り、そのターゲットボードを BBC micro:bit に向けてみました。これであれば、プロジェクトを作成し、アクティブ化もできます。ただし、この場合、micro:bit特有のライブラリが使えないので、ライブラリは別途設定しないとなりません。

エイヤーで設定、サンプルプロジェクトのソースもコピペしてみました。ビルドは途中まで走ったのですが、途中で落ちました。今のところ対策不明。また今度。トホホだな。

モダンOSのお砂場(58) Zephyr再び、Windows上でビルド可能にする へ戻る

モダンOSのお砂場(60) Arm Online Compilerからの脱出、まとめ へ進む