我有一个带有设计参数的自定义IP。它们是从IP公开的,因此在块设计中使用IP时,我可以自定义它们。
我希望能够在固件代码中使用这些参数。
例如,当使用简单的GPIO时,xparameters.h
标头中包含几个参数:
#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,仅BASEADDR
和HIGHADDR
显示在标题中。
所以,问题是,有没有办法公开我的自定义参数?
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,它可能会自动选择它。)