如果Nios® II 三速以太网 (TSE) 示例设计实例化为使用分层 Qsys 的子系统,则需要对示例软件进行手动修改以定义通往外围设备的正确路径。
示例软件使用 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)
要解决错误,请按照以下步骤在您的应用程序项目中的Nios II SBT Eclipse:
- 打开 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 示例设计的未来版本中
文档。