ゲーマーの技術メモ

システムとしてゲームを見る

VisualStudioCode(VScode)を使ったmbed-os5の開発

どんな内容?

platformIOというVisualStudioCode(vscode)用の拡張機能を用いて、mbed-os5の開発環境を作成します。

マイコン開発をvscodeを使って開発したい人には参考になると思います。

前提

自分が使っているマイコンはLPC1768搭載のものです
条件を同じにすると、チップの差による不具合は起きにくくなると思うので、よければ試してみてほしいです

NXP MBED NXP LPC1768搭載マイコンモジュール 【OM11043-598】

NXP MBED NXP LPC1768搭載マイコンモジュール 1個 OM11043-598

手順

1. git導入

github:gitを使うためのサービスを提供してくれているサイト。運営はマイクロソフト

操作

git本体の導入は後日別記事を投稿いたしますので、そちらを参考にしてください

すでに自分のPCに導入されているかどうかは以下の手順で確認することができます

スタート+Rキーで「ファイル名を指定して実行」を開きそこに
cmd
と入力してコマンドプロンプトを起動。そこで
git
と入力してエラーが出なければ導入に成功しています。

コマンドプロンプトでのgitコマンド実行画面
うまく行けばこんな感じ

2. VScodeでの操作

概要

vscodeにplatformIO IDEというvscodeマイコン用プログラミングを行うための拡張機能を入れ、その拡張機能に対応したビルド環境を構築していきます。
ファイルの整理、加工はすでに私が行ったものを配布しているので、そちらをコピーしてもらう形になります。

操作

  1. pythonが必要になるのでインストールしておく
    先程と同様にスタート+Rキーで「ファイル名を指定して実行」を開き、そこに
    cmd
    と入力してコマンドプロンプトを起動。そこで
    python
    と入力してエラーが出なければ導入に成功しています。

    コマンドプロンプトでのpythonコマンド実行画面
    うまく行けばこんな感じ
    これを行った場合、ターミナルがpythonコマンドを実行するようになってしまうので、
    exit()
    と入力して終了させる必要があります。
    または、ターミナルを一度閉じてもう一度開いてもオッケーです。

  2. フォークの実行
    以下のリンクからフォークを実行する

    githubの画面説明
    右上にあるForkボタン
    リポジトリURL (starしてくれると嬉しいです)
    github.com
    フォークとは、他人のリポジトリをもとに自分のリポジトリを作成することです。

  3. フォークしたリポジトリのクローン
    スタート+Rを押し、cmd コマンドでコマンドプロンプトを開く
    cd C:\
    コマンドプロンプトの作業ディレクトリをCドライブ直下に移動
    以下のコマンドを入力し、フォークしたリポジトリをCドライブ直下にクローンする
    git clone フォークしてできたリポジトリのURL
    これは必ずCドライブ直下にしてください。platform.iniという設定ファイル内でmbed-osパッケージの読み込み先がそこに指定されています
    以降では作成したリポジトリの名前がmbed-osであると仮定して話を進めていきます

  4. クローンしたディレクトリにコマンドプロンプトを移動
    cd mbed-os
    を入力

  5. pythonモジュールの導入
    requirements.txtの内部に必要なPythonモジュールの一覧が記述されているので、
    pip install -r requirements.txt
    を実行してモジュールをインストールする
    これは通常のモジュールの保存場所にインストールすればOKです

  6. gitのローカルリポジトリを保存するフォルダの作成
    基本的には、ローカルリポジトリのコピー先は1つにまとめておくと良いです
    このフォルダもできればCドライブ直下に作成することが望ましいです
    日本語がフォルダパスに含まれると、一部ツールが機能しない可能性があります

  7. テンプレートリポジトリをフォークする
    以下のリンクからリポジトリをフォークしてください
    github.com

  8. フォークしたリポジトリをクローンする
    git clone フォークしてできたリポジトリのURL
    を実行してリポジトリをクローンしてください

  9. クローンしたフォルダをvscodeで開く
    クローンしてできたフォルダで右クリックをして、「Codeで開く」を押せば開くことができます
    vscodeの画面の左上の ファイル→フォルダを開く からでも開くことができます

  10. 拡張機能タブから必要な拡張機能をインストールする
    左側の四角が4つ並んだようなデザインが拡張機能タブです
    フィルタ(ろうとのマーク)から、"推奨"を選ぶと、.vscode/extentions.jsonに書かれている拡張機能をフィルタすることができます
    そこに必要だと思われる拡張機能の設定しているのでインストールしてください

    vscodeの拡張機能画面
    拡張機能画面

  11. platformIOの設定を確認
    左のリストからアリの顔のようなマークをクリックして拡張機能:platformIOIDEを起動します
    少し待つと起動が終わるので、今開いているフォルダーがプロジェクトとして認識されているかを確認しましょう
    されていない場合は、「pick a folder」をクリックして現在開いているフォルダーを選択し、vscodeを再起動すれば認識されるはずです

  12. platformIOでの処理 platformIOを起動したあと、必要なファイルがコピーされるのを待ちます
    先程クローンしたCドライブ直下のmbed-osを.pipフォルダにコピーしているのですが、ローカル内の処理なのに何故か時間がかかってしまいます
    どうしようもないので待ちましょう

