こんばんはヌキヲです。
今日は表題の通り、MPLAB XC32 の野良ビルドについてです。
動作確認まで取れたので、忘れないうちにさっさとブログにまとめてしまおうと思います。
モノだけ欲しい人は、いつも通り 置き場 に置いておきますので使ってください。
最後のマージだけは自分でやってください。
※この情報は、ビルドした成果物を頒布するために必要なものです。
ご自分で使うだけの場合は野良ビルドを再現する必要はありません。
今回は Ubuntu 18.04 マシンを用意して作業しました。
WSL で実行してみたのですが、x64 Kernel に x86 実行ランドがなかったため、
Configure で失敗します。これはかなり悲しいお話で、
クロスコンパイル系には WSL は使い物にならないことがわかりました。
MinGW+MSYS も試したのですが、ビルドスクリプト側にはじかれました。
ビルドするのは実行バイナリーのみで、ライブラリー類は完全無視とします。
今回のバージョンから内部構造が pic32m と pic32c に分かれました。
pic32c とは何ぞ?と思ったら、Atmel 由来の ARM コア PIC32CX シリーズのようです。
まだモノが出てきてないので、需要もないだろうしということで、
こちらのビルドも今回はスルーします。
必要なものを入れます。
ソースとスクリプトを取得し展開します。
ソースは MicrochipArchive から、スクリプトは改造したので、
私の 置き場 からダウンロードしてください。
詳しくは割愛しますが、最終的に次のようなフォルダ構造にします。
なお、今回はソースの変更はありません。
すみません、ありませんとか言ってすっかり失念しておりました。
gcc/gcc/cp の中で cfns.gperf がうんちゃらかんちゃらのエラーです。
ビルドする側の gcc のバージョンによって出るらしいです。
昔はワーニングだったけど、最近の gcc はエラーを出すそうですね。
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=ec1cc0263f156f70693a62cf17b254a0029f4852
ここの変更を適用します。
ではドキドキのビルドタイムです。
マシンにもよりますが、30分程度で完成するのではないでしょうか?
成果物は次の通りです。
圧縮などして持ち出してください。
このままでは、ライブラリやヘッダー類も何もないので、Free版とマージします。
Free のままインストールしたファイル群を別フォルダにコピーし、
その上に成果物を上書きします。
フォルダ構造が一段違うので、注意してリネームしてくださいね。
MPLAB X IDE にも統合できます。v4.15 で確認しました。
Tool > Options > Embedded > Build tools
から Add ボタンを押して、該当フォルダ/bin を指定すれば OK です。
駆け足でしたが、ビルドできましたでしょうか?
どんどん -Os や -mpis16 -micromips 等を使って、
楽しい PIC32M ライフを送っていただければ幸いです。
pic32c の方はもう少し流通したら考えますね。
ご精読ありがとうございました。
今日は表題の通り、MPLAB XC32 の野良ビルドについてです。
動作確認まで取れたので、忘れないうちにさっさとブログにまとめてしまおうと思います。
モノだけ欲しい人は、いつも通り 置き場 に置いておきますので使ってください。
最後のマージだけは自分でやってください。
※この情報は、ビルドした成果物を頒布するために必要なものです。
ご自分で使うだけの場合は野良ビルドを再現する必要はありません。
●条件
今回は Ubuntu 18.04 マシンを用意して作業しました。
WSL で実行してみたのですが、x64 Kernel に x86 実行ランドがなかったため、
Configure で失敗します。これはかなり悲しいお話で、
クロスコンパイル系には WSL は使い物にならないことがわかりました。
MinGW+MSYS も試したのですが、ビルドスクリプト側にはじかれました。
ビルドするのは実行バイナリーのみで、ライブラリー類は完全無視とします。
今回のバージョンから内部構造が pic32m と pic32c に分かれました。
pic32c とは何ぞ?と思ったら、Atmel 由来の ARM コア PIC32CX シリーズのようです。
まだモノが出てきてないので、需要もないだろうしということで、
こちらのビルドも今回はスルーします。
●環境構築
必要なものを入れます。
> apt update > apt install build-essential > apt install mingw-w64 > apt install fossil > apt install gcc-multilib g++-multilib > apt install unzip > apt install m4 bison flex texinfo
●ソースとスクリプトの展開
ソースとスクリプトを取得し展開します。
ソースは MicrochipArchive から、スクリプトは改造したので、
私の 置き場 からダウンロードしてください。
詳しくは割愛しますが、最終的に次のようなフォルダ構造にします。
+--mplabxc32-205 | +--pic32m | \--build-pic32m-common.sh | \--build-pic32m-prerequisites.sh | \--build-pic32m-toolchain.sh | \--checkout-pic32m-source.sh | +--builddir | +--pic32m_source | +--src48x | +--... | \--xc32-build-all.sh
すみません、ありませんとか言ってすっかり失念しておりました。
gcc/gcc/cp の中で cfns.gperf がうんちゃらかんちゃらのエラーです。
ビルドする側の gcc のバージョンによって出るらしいです。
昔はワーニングだったけど、最近の gcc はエラーを出すそうですね。
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=ec1cc0263f156f70693a62cf17b254a0029f4852
ここの変更を適用します。
●ビルド
ではドキドキのビルドタイムです。
mplabxc32-205 > ./xc32-build-all.sh --skip_steps=checkout,pic32c,source_tar
マシンにもよりますが、30分程度で完成するのではないでしょうか?
成果物は次の通りです。
builddir/install-linux-nolm builddir/install-mingw
圧縮などして持ち出してください。
●マージ
このままでは、ライブラリやヘッダー類も何もないので、Free版とマージします。
Free のままインストールしたファイル群を別フォルダにコピーし、
その上に成果物を上書きします。
フォルダ構造が一段違うので、注意してリネームしてくださいね。
MPLAB X IDE にも統合できます。v4.15 で確認しました。
Tool > Options > Embedded > Build tools
から Add ボタンを押して、該当フォルダ/bin を指定すれば OK です。
●最後に
駆け足でしたが、ビルドできましたでしょうか?
どんどん -Os や -mpis16 -micromips 等を使って、
楽しい PIC32M ライフを送っていただければ幸いです。
pic32c の方はもう少し流通したら考えますね。
ご精読ありがとうございました。
また、最近更新されたv2.15でも同様のスクリプトと修正箇所で動作確認を取れました。
それから板違いにはなりますが、XC16でもv1.23のスクリプトの簡単な修正でVM上のUbuntu14LTS上でクロスビルド(linux版のみ)で、
v1.33・v1.34・v1.35・v1.36の動作確認を取ったことを報告します。
ソースの変更箇所も、ほぼ掲載されている変更のみで(一部pic30.cの変更は無し、microchip側で修正済み?)クロスビルドが完了した事を追記しておきます。
なおXC16の方は、MPLAB Xの吐き出したmake fileを元に自前でmake fileを書いて動作確認を行っています。
また、返信が遅くなってすみません。
XC16についても、また時間を取って、
今度はIDE統合できるバージョンの研究をしたいと思っています。
その後、チップの普及状況を見て pic32c の方に取り組む感じですかね。
もしくは、Mac が手に入ったら、OSX版 の研究をするかもしれません。
どれもいつになるかわかりませんが、末永く PIC をお楽しみください。