Nios® V プロセッサー・ソフトウェア開発者ハンドブック

ID 743810
日付 7/08/2024
Public
ドキュメント目次

16.4.3.1. Intel HAL BSP

hal.enable_instruction_related_exceptions_api

  • 識別子:ALT_INCLUDE_INSTRUCTION_RELATED_EXCEPTION_API
  • タイプ: ブール定義
  • デフォルト値: false
  • ディスティネーション・ファイル: system.h
  • 説明: 命令関連の例外を処理するためのハンドラーを登録するためのアプリケーション・プログラム・インターフェイス (API) を有効にします。これらの例外タイプは、メモリー管理ユニット (MMU)、メモリー保護ユニット (MPU)、または他の高度な例外タイプなど、さまざまなプロセッサオプションが有効になっている場合に生成される可能性があります。この設定を有効にすると、例外エントリコードのサイズが増加します。
  • 制限: なし

hal.max_file_descriptors

  • 識別子: ALT_MAX_FD
  • タイプ: 10 進数
  • デフォルト値: 32
  • ディスティネーション・ファイル: system.h
  • 説明: 静的に割り当てられるファイル・ディスクリプターの個数を決定します。
  • 制限: hal.enable_lightweight_device_driver_api が true の場合、ファイル・ディスクリプターは存在しないため、この設定は無視されます。hal.enable_lightweight_device_driver_api が false の場合、HAL は /dev/null、/dev/stdin、/dev/stdout、および /dev/stderr に対してファイル・ディスクリプターを必要とするため、この設定はすくなくとも 4 でなければいけません。この設定は、system.h での ALT_MAX_FD の値を定義します。

hal.sys_clk_timer

  • 識別子: ALT_SYS_CLK
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: なし
  • ディスティネーション・ファイル: system.h
  • 説明: システム・クロックタイマー・デバイスのスレーブ記述子です。このデバイスは周期的な割り込み ("tick") を提供し、通常 RTOS の使用に必要です。この設定は system.h での ALT_SYS_CLK の値を定義します。
  • 制限: なし

hal.timestamp_timer

  • 識別子: ALT_TIMESTAMP_CLK
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: なし
  • ディスティネーション・ファイル: system.h
  • 説明: タイムスタンプ・タイマー・デバイスのスレーブ記述子です。このデバイスは、インテル HAL タイムスタンプ・ドライバーによって高解像度の時間測定に使用されます。この設定は system.h での ALT_TIMESTAMP_CLK の値を定義します。
  • 制限: なし

hal.linker.allow_code_at_reset

  • 識別子: なし
  • タイプ: Boolean 割り当て
  • デフォルト値: 0
  • ディスティネーション・ファイル: なし
  • 説明: リセットアドレスでの初期化コードが許可されているかどうかを示します。true の場合、linker.h でマクロ ALT_ALLOW_CODE_AT_RESET を定義します。
  • 制限 この設定は、外部ブートローダー (例:フラッシュブートローダー) が存在する場合、通常は false です。

hal.linker.enable_alt_load

  • 識別子: なし
  • タイプ: Boolean 割り当て
  • デフォルト値: 1
  • ディスティネーション・ファイル: なし
  • 説明: alt_load() 機能を有効にします。alt_load() 機能は、セクションを .text メモリーから RAM にコピーします。true の場合、この設定は、linker.x 内のセクションの VMA/LMA (仮想メモリーアドレス/低メモリーアドレス) を設定し、 .text メモリーにロードできるようになります。
  • 制限 この設定は、外部ブートローダー (例:フラッシュブートローダー) が存在する場合、通常は false です。

hal.linker.enable_alt_load_copy_exceptions

  • 識別子: なし
  • タイプ: Boolean 割り当て
  • デフォルト値: 0
  • ディスティネーション・ファイル: なし
  • 説明: alt_load() 機能により、 .exceptions セクションをコピーするようにします。true の場合、この設定は linker.h のマクロ ALT_LOAD_COPY_EXCEPTIONS を定義します。
  • 制限: なし