これで利用可能になります。お疲れ様でした
詳細な使い方については後日別記事を掲載したいと思います


追記 2023/06/20

最初にビルドを通す際に、不足しているpythonモジュールを求められます
しかし、そのままpip install コマンドを使用しても同様のエラーが発生してしまいます
これはplatformioが独自のフォルダ内のモジュールを参照しているためです
ちなみにそのフォルダのパスはC:\Users\〇〇\.platformio\penv\Lib\site-packages なので、インストール時に
pip install モジュール名 -t C:\Users\〇〇\.platformio\penv\Lib\site-packages
として直接フォルダにモジュールをインストールするか、
インストールしたモジュールを上記フォルダにコピーする必要があります。
他人のモジュールをコピーしても一応稼働はしたので、一つ一つインストールするのがが手間ならば(pythonのモジュールエラーは1つずつしか表示されない)他人のモジュールをコピーさせてもらっても良いかもしれません。
(どんな問題が起こるかわからないので推奨はしません。よってココではモジュールの配布は行いません。)


まとめ、解説など

この記事を書いたわけ

大抵はマイコンの開発会社がIDE統合開発環境)としてマイコン用のコンパイラを組み込んだものを配布していますが、正直使い勝手はまちまちです。
また、gitを使うのであればVScodeを使ったほうが楽なのは間違いありません(詳細は別記事にて)
現在のplatformIOではなぜかmbed-osはmbed-os6しか対応していません。
しかしmbed-os5とmbed-os6ではクラスや関数の構成が大きく変更されている関係で互換性が薄いです。
私は使用するライブラリの関係上mbed-os5が必要なので、本記事を作成することになりました。
(過去のバージョンのプラットフォームではmbed-os5のものもあったのですが、何故か利用できなくなっています)

解説

platformIO上では1つの作業場所をプロジェクトと呼ぶので、この場所はプロジェクトの保存場所でもあります
githubには過去のmbed-osも残っているので、自前で過去バージョン対応のプラットフォームを準備している
具体的な操作としては、公式が出しているmbed-osのバージョン5.15.9(OS5)に、platformIO用プラットフォームにするためのパッチを当てています

mbed-os github.com

パッチ
github.com

テンプレートリポジトリではplatformIO用に手を加えたものを登録しています

最初に入れたpythonはplatformIOがpythonベースで動いているためインストールしてもらいました

終わりに・改善点

通信量が少なく、かつリモートリポジトリに多くを保存しないような設計を行っいましたが、ローカル内(のはず)のコピーがかなり遅く感じました
githubリポジトリの容量制限は原則存在しないので、リモートリポジトリにもう少しファイルを含めてみてもいいかもしれません