/ クレア工房 / 電子工作 / PIC32 / PIC32 GCCの導入

PIC32 GCCの導入

PIC32とコンパイラで検索してもMPLABをダウンロードする記事しか見つからないのが現状です。 それではWindows以外の環境ではどうしたらいいのでしょう。

筆者はNetBSDをプラットフォームにして生活しているため、 MPLABとその周辺ライブラリには興味がありません。 IDEを使うこともありませんし、ベンダー依存のライブラリを使う気もありません。 純粋にまともなコンパイラが使いたいのです。 本記事では、そんなストイックな環境にGCCを導入する手順を簡単に説明します。

binutilsの導入

binutilsはアセンブラとリンカを提供するパッケージです。 GNU makeを使用しなければならないこと、 GNU sedを事前にインストールしておくべきという点以外に特に難しいことはありません。 詳しくは下記シェルスクリプトを参照してください。

host libraryの導入

GNU MP (gmp), GNU MPFR, GNU MPC, GNU ISLパッケージをダウンロードしてインストールしてください。 詳しくは下記シェルスクリプトを参照してください。

GCCの導入

ツールが揃ったらGCCをコンパイルします。 2018年3月現在のコンパイラのバージョンはGCC 7.3.0です。 GCCはGNU sedがないとビルドできません。 詳しくは下記のパッチとシェルスクリプトを参照してください。

簡単なプログラムをアセンブリに落としてみて、 きちんと翻訳されるなら正常です。 リンカスクリプト、 スタートアップルーチン、 標準ライブラリはありませんので自力で書かなければなりません。

サンプルプログラム

コンパイラの据え付けだけでは味気ないので、 最低限必要な初期化以外は「ほぼ何もしない」という、 スケルトンとも言うべきサンプルプログラムを用意しました。 実際にサンプルをコンパイルしてみて、 逆アセンブリを眺めて、 PIC32 のコアである MIPS がどのようなコードを要求するのか確認することができるでしょう。

リンカスクリプトの書法としては、 仮想アドレスのままオブジェクトを書き出す方式と、 物理アドレスを意識して書き出す方法があります。 GNU objdump にはアドレス空間を符号付きで扱うと言う不具合があり、 PIC32 に限っては前者を採用すると厄介なことになります。 そのため、このサンプルプログラムでは後者のリンク方式を採用しています。

サンプルプログラムについては著作権を主張しないことにしましたので、 ご自由にお使いください。


Copyright © 2017, 2018 clare. All rights reserved.