hal.linker.enable_alt_load_copy_rodata

  • 識別子: なし
  • タイプ: Boolean 割り当て
  • デフォルト値: 0
  • ディスティネーション・ファイル: なし
  • 説明: alt_load() 機能により、.rodata セクションをコピーするようにします。true の場合、この設定は linker.h のマクロ ALT_LOAD_COPY_RODATA を定義します。
  • 制限: なし

hal.linker.enable_alt_load_copy_rwdata

  • 識別子: なし
  • タイプ: Boolean 割り当て
  • デフォルト値: 0
  • ディスティネーション・ファイル: なし
  • 説明: 初期化コードにより、 .rwdata セクションをコピーするようにします。true の場合、この設定は linker.h のマクロ ALT_LOAD_COPY_RWDATA を定義します。
  • 制限: なし

hal.linker.enable_exception_stack

  • 識別子: なし
  • タイプ: Boolean 割り当て
  • デフォルト値: 0
  • ディスティネーション・ファイル: なし
  • 説明: 個別の例外スタックの使用を有効にします。true の場合、この設定は linker.h のマクロ ALT_EXCEPTION_STACK を定義し、linker.x に exception_stack というメモリー領域を追加し、linker.x にシンボル __alt_exception_stack_pointer および __alt_exception_stack_limit を提供します。
  • 制限: hal.linker.exception_stack_size および hal.linker.exception_stack_memory_region_name 設定も有効である必要があります。この設定は、MicroC/OS-II BSP に対しては false にする必要があります。EIC が実装されていない場合、割り込みやその他の例外のパフォーマンスを向上するには例外スタックを使用することができます。

hal.linker.exception_stack_memory_region_name

  • 識別子: なし
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: なし
  • ディスティネーション・ファイル: なし
  • 説明: exception_stack メモリー領域を作成するために分割される既存のメモリー領域の名前です。選択した領域名は、exception_stack メモリー領域を作成するために BSP が生成される際、自動的に調整されます。
  • 制限: hal.linker.enable_exception_stack が true の場合にのみ使用されます。

hal.linker.use_picolibc

  • 識別子: USE_PICOLIBC
  • タイプ: Boolean 割り当て
  • デフォルト値: false
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: C ライブラリーのサポートに Newlib の代わりに Picolibc を使用します。
  • 制限: なし

hal.linker.exception_stack_size

  • 識別子: なし
  • タイプ: 10 進数
  • デフォルト値: 1024
  • ディスティネーション・ファイル: なし
  • 説明: 例外スタックのサイズ (バイト単位) です。
  • 制限: なし。hal.linker.enable_exception_stack が true の場合にのみ使用されます。

hal.toolchain.ar

  • 識別子: CMAKE_AR
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: riscv32-unknown-elf-ar
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: アーカイバー・コマンドです。ライブラリー・ファイルを作成します。
  • 制限: なし

hal.toolchain.as

  • 識別子: CMAKE_ASM_COMPILER
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: riscv32-unknown-elf-gcc
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: アセンブラー・コマンドです。 Nios® Vプロセッサー・アセンブリー言語ソースファイル (.S) に使用されることに注意してください。
  • 制限: なし

hal.make.asflags

  • 識別子: COMPILE_LANGUAGE:ASM
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: -Wa,-gdwarf2
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: アセンブラーにのみ渡されるカスタムフラグです。この設定は、toolchain.cmake の COMPILE_LANGUAGE:ASM の値を定義します。
  • 制限: なし

hal.make.cflags_debug

  • 識別子: CMAKE_C_FLAGS_DEBUG および CMAKE_CXX_FLAGS_DEBUG
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: -g
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明:CMAKE_BUILD_TYPE=Debug の際の C/C++ コンパイラー・デバッグ・レベルです。 -g は、一般的なアプリケーションのデバッグに必要なデバッグシンボルのデフォルトセットを提供します。 -g を省略すると、.elf ファイルからデバッグシンボルが削除されます。この設定は、toolchain.cmake 内の CMAKE_C_FLAGS_DEBUG および CMAKE_CXX_FLAGS_DEBUG の値を定義します。
  • 制限: cmake コマンドはフラグ CMAKE_BUILD_TYPE=Debug を使用して実行します。

