Incorrect DDR writing

Hi Everyone,

I am testing bf707-blip2 board. I have created empty project with default settings in CrossCore studio and created a following programm:

-----------------------------
#include <sys/platform.h>
#include "adi_initialize.h"
#include "test7.h"
#include "stdio.h"

#pragma align(32)
unsigned char A[1024*1024];

char __argv_string[] = "";

int main(int argc, char *argv[])
{
    adi_initComponents();
    
    /* Begin adding your custom code here */

    for(int i=0;i<16;i++) A[i]=i;

    for(int i=0;i<16;i++)
        printf("%i,",A[i]);

    return 0;
}
-----------------------------

It writes 0,1,2,... into A array and then read and print content. But the output looks very strange:
4,5,6,0,0,1,2,3,12,13,14,7,8,9,10,11

The memory dump have same values, so I think memory reading is correct, and problems appears when I write those values. The disasembly also have nothing suspicious.

Is anybody know what happens and how to fix it?

The problem remains if array have another type (output changes, but still incorrect).
The problem remains if I use another alignment.
The problem disappears when I use simulator instead of emulator.
The problem disappears when I reduce array size and place it in any other memory type, so I think it is something wrong with DDR controller.

--
Best regards,
Alex