[英]Use of Xil_Out32 in Xilinx SDK
在 Vivado 中,我成功地制作了一個簡單的框圖來控制我的 Zybo 板的 LED。 我可以觀察到我的LEDs is: 0x4120 0000
的偏移地址LEDs is: 0x4120 0000
並且High 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進行了編程並運行了上面的代碼。 但仍然沒有任何成功。 有人可以指出我的錯誤嗎?
提前致謝
你的錯誤是使用&LED_DATA
,它返回指針LED_DATA
的地址,而不是我認為你期望的0x41200000
。
嘗試
Xil_out32(0x41200000, 0xFFFFFFFF);
或者
*LED_DATA = 0xFFFFFFFF;
嘗試
#define ADDR 0x41200000 // write this before main() function.
然后你必須在 main 函數中添加以下行。
Xil_Out32(ADDR + 0x00000000) , 0xFFFFFFFF); //All LEDs ON
這應該有效。
這項工作
#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);
感謝您對這篇文章。 它幫助我解決了 sdk 中的編譯問題。 問題是下面的行無法編譯。
xil_printf("寫的是:0x%08x \\n\\r", *(baseaddr_p+0));
我添加了這個並且它起作用了:
非常感謝拉賈特·塞瓦爾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.