hal.make.cflags_defined_symbols

  • 識別子: なし
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: なし
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: 定義するプリプロセッサー・マクロです。この設定のマクロ定義は、ソースコードの #define と同じ効果があります。この設定に -DALT_DEBUG を追加すると、ソースファイルの #define ALT_DEBUG と同じ効果があります。この設定に -DFOO=1 を追加するとソースファイルのマクロ #define FOO 1 と同じ効果があります。この設定で定義されたマクロは、BSP 内のすべての .SC ソース ( .c )、および C++ ファイル に適用されます。この設定は、toolchain.cmake のプリプロセッサー・マクロの値を定義します。
  • 制限: なし

hal.make.cflags_optimization

  • 識別子: CMAKE_C_FLAGS_RELEASE および CMAKE_CXX_FLAGS_RELEASE
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: -O2
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: CMAKE__BUILD_TYPE=Release の際の C/C++ コンパイラー最適化レベルです。-O0 = 最適化なし、-O2 = 通常の最適化、などです。コンパイラー最適化によりデバッグ実行中に変数が削除されたり、コードの実行順序が非連続になったりする可能性があるため、デバッグを実行したいコードに対しては -O0 が推奨されます。この設定は、toolchain.cmake 内の CMAKE_C_FLAGS_RELEASE および CMAKE_CXX_FLAGS_RELEASE の値を定義します。
  • 制限: cmake コマンドはフラグ CMAKE_BUILD_TYPE=Release を使用して実行します。

hal.make.cflags_undefined_symbols

  • 識別子: なし
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: なし
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: 定義を解除するプリプロセッサー・マクロです。未定義マクロは定義済みマクロに似ていますが、ソースコード内の #undef ディレクティブを複製します。マクロ FOO の定義を解除するには、この設定で構文 -u FOO を使用します。 これは、ソースファイルの #undef FOO に相当します。注: 構文はマクロ定義とは異なります (スペースがあります。例 -u FOO-DFOO)。この設定で定義されたマクロは、 BSP 内のすべての . S . c 、および C++ ファイル に適用されます。この設定は、toolchain.cmake のプリプロセッサー・マクロの定義を解除します。
  • 制限: なし

hal.make.cflags_user_flags

  • 識別子: なし
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: なし
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: カスタムフラグは、 C、C++、および . S ファイルのコンパイル時に渡されます 。この設定は、toolchain.cmake のカスタムフラグの値を定義します。
  • 制限: なし

hal.make.cflags_warnings

  • 識別子: なし
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: -Wall-Wformat-security
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: C/C++ コンパイラーの警告レベルです。一般的には、-Wall が使用されます。 -Wformat-security は、printf 関数および scanf 関数の呼び出しについて警告します。これは、フォーマット文字列が文字列でない場合やフォーマット引数がない場合に該当します。この設定は、toolchain.cmake の警告レベルを定義します。
  • 制限: なし

hal.make.cxx_flags

  • 識別子: COMPILE_LANGUAGE:CXX
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: なし
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: C++ コンパイラーにのみ渡されるカスタムフラグです。この設定は、toolchain.cmake の COMPILE_LANGUAGE:CXX の値を定義します。
  • 制限: なし

hal.make.link_flags

  • 識別子: なし
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: なし
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: リンカーフラグです。この設定は、toolchain.cmake のリンカーフラグを定義します。
  • 制限: なし

hal.make.objdump_flags

  • 識別子: ToolchainObjdumpFlags
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: -Sdtx
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: Objdump フラグです。この設定は、toolchain.cmake の ToolchainObjdumpFlags を定義します。
  • 制限: なし

hal.toolchain.cc

  • 識別子: CMAKE_C_COMPILER
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: riscv32-unknown-elf-gcc
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: C コンパイラー・コマンドです。
  • 制限: なし

