[quote="please_work"]I've solved this issue, I though the change for the number of rows within at91sam9g45ekes.c would have flowed onto the relevant parts of code, but ddramc. requires manually editing for writes to BA[1] and BA[0] based on the number of rows. I now have:
*((unsigned int *)(ddram_address + 0x2000000)) = 0; // Was 0x4000000 - shifted right by 2 to adjust for 13 row bits (See pg233 of AT91SAM9G45 datasheet)
Personally i would used the already defined constant for the number of rows to generate the value above but anyway.
And for the record i debugged in the following order:
- Checked if the problem occurred on another board - and had identical issues
- Checked if the problem occured on the other DDR bus (second EBI bus) - which it did
- Started looking for DDR config issues and re-reading DDR setup in datasheet.
Hope this can be help to someone else.
Also check
http://www.at91.com/forum/viewtopic.php/t,19409/ this for more info.
p.s. I agree with your original comment, steps 16 and 18 seem to disagree with the datasheet.[/quote]
Thank you for reply!
I will try your recomendations. But i use not ES silicon. In my board i solve problem - it was some problems with CLK signals (routing board mistakes). Now i solder samsung memory K4T51163QI and all seems fine. Use standart procedure for config EBI0 DDR2 controller, and all tests passes ok. But i don't understand why it works - "..16 and 18 seem to disagree with the datasheet" ... but it works. May be DDR2 controller state machines resolve this