2022年末にてArm Online Compilerが閉鎖ということでいろいろ試行錯誤してきましたが、いろいろやりすぎて自分でも分けわからなくなってきました。今回は一度立ち止まり、いままでにやってみたことをまとめてみます。簡単とか難しいとか個人の感想です。また調べ切れてないので間違ったことを書いているかもしれません。
※「モダンOSのお砂場」投稿順Indexはこちら
以下のケースについて感想その他を書き連ねます。
-
- Arm Online CompilerのプロジェクトをKeil Studio Cloudのインポートメニューを使ってインポート
- Keil Studio Cloud上で新たにプロジェクトを作りそこにソースをコピーしてプロジェクトを再構成する
- Arm Online Compilerのイクスポートメニューから外部のツールチェーンにイクスポートする
- 外部のツールチェーンで新たにプロジェクトを作りそこにソースをコピーしてプロジェクトを再構成する
Online CompilerプロジェクトをKeil Studio Cloudでインポート
この方法の場合、Online Compiler側のプロジェクトがOS6の新しいプロジェクトであれば非常に簡単。「プッシュボタン」での移行が可能だと思います。やってみた範囲ではみな成功。インポートメニューでチェックを入れて後は待つだけ。
しかし、Online Compiler側のプロジェクトがOS2の古いプロジェクトであったりするといろいろ問題が生じる可能性が高いです。インポートに成功する場合もありますが、インポート失敗のケースもあります。以下は Mbed Online Compiler上のmicrobit-hello-world(OS2プロジェクト)のインポートを試みているところですが、コピーが終わったと見えたのですが、Keil Studio Clould側にはプロジェクトがありませんでした。失敗なの?
OS2対応の古いライブラリが必要なためなのか、armccでもバージョン5の古いコンパイラ機能が必要なためなのかは定かでないのですが、コピーが正常終了しないプロジェクトがままあると思います。
幸いにもインポートに成功したOS2プロジェクトの場合、基本、コンパイルは可能じゃないかと思います。ただし、参照しているライブラリのバージョン依存の場合、OS2のライブラリを手動設定する必要があるかもしれません。またKeil Studio Cloudのエディタは上記にあるようにOS5/6レベルを前提にインテリセンスしているようです。OS2で存在したけれどもOS6では既に廃止されているようなAPIを呼び出しているとエディタ上では赤波線ひかれてエラーに見えたりします。ビルド前に大量のエラーが報告されているかもしれません。元のOnline Compiler上でビルドが通っていたソースのままであれば「疑似エラー」ということになりますが、ソースに手をいれると何がホントのエラーなのか分からなくなりそうです。
Keil Studio Cloud上で新たにプロジェクト作成の場合
Keil Studio Cloud上で新たにプロジェクトを作成する場合、OS6、OS5で作成するのがよいと思います。OS2のemptyプロジェクトを選択すれば OS2のプロジェクトも一応作成可能ではあります。しかし、上記のようにKeil Studio CloudのエディタはOS2の廃止APIなどを認識しないのでせっかくのIDEを使っているかいが無いです。この際、OS2のプロジェクトは
OS6のベアメタルプロファイル
に書き換える方がよろしいんじゃないかと思います。廃止済のAPIを参照しているところを選んで書き直していくのはメンドイですができなくもないです(こちらでやってみてます。)ただしAPIによっては単純に置き換えできないケースもままあるかと思います。
Arm Online Compilerのイクスポートから外部のツールチェーンへ脱獄
第56回でMake-GCC-ARMツールチェーンへのOS6プロジェクトのイクスポート、第57回で同じくMake-GCC-ARMツールチェーンへのOS2プロジェクトのイクスポートをやっています。一応、OS2でもOS6でも出来たことは出来たのですが、Make-GCC-ARMに関してはダウンロードしたMakefileの中身を手動変更するような危ない手数を踏んでようやく可能になりました。どうもイクスポート側のソフトの問題みたいっす。他にもいろいろツールチェーンがサポートされているので、すんなり行く移行先ツールチェーンを探した方がいいような気もします。
また、OS2プロジェクトでもBBC micro:bit向けなどは、armccでもバージョン5のコンパイラ依存みたいっす。これは使っているライブラリのせいなのか?このような場合、移行可能な外部ツールチェーンはコンパイラバージョンで限定されるのででないかと。知らんけど。
外部のツールチェーンでプロジェクト新規作成
外部ツールチェーンでもOnline Compilerのイクスポートが対応してないものもあります。その場合は新規プロジェクトを作って、そこにソースを配置していくことになるかと思います。以下はVScode上にインストールしたPlatformIOを使って Mbed OS6のプロジェクトをビルドしているところです。
それぞれのツールチェーンの要求に合わせていけば問題ないかと思いますが、例えば、上記のPlatformIOはOS6でもバージョン6.9対応でした。オンラインのKeil Studio Cloudより、何バージョンか古いものであるようだったので微妙なところは違う可能性あります。ま、ここでもOS6ならOK、でもOS2は対応なしっと。