hal.toolchain.cxx

  • 識別子: CMAKE_CXX_COMPILER
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: riscv32-unknown-elf-g++
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: C++ コンパイラー・コマンドです。
  • 制限: なし

hal.toolchain.objdump

  • 識別子: ToolchainObjdump
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: riscv32-unknown-elf-objdump
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: Objdump コマンドです。
  • 制限: なし

hal.make.enable_cflag_fstack_protector_strong

  • 識別子: なし
  • タイプ: Boolean 割り当て
  • デフォルト値: 1
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: toolchain.cmake の fstack-protector-strong コンパイラー・フラグを有効にします。true の場合、-fstack-protector-strong を追加します。
  • 制限: なし

hal.make.enable_cflag_wformat_security

  • 識別子: なし
  • タイプ: Boolean 割り当て
  • デフォルト値: 1
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: フォーマット関数を使用する際にセキュリティーに関する問題を警告するよう、toolchain.cmake の Wformat および Wformat-security コンパイラー・フラグを有効にします。true の場合、-Wformat -Wformat-security を追加します。
  • 制限: なし

hal.toolchain.prefix

  • 識別子: ToolchainPrefix
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: riscv32-unknown-elf-
  • 説明: ツールチェーン実行可能ファイルに使用されるプレフィックスです。この値は、アーカイバー、アセンブラー、コンパイラー、およびリンカーの個々の値に影響します。具体的には、設定に影響します。
    • hal.toolchain.ar
    • hal.toolchain.as
    • hal.toolchain.cc
    • hal.toolchain.cxx
    • hal.toolchain.objdump
    値の例: ${hal.toolchain.prefix}gcc${hal.toolchain.prefix}objdump など

    ただし、オーバーライド設定 hal.toolchain.enable_executable_overrides が有効である場合、個々の設定 hal.toolchain.arhal.toolchain.ashal.toolchain.cchal.toolchain.cxx、および hal.toolchain.objdump がカスタム値に設定される可能性があり、この設定の値から得られるものではなくなります。

    riscv32-unknown-elf ツールチェーンは、インテル FPGA Ashling* RiscFree* IDE で使用可能です。このツールチェーンを使用するには、インテル FPGA Ashling* RiscFree* IDE をインストールする必要があります。

  • 制限: なし

hal.toolchain.enable_executable_overrides

  • 識別子: なし
  • タイプ: Boolean 割り当て
  • デフォルト値: false
  • 説明: ツールチェーン実行可能ファイルにカスタム値の設定を有効にします。hal.toolchain.arhal.toolchain.ashal.toolchain.cchal.toolchain.cxx、および hal.toolchain.objdump をカスタム値に設定することができます。
  • 制限: なし

hal.enable_c_plus_plus

  • 識別子: ALT_NO_C_PLUS_PLUS
  • タイプ: Boolean 割り当て
  • デフォルト値: 1
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: C++ 言語のサブセットのサポートを有効にします。このオプションは、 C++ コンストラクターのサポートを追加することにより、コード・フットプリントを増加させます。複数継承や例外などの特定の機能はサポートされていません。false の場合、toolchain.cmakeALT_NO_C_PLUS_PLUS を追加し、コード・フットプリントを削減します。
  • 制限: なし

hal.enable_clean_exit

  • 識別子: ALT_NO_CLEAN_EXIT
  • タイプ: Boolean 割り当て
  • デフォルト値: 1
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: アプリケーション終了時、ファイル・ディスクリプターを閉じ、C++ デストラクターを呼び出します。Clean Exit を無効にすることで、コード・フットプリントを削減することができます。無効にする場合、toolchain.cmakeALT_NO_CLEAN_EXIT-Wl--defsymexit=_exit を追加します。
  • 制限: なし

hal.enable_exit

  • 識別子: ALT_NO_EXIT
  • タイプ: Boolean 割り当て
  • デフォルト値: 1
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: exit() サポートを追加します。main() ルーチンが exit() を返すか呼び出す場合、このオプションによりコード・フットプリントが増加します。false の場合、toolchain.cmakeALT_NO_EXIT を追加し、フットプリントを削減します。
  • 制限: なし

