有没有办法将设计参数从自定义 IP 传递到软件

Is there a way to pass a design parameter from a custom IP to software

我有一个带有一些设计参数的自定义 IP。 它们从 IP 公开,因此我可以在块设计中使用 IP 时自定义它们。

我希望能够在我的固件代码中使用这些参数。

例如,当使用简单的 GPIO 时,xparameters.h header:

中公开了几个参数
#define XPAR_GPIO_0_BASEADDR 0x41200000
#define XPAR_GPIO_0_HIGHADDR 0x4120FFFF
#define XPAR_GPIO_0_DEVICE_ID XPAR_GPIO_DEVICE_ID
#define XPAR_GPIO_0_INTERRUPT_PRESENT 0
#define XPAR_GPIO_0_IS_DUAL 0

除了最感兴趣的基地址外,IS_DUAL 参数是在块设计中实例化 IP 时设置的。

对于我的自定义 IP,只有 BASEADDRHIGHADDR 在 header 中公开。

所以,问题是,有没有办法公开我的自定义参数?

xparameters.h的内容由IP的软件驱动中的TCL脚本生成。如果您还没有创建驱动程序,默认情况下您将获得通用驱动程序,它只是将这些地址添加到 xparameters.h.

您可以查看 gpio 驱动程序以了解如何执行您想要的操作。它位于 data/embeddedsw/XilinxProcessorIPLib/drivers/gpio_v4_4 下的 SDK 安装目录中,TCL 脚本位于 data/gpio.tcl 下。在该脚本中,有一个在生成 BSP 时运行的生成函数,您可以在其中添加代码来执行您需要的任何操作,包括将文本输出到 xparameters.h。 define_include_file 行是输出 GPIO 内核的所有参数的行。

您可以使用 gpio 或其他之一作为创建您自己的驱动程序的参考。完成后,将其添加到 SDK 中的存储库列表,然后修改 BSP 配置以将该驱动程序用于您的 IP 实例。 (或者如果您创建新的 BSP,它可能会 select 自动执行。)