mb-gcc
コンパイラには、GNU C 標準ライブラリと GNU 数学ライブラリが必要です。Vivado には、あらかじめコンパイルされたこれらのライブラリが含まれています。MicroBlaze のハードウェア コンフィギュレーションに基づき、MicroBlaze の CPU ドライバーの該当バージョンがコピーされます。使用するライブラリのバージョンを選択するには、次のフォルダーを確認します。
$XILINX_/gnu/microblaze/<platform>/microblaze-xilinx-elf/lib
ファイル名は、コンパイラのオプションとライブラリのコンパイルに使用されたコンフィギュレーションに基づいて付けられています。たとえば、libc_m_bs.a は、ハードウェア乗算器とバレル シフターをイネーブルにしてコンパイルされた C ライブラリです。
tutu次次次の表に、使用されているエンコードとそのエンコードで指定されるライブラリのコンフィギュレーションを示します。
エンコード | 詳細 |
---|---|
_bs | バレル シフター用にコンフィギュレーション |
_m | ハードウェア乗算器用にコンフィギュレーション |
_p | パターン コンパレータ用にコンフィギュレーション |
注意が必要なのは、数学ライブラリ ファイル (libm*.a) です。C 標準では、倍精度の浮動小数点演算を使用するために、sin() および cos() などの共通の数学ライブラリ関数が必要です。ただし、倍精度の浮動小数点演算では、MicroBlaze 用にオプションで提供されている単精度の浮動小数点機能を完全に利用できない可能性があります。
newlib 数学ライブラリには、単精度演算を使用してこれらの数学関数をインプリメントするバージョンがあります。これらの単精度ライブラリでは MicroBlaze プロセッサ ハードウェア浮動小数点ユニット (FPU) を直接使用できるので、パフォーマンスが向上する可能性があります。
アプリケーションで標準精度が必要ではなく、パフォーマンスを向上させたい場合は、リンクされたライブラリのバージョンを手動で変更できます。
デフォルトでは、CPU ドライバーにより倍精度バージョンのライブラリ (libm_*_fpd.a) が IP インテグレーター プロジェクトにコピーされます。
単精度バージョンを利用するには、対応する libm_*_fps.a をコピーするカスタム CPU ドライバーを作成します。この場合、対応する libm_*_fps.a ファイルを libm.a としてプロセッサのライブラリ フォルダー (microblaze_0/lib など) にコピーします。
使用するライブラリをコピーしたら、アプリケーション ソフトウェア プロジェクトを再ビルドします。