AnsweredAssumed Answered

Incorrect DDR writing

Question asked by alexbobkov on Feb 15, 2018
Latest reply on Mar 23, 2018 by Jithul_Janardhanan

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

Outcomes