階層型 Qsys を使用して、Nios® II・トリプル・スピード・イーサネット (TSE) サンプルデザインをサブシステムとしてインスタンス化する場合、ペリフェラルへの正しいパスを定義するためにサンプル・ソフトウェアに手動で変更を加える必要があります。
サンプル・ソフトウェアは TSE サンプルデザインのコンポーネントのインスタンス名を使用しますが、TSE デザインが Qsys のサブシステムとしてインスタンス化されている場合、階層名が付いています。 これにより、Nios II ソフトウェア・ビルド・ツール (SBT) のコンパイル時に以下のようなエラーが発生します。
error: 'EXT_FLASH_NAME' undeclared here (not in a function)
error: 'TSE_MAC_BASE' undeclared here (not in a function)
error: 'TSE_MAC_BASE' undeclared here (not in a function)
error: 'TSE_MAC_TRANSMIT_FIFO_DEPTH' undeclared here (not in a function)
error: 'TSE_MAC_RECEIVE_FIFO_DEPTH' undeclared here (not in a function)
error: 'TSE_MAC_USE_MDIO' undeclared here (not in a function)
error: 'TSE_MAC_ENABLE_MACLITE' undeclared here (not in a function)
error: 'TSE_MAC_MACLITE_GIGE' undeclared here (not in a function)
error: 'TSE_MAC_IS_MULTICHANNEL_MAC' undeclared here (not in a function)
error: 'TSE_MAC_NUMBER_OF_CHANNEL' undeclared here (not in a function)
エラーを解決するには、Eclipse向けNios II SBT のアプリケーション・プロジェクト内の以下の手順に従ってください。
- network_utilities.c を開き、「EXT_FLASH」->「_EXT_FLASH」の検索と置き換えを実行します。
- 例: トップレベルの .qsys システムが最上位の .qsys プロジェクトで「QSYS_TOP」と呼ばれる場合、「EXT_FLASH」を検索し、「QSYS_TOP_EXT_FLASH」で置き換えます。
- 以前は:
#define EXT_FLASH_NAME "/dev/ext_flash"
- 後:
#define QSYS_TOP_EXT_FLASH "/dev/ext_flash"
- 例: トップレベルの .qsys システムが最上位の .qsys プロジェクトで「QSYS_TOP」と呼ばれる場合、「EXT_FLASH」を検索し、「QSYS_TOP_EXT_FLASH」で置き換えます。
- tse_my_system.c: 行 10 を編集して、TSE 情報構造の作成時に使用される#definesマクロを更新します。
- 以前は:
alt_tse_system_info tse_mac_device[MAXNETS] = { TSE_SYSTEM_EXT_MEM_NO_SHARED_FIFO(TSE_MAC, 0, SGDMA_TX, SGDMA_RX, TSE_PHY_AUTO_ADDRESS, 0, DESCRIPTOR_MEMORY) };
- 後:
alt_tse_system_info tse_mac_device[MAXNETS] = { TSE_SYSTEM_EXT_MEM_NO_SHARED_FIFO(QSYS_TOP_TSE_MAC, 0, QSYS_TOP_SGDMA_TX, QSYS_TOP_SGDMA_RX, TSE_PHY_AUTO_ADDRESS, 0, QSYS_TOP_DESCRIPTOR_MEMORY) };
- 以前は:
- ソフトウェア・アプリケーション・プロジェクトの再構築
この情報は、Nios IIおよび TSE サンプルデザインの今後のバージョンに含まれる予定です。
ドキュメント。