Появились задачи, где необходимо использовать ОЗУ, для тестирования использую spartan-6 lx150 и ddr3 (nanya nt5cb64m16dp-cf) и ISE 14.3
При попытке выполнить следующий код программа зависает на втором цикле.
CODE
#include <stdio.h>
#include "platform.h"
#include "xparameters.h"
#include "xuartlite.h"
#include "xuartlite_l.h"
#include "xgpio.h"
XGpio leds;
XUartLite rxtx;
u8 *DDR = (u8 *)XPAR_S6DDR_0_S0_AXI_BASEADDR;
u32 k=0;
int main()
{
init_platform();
XUartLite_Initialize(&rxtx,XPAR_AXI_UARTLITE_0_DEVICE_ID);
XGpio_Initialize(&leds, XPAR_AXI_GPIO_0_DEVICE_ID);
XGpio_SetDataDirection(&leds,1,0);
XGpio_DiscreteWrite(&leds,1,9);
{
u32 f=0;
for (f=0;f<1000;f++)
{u8 i=0;
i=XUartLite_RecvByte(XPAR_AXI_UARTLITE_0_BASEADDR);
//DDR[f]=i; --отличие двух циклов только в этом, зацикливается только второй
XGpio_DiscreteWrite(&leds,1,1);
}
for (f=0;f<1000;f++)//переменные или вообще не изменяются или наоборот, например f=0 постоянно или f=6639462 - норма
{u8 i=0;
i=XUartLite_RecvByte(XPAR_AXI_UARTLITE_0_BASEADDR);
DDR[f]=i;
XGpio_DiscreteWrite(&leds,1,2);
}
while (1)
{
u8 r=0;
for(r=0;r<255;r++)
{
XGpio_DiscreteWrite(&leds,1,(r<<1));
}
}
}
cleanup_platform();
return 0;
}
#include "platform.h"
#include "xparameters.h"
#include "xuartlite.h"
#include "xuartlite_l.h"
#include "xgpio.h"
XGpio leds;
XUartLite rxtx;
u8 *DDR = (u8 *)XPAR_S6DDR_0_S0_AXI_BASEADDR;
u32 k=0;
int main()
{
init_platform();
XUartLite_Initialize(&rxtx,XPAR_AXI_UARTLITE_0_DEVICE_ID);
XGpio_Initialize(&leds, XPAR_AXI_GPIO_0_DEVICE_ID);
XGpio_SetDataDirection(&leds,1,0);
XGpio_DiscreteWrite(&leds,1,9);
{
u32 f=0;
for (f=0;f<1000;f++)
{u8 i=0;
i=XUartLite_RecvByte(XPAR_AXI_UARTLITE_0_BASEADDR);
//DDR[f]=i; --отличие двух циклов только в этом, зацикливается только второй
XGpio_DiscreteWrite(&leds,1,1);
}
for (f=0;f<1000;f++)//переменные или вообще не изменяются или наоборот, например f=0 постоянно или f=6639462 - норма
{u8 i=0;
i=XUartLite_RecvByte(XPAR_AXI_UARTLITE_0_BASEADDR);
DDR[f]=i;
XGpio_DiscreteWrite(&leds,1,2);
}
while (1)
{
u8 r=0;
for(r=0;r<255;r++)
{
XGpio_DiscreteWrite(&leds,1,(r<<1));
}
}
}
cleanup_platform();
return 0;
}
При этом, если число записываемых элементов меньше 200-300, то программа выполняется без проблем, подскажите, пожалуйста, где ошибка и как можно ее обойти