hal.enable_reduced_device_drivers

  • 識別子: ALT_USE_SMALL_DRIVERS
  • タイプ: Boolean 割り当て
  • デフォルト値: 0
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: 一部のドライバーは、コード・フットプリントを削減するために、機能を制限してコンパイルされています。すべてのドライバーがこの設定を使用するわけではありません。 true の場合、toolchain.cmakeALT_USE_SMALL_DRIVERS を追加します。通常、ドライバーはポーリング・モードでこの設定をサポートします。たとえば、altera_avalon_uart および altera_avalon_jtag_uart 削減ドライバーは、ポーリング・モードで動作します。
  • 制限: なし

hal.enable_lightweight_device_driver_api

  • 識別子: ALT_USE_DIRECT_DRIVERS
  • タイプ: Boolean 割り当て
  • デフォルト値: 0
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: コード・フットプリントおよびデータ・フットプリントを削減するために、軽量デバイスドライバー API を有効にします。true の場合、toolchain.cmakeALT_USE_DIRECT_DRIVERS を追加します。
  • 制限: なし

hal.enable_runtime_stack_checking

  • 識別子: ALT_STACK_CHECK
  • タイプ: Boolean 割り当て
  • デフォルト値: 0
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: HAL ランタイム・スタック・チェック機能をオンにします。この設定を有効にすると、malloc() などでヒープメモリーを割り当てる際に、ヒープがスタックと衝突していないか HAL がチェックすることができます。true の場合、toolchain.cmakeALT_STACK_CHECK を追加します。
  • 制限: なし

hal.enable_sim_optimize

  • 識別子: ALT_SIM_OPTIMIZE
  • タイプ: Boolean 割り当て
  • デフォルト値: 0
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: BSP はキャッシュの初期化、.bss セクションのクリア、長い遅延ループのスキップなど、HDL シミュレーションを高速化するための最適化を行ってコンパイルされています。true の場合、toolchain.cmakeALT_SIM_OPTIMIZE を追加します。
  • 制限: この設定が true の場合、 BSP はハードウェアで実行できません。

hal.log_port

  • 識別子: ALT_LOG_PORT
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: なし
  • ディスティネーション・ファイル: system.h
  • 説明: デバッグ・ロギング・キャラクター・モード・デバイスのスレーブ・ディスクリプターです。定義されている場合、HAL ソースで追加のデバッグメッセージが有効になります。この設定は、Intel FPGA ロギング関数によって使用されます。

hal.log_flags

  • 識別子: ALT_LOG_FLAGS
  • タイプ: 10 進数
  • デフォルト値: 0
  • ディスティネーション・ファイル: toolchain.cmake
  • 説明: この値は、生成された toolchain.cmake の ALT_LOG_FLAGS に割り当てられます。詳細は、hal.log_port を参照してください。この設定の有効範囲は -1 ~ 3 です。

hal.stderr

  • 識別子: ALT_STDERR
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: なし
  • ディスティネーション・ファイル: system.h
  • 説明: STDERR キャラクター・モード デバイスのスレーブ・ディスクリプターです。この設定は、system.h の ALT_STDERR ファミリーの定義で使用されます。

hal.stdin

  • 識別子:ALT_STDIN
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: なし
  • ディスティネーション・ファイル: system.h
  • 説明: STDIN キャラクター・モード デバイスのスレーブ・ディスクリプターです。この設定は、system.h の ALT_STDIN ファミリーの定義で使用されます。

hal.stdout

  • 識別子: ALT_STDOUT
  • タイプ: 引用符で囲まれていない文字列
  • デフォルト値: なし
  • ディスティネーション・ファイル: system.h
  • 説明: STDOUT キャラクター・モード デバイスのスレーブ・ディスクリプターです。この設定は、system.h の ALT_STDOUT ファミリーの定義で使用されます。