1

Xilinx Microblazeコア用に C で記述されたアプリケーションがあります。しかし、パフォーマンスは私が望んでいたものではなく、アセンブリのコア関数のいくつかを書き直すことを検討していました。ただし、Xilinx Platform Studio で両方を 1 つのELFファイルにコンパイルする方法がわかりません。

どうすればいいですか?

4

4 に答える 4

2

Yann が提案したように、インライン アセンブリを使用できます。方法は次のとおりです。

AR# 18561. 11.1 EDK - C ソース ファイルにインライン アセンブリを含める方法

ただし、コードのプロファイルを作成して、パフォーマンスのボトルネックがどこにあるかを判断してください。ザイリンクスの SDK では、侵入プロファイリングが可能です。GPIO とオシロスコープ (または高速トリガー クロックを備えたロジック アナライザー) を使用して、関数/コード セクションを自分でプロファイリングすることもできます。

于 2011-01-24T18:59:18.273 に答える
1

パフォーマンスの低下がどこから来ているのかを正確にプロファイリングしましたか?私の経験から、コア関数は非常に高速であるため、コードが問題の原因である可能性があります。最適化(-O3)でコンパイルするか、キャッシュサイズを変更してみてください(キャッシュを使用している場合)。

于 2010-01-19T11:28:06.303 に答える
1
  1. コンパイラがインライン アセンブリを実装しているかどうかを確認します。asm()「関数」を試してください。変数参照をサポートしていることを確認してください。コンパイラが GCC ベースの場合、これは簡単です。
  2. 生のアセンブラーをいつでも作成し、アセンブルして、アプリケーションにリンクできます。互換性のある関数を作成するには、コンパイラの ABI を理解する必要があります。
于 2010-01-08T07:56:00.020 に答える
0

どの Microblaze 関数を書き換えたいかわかりませんが、いつでもザイリンクス インストール ディレクトリ (たとえば、C:\Xilinx\13.4\ISE_DS\EDK\sw\lib\bsp\standalone_v3_00_a\src\microblaze) に移動して、関数を変更したり、特定のソフトウェア ライブラリに独自のアセンブリ言語ファイルを含めたりすることもできます。

于 2013-03-20T22:29:00.297 に答える