修改时间 06-21-2020 10:58 AM
我使用的板子是基于kintex ultrascale FPGA xcku115,DDR4 是4GB.现在想向DDR4中写数据。DDR4的地址映射是0x1_0000_0000到0x1_ffff_ffff。
如果向地址0x1_0000_f000写数据,则实际上写的数据会到地址0x_0000_f000,而0x1_0000_f000中的数据是随机的,microblaze已经设置为64位模式了。感觉是代码有问题,请问如何修改才能把数据写进64位地址?
Vivado SDK 的代码如下
#include <stdio.h> #include "platform.h" #include "xil_printf.h" #include "xil_io.h" #include "sleep.h" #define DDR_BASEARDDR 0x10000f000 #define DDR_BASEARDDR_1 0x10000fff0 int main() { int i; int32_t r0; int r1; init_platform(); print("Hello World \n\r"); Xil_Out32(DDR_BASEARDDR_1,10); r1 = Xil_In32(DDR_BASEARDDR_1); xil_printf("the address at %x data is : %x \n\r" ,DDR_BASEARDDR_1, r1); for(i=0;i<32;i++) { Xil_Out32(DDR_BASEARDDR+i*0x00000004,i+1); r0=Xil_In32(DDR_BASEARDDR+i*0x4); xil_printf("r0=%0x \n\r",r0); } cleanup_platform(); return 0; }
修改时间 06-23-2020 03:50 PM
如图所示
修改时间 06-22-2020 10:10 AM
你尝试下Xil_Out64和Xil_In64
修改时间 06-22-2020 03:21 PM
你确认下,你在SDK中创建工程的时候,compiler选项是64位还是32位
修改时间 06-23-2020 03:50 PM
如图所示