記事 ID: 000079417 コンテンツタイプ: トラブルシューティング 最終改訂日: 2021/08/28

Nios IIコードを別々のメモリー位置に配置すると、「ストランプションが収まるように唆唆された:R_NIOS2_CALL26」というエラーが発生するのはなぜですか?

環境

    インテル® Nios® II プロセッサー
BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細

このエラーは、Nios II コンパイラーが 256MB の境界に制限がある コール 命令を使用するため、メインメモリーから 256MB 以上離れたメモリー位置に関数がある場合に発生します。

 

解決方法

この問題には 2 つの回避策があります。

1) ACDS バージョン 13.1 では、-relax-allオプションが実装され、コール命令ではなくcallr命令が使用されます。Eclipse向けソフトウェア・ビルド・ツール で、アプリケーションまたは BSP プロパティにユーザーフラグとして-ウェープ、-relax-allオプションを追加します。

この回避策は 、callr 命令が コール 命令と比較してアセンブリー命令を多く使用するため、ソフトウェアのパフォーマンスに影響を与える可能性があります。

2) コール 命令はアドレスの MSB 4 ビットを計算しないため、256MB の境界制限があります。メモリーベースアドレスの MSB 4 ビットが同じになるようにメモリーを探し、機能が 256MB の境界内にあることを確認します。

例えば。SDRAM: 0x10000000、オンチップメモリー: 0x12000000

または SDRAM: 0x08000000、オンチップ・メモリー: 0x02000000

関連製品

本記事の適用対象: 1 製品

インテル® プログラマブル・デバイス

1

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。