This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Problem with EMIFA after 6678 EVM reset

Hi,

I'm trying to use the EMIF16 module but I'm seeing a strange behaviour that always happen the first time I make writes after a full reset of the EVM or after a power cycle.
The problem is: the EMIFA sends a zero address when I'm using other address and after sending a 0, it sends the correct address. It sends the 0 even if I don't use the position 0 of the memory space. This doesn't ahppen for every positions.
After I do a set of writes and reads from the memory, the address bus seems to work properly (without sending the extra zeros). Other problem about sending the 0 as addr is that the time that EMIFA is 0 looks to be constant, it doesn't matter the SETUP, STROBE and HOLD times configured.
Other thing: if I look in the memory browser after the writes, I see that in the position 0 there's a different value, e.g. the value of position 2 is in both posistions.

Like:
1st write:
0x74000000 0x8888
0x74000002 0x0000
0x74000004 0x0000

2nd write:
0x74000000 0x8888
0x74000002 0xAAAA
0x74000004 0x0000

3rd write:
0x74000000 0x1111
0x74000002 0xAAAA
0x74000004 0x1111

Here is a picture of what I'm saying:


Any idea what could be causing this?

Thanks

  • Johannes,

    What memory have you connected to the EMIFCE1z chip select?

    Do you have a sample waveform capture for this case: "After I do a set of writes and reads from the memory, the address bus seems to work properly (without sending the extra zeros)."

     

  • Hi Aditya,

    Thanks for your response.

    Just explaining a bit more about what I'm doing: I start the EVM, run the gel script and start the application, what the application does is: write a couple of data and then read back the same data, just to see if write and read worked properly, and finish hte applicatio, in this case I get the wrong address showing up sometimes. After that, I just do a Restart from CCS and run the same program again, this time the address bus is OK (I can't guarantee that the address will never go wrong, but up to now it didn't and in the first run after reset it's always wrong. That's why I'm saying they're OK).

    Here are the signals without error:

    Thanks

  • Johannes,

    Thanks for the signal capture. That looks expected.

    You are using CE1 that routes to the 80-pin I/O connector. Are you plugged in via the connector to an SRAM device?

    Another question for my understanding - when you start the EVM and run the GEL script, what is GEL API that you call and at that point are you also able to correctly access the on-board NAND-flash? I am just curious what is the initial state of the EMIF16 and if you face any problems accessing the NAND as well at power up.

  • Aditya,

    Yes I'm using CE1 that is routed to the 80-pin connector and then to the memory. The GEL that I'm using is the default one. I haven't tried to use the NAND but I may try and see the result. I can't directly access the NAND memory (like the memory browser), right? Only through EMIF, right?

    Thanks

  • Johannes,

    So you call the Global_Default_Setup API?

    I have not tried connecting to an external memory through the connector on the EVM, so I do not know what behavior I should expect. So it would be good to know if you can try to access the NAND memory to verify if EMIF16 works with the on-board memory after startup.

    You are right, you cannot access NAND through the browser since it uses a multiplexed data/address bus...you need to use the specific address-command-data sequence for the NAND device to access it. A write to an address followed by readback will prove if the NAND code works correctly.