Xilinx Microblazeコア用に C で記述されたアプリケーションがあります。しかし、パフォーマンスは私が望んでいたものではなく、アセンブリのコア関数のいくつかを書き直すことを検討していました。ただし、Xilinx Platform Studio で両方を 1 つのELFファイルにコンパイルする方法がわかりません。
どうすればいいですか?
Xilinx Microblazeコア用に C で記述されたアプリケーションがあります。しかし、パフォーマンスは私が望んでいたものではなく、アセンブリのコア関数のいくつかを書き直すことを検討していました。ただし、Xilinx Platform Studio で両方を 1 つのELFファイルにコンパイルする方法がわかりません。
どうすればいいですか?
Yann が提案したように、インライン アセンブリを使用できます。方法は次のとおりです。
AR# 18561. 11.1 EDK - C ソース ファイルにインライン アセンブリを含める方法
ただし、コードのプロファイルを作成して、パフォーマンスのボトルネックがどこにあるかを判断してください。ザイリンクスの SDK では、侵入プロファイリングが可能です。GPIO とオシロスコープ (または高速トリガー クロックを備えたロジック アナライザー) を使用して、関数/コード セクションを自分でプロファイリングすることもできます。
パフォーマンスの低下がどこから来ているのかを正確にプロファイリングしましたか?私の経験から、コア関数は非常に高速であるため、コードが問題の原因である可能性があります。最適化(-O3)でコンパイルするか、キャッシュサイズを変更してみてください(キャッシュを使用している場合)。
どの Microblaze 関数を書き換えたいかわかりませんが、いつでもザイリンクス インストール ディレクトリ (たとえば、C:\Xilinx\13.4\ISE_DS\EDK\sw\lib\bsp\standalone_v3_00_a\src\microblaze) に移動して、関数を変更したり、特定のソフトウェア ライブラリに独自のアセンブリ言語ファイルを含めたりすることもできます。