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 の制限がなくなります。
