Mbed CliでMbed OS 2系のコンパイルをする(延長戦)

Table of Content

Mbedローカルコンパイルバトル 2回戦

がいよう

この記事は下記の続き。
https://drroot.page/wp/?p=234

mbed cliでmbed new testproj --mbedlibと叩くと、Mbedライブラリを落としてくる段階で

ERROR: OS Error: プロセスはファイルにアクセスできません。別のプロセスが使用中です。

とか言われてコケるケース。

なにこれ

わからん。Windows 8.1環境だと上手く行ったのに、10環境だと上手く行かずコケた。
Powershellだからなのか、PCが違うからなのか、Windowsが違うからなのか?何も特定できなかった。
で、この作業を通さないとディレクトリが「Mbed化」しないのでコンパイル等できない。
いろんなIssuesを見るに、再起動したら直っただの管理者モードでやったら上手く行っただのあったが俺は全部あかんかった。

かんさつ

プロジェクトディレクトリを見てみると、mbedディレクトリの下に.bldディレクトリがあり、そこにサイズ0のZIPファイルがぽつんと生成されている。
mbed deploy -vvコマンドでフォルダのMbed化をやり直せるのだが、当然ファイルの解凍に失敗してAbortになる。
プロセスが使用中とか言われるってことはCLIの作りが良くなさそうだけど直す暇も無いね。

fix

ZIP生成に失敗して、それを解凍しようとしてコケるってことは、手元でいい感じのZIPを作って差し替えちゃえばいいんじゃねという話になる。
最終的な手順としては下記の感じでディレクトリのMbed化に成功する。

1. プロジェクト立ち上げ

mbed new projectname --mbedlibでプロジェクト作成。プロセスが使用中とかでコケる。

2. 手動でライブラリ構築

https://os.mbed.com/users/mbed_official/code/mbed/archive/65be27845400.zip
↑まずこれを落としてきて解凍。大量のターゲット向けディレクトリが入っているので、いらない奴は全部削除しちゃっていい。
次にこのディレクトリのルートに下記の5つを落としてきてコピー。

https://os.mbed.com/users/mbed_official/code/mbed//raw-file/65be27845400/targets.json
https://os.mbed.com/users/mbed_official/code/mbed//raw-file/65be27845400/mbed.h
https://os.mbed.com/users/mbed_official/code/mbed//archive/65be27845400.zip/drivers/
https://os.mbed.com/users/mbed_official/code/mbed//archive/65be27845400.zip/hal/
https://os.mbed.com/users/mbed_official/code/mbed//archive/65be27845400.zip/platform/1

最終的にこんな感じになったらOK。

そしたらこのフォルダをZIPにする。Windowsなら右クリ→送る→ZIPでOK

3. 手動でライブラリをパッキング

さっき立ち上げたプロジェクトの中の、mbed/.bld/~.zipファイルと同じ名前にさっき作ったZIPを改名し上書き。
再度プロジェクトのルートディレクトリに戻り、mbed deployコマンドを叩く。以上!

カテゴリー: IT, 電子工作 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。