Здравствуйте,

Имеется плата с TI OMAP5912 и Micron MT48LC8M16A2 SDRAM chip.
ARM работает на 192 MHz, память на 96 MHz. Я написал bootloader, который делает
всю инициализацию (работая в SRAM) и затем запускает тест SDRAM. Простой
тест записи-чтения patterns в различные rows-columns проходит без проблем.
Случайно поймал периодическую ошибку чтения в случае записи-чтения измнеяющегося
значения по одному и тому же адресу (от конкретного значения адреса ничего не зависит).
Около 10 тыс. циклов проходит нормально, затем результат чтения не совпадает с записью.
Записанное значение корректно. Если тест запустить опять, то все повторится ~ через 10 тыс. циклов.
Такое ощущение, что как-то связано с resresh'ом. Пробовал играться с параметрами SDRAM контроллера,
но безрезультатно. Единственный вариант, как это удалось побороть - это понизить частоту на Traffic Controller до 48 MHz, что не очень приятно.

Сможет ли кто-нибудь, что-нибудь присоветовать?
Заранее благодарен.
--------------------------------------------------------------
Оригинальная конфигурация

8-bit Prescaler'a CLK_ARM_CKCTL(0xFFFECE00) = 1 Sets TC divider CK_GEN3/2

setup SDRAM type as Regular SDRAM and operation mode as HPHB
TC_EMIFF_OP(0xFFFECC80) = 0x00000004

SDRAM Config (frequency range (SDF0 Trc = 9, Tras = 6, Trp = 3, Trcd = 3, Trrd = 2))
TC_EMIFF_CONFIG(0xFFFECC20) =
(0x5AA << 8) /* Autorefresh counter value */
|(0x0B << 4) /* SDRAM internal organization (128Mx16x4b) */
| 0x0000000C /* Autorefresh enable by burst of 8 commands */
|(1 << 1) /* reserved, must be 1 */

CAS idle 3, full page burst, serial mode
TC_EMIFF_MRS_NEW(0xFFFECC70) = 0x00000007|0x00000030

Autorefresh counter был рассчитан на основании
Autorefresh counter = (refresh rate/#rows/system freq(ns)) - 50
ARCV = 64ms/4096/(1/TC_CK) - 50 = (64*10^6(ns))/4096/10.41 - 50 = 1500 - 50 = 1450 (0x5AA)
Пробовал делать поправки на burst of 8 commands (хотя hardware должно само смасштабировать),
не помогло