Intel:Unable to reach ... from the global pointer ... because the offset ... is out of the allowed range, -32678 to 32767

Cyclone Nios II

カテゴリー:Nios® II
ツール:Nios® II SBT
デバイス:Cyclone® 10 LP

Nios® II プロジェクトをビルドした際に発生するエラーです。

Global Pointer Register (GP = r26) は、初期化時に .sdata,.sdata2,.sbss,.sbss2 領域の先頭アドレスをポイントしておくことで、グローバル変数へのアクセスを高速化するための汎用レジスタです。
8バイト以下のグローバル変数は、高速化のために下記画像の赤枠に記載の領域に格納され、容量が 64KB を超えた場合 このエラーが発生します。

エラーを回避するには、下記のいずれかを行ってください。

● 8バイト以下のグローバル変数を少なくしてください。
  8バイト以下のレジスタのみ、.sdata,.sdata2,.sbss,.sbss2に格納されるため、
  変数を少なくすることによりエラーが解消いたします。

または

● .BSP Editor > Main タブ > Settings > hal > make > cflags_mgpopt > Value = none に設定してください。
  この設定によりGP アクセス対象への割り当てが行われないため、64KB の制限がなくなります。

経験豊富なFAEが
無料でご相談を承ります。

特定製品の仕様からパーツの選定まで、当社のFAEが皆様のテクニカルなお悩みに無料で回答します。ぜひ、お気軽にご相談ください。