2

在 Vivado 中,我成功地制作了一个简单的框图来控制我的 Zybo 板的 LED。我可以观察到 myLEDs is: 0x4120 0000High Address is 0x4120 FFFF. 现在,当我转到 SDK 时:

#include <xil_printf.h>
#include <xil_types.h>
#include "platform.h"
#include "xgpio_l.h"

volatile u32 *LED_DATA = (u32 *) 0x41200000 ;   
int main()
{

    init_platform();

    xil_printf(" Writing to LEDs:   \n\r");
    Xil_Out32((&LED_DATA) + (0x00)  , 0xFFFFFFFF);     //All LEDs ON

    cleanup_platform();
    return 0;
}

我对 FPGA 进行了编程并运行了上面的代码。但仍然没有任何成功。有人可以指出我的错误吗?

提前致谢

4

4 回答 4

0

你的错误是使用&LED_DATA,它返回指针的地址LED_DATA,而不是0x41200000我认为你期望的那样。

尝试

Xil_out32(0x41200000, 0xFFFFFFFF);

或者

*LED_DATA = 0xFFFFFFFF;
于 2015-04-11T15:26:33.230 回答
0

尝试

#define ADDR 0x41200000 // write this before main() function.

然后您必须在 main 函数中添加以下行。

Xil_Out32(ADDR + 0x00000000)  , 0xFFFFFFFF);     //All LEDs ON

这应该有效。

于 2015-05-09T00:49:47.310 回答
0

这部作品

#define ADDRESS_GPIO_0   0x41200000     // vivado block diagram address editor

XGpioPs_Config * ConfigPtr1 = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);
XGpioPs_CfgInitialize(&Gpio1, ConfigPtr1, ADDRESS_GPIO_0);
XGpioPs_SetDirection(&Gpio1, XGPIOPS_BANK0, 0x0F);
XGpioPs_Write(&Gpio1, XGPIOPS_BANK0, 0x0F);
于 2017-12-13T21:35:38.553 回答
0

感谢您对这篇文章。它帮助我解决了 sdk 中的编译问题。问题是下面的行无法编译。

xil_printf("写了: 0x%08x \n\r", *(baseaddr_p+0));

我添加了这个并且它起作用了:

包括“xil_printf.h”

非常感谢拉贾特·西瓦尔

于 2019-10-04T19:42:49.597 回答