Цитата(AVI-crak @ Oct 1 2016, 23:41)

Например адреса чтения/записи - у вас кстати второй банк 0xD0000000 ++.
Соответствие выставленных таймингов с тактовой и временем из доки на память. В доке большая часть параметров привязана к времени а не к тактовой. А у вас тактовая памяти получается 80мгц !!! - ниже некуда.
Первый PLL не может корректно умножать пограничные частоты в 1мгц и в 2мгц - середина умножается корректно и гладко, 1,5мгц - идеально.
Кубик игнорирует установку подтяжки на используемые ноги, а делать это ручным способом весьма утомительно.
Дата в землю, адрес без подтяжки, управление: sdclk, nbl0, nbl1 - в землю, - остальное в плюс. После чего становится доступным спящий режим.
Забыл: ноги нужно лочить, чтоб не слетали при дальнейшем неаккуратном инсталле.
Ну и наверное главное, хотя уже упомянули создание раздела в линковщике - забыли напомнить про копирование инициализированных переменных из флеша. Сделать эту операцию корректно из С кода - весьма проблематично. А в случае применения хала - практически не реально.
Так-шта в выигрыше старый добрый SystemInit запускаемый до копирования в sdram кучи переменных, с таким расчётом чтоб майн запустить на всём готовом.
//Например адреса чтения/записи - у вас кстати второй банк 0xD0000000 ++.
да, именно такой адрес у SDRAM_BASE. Уходит в hardfault внутри:
status = HAL_SDRAM_Read_16b(&hsdram1, (uint32_t*)SDRAM_BASE, buf, SDRAM_SIZE);
на строчке *pDstBuffer = *(__IO uint16_t *)pSdramAddress;
дизассемблер: ldrh.w r4, [r1], #2
при этом pDstBuffer = 0x2002fff0 (т.е. буфер из внутреннего ОЗУ МК),
pSdramAddress = 0xd0000000
SDRAM_SIZE = 4 (чисто для проверки)
//Соответствие выставленных таймингов с тактовой и временем из доки на память
- это еще смотрю
//Дата в землю, адрес без подтяжки, управление: sdclk, nbl0, nbl1 - в землю, - остальное в плюс. После чего становится доступным спящий режим.
сделал, не помогает
//Забыл: ноги нужно лочить, чтоб не слетали при дальнейшем неаккуратном инсталле.
- это есть в ioc
//Ну и наверное главное, хотя уже упомянули создание раздела в линковщике - забыли напомнить про копирование инициализированных переменных из флеша.
//Сделать эту операцию корректно из С кода - весьма проблематично. А в случае применения хала - практически не реально.
//Так-шта в выигрыше старый добрый SystemInit запускаемый до копирования в sdram кучи переменных, с таким расчётом чтоб майн запустить на всём готовом.
Можно тут подробнее? Пока во внешнем ОЗУ я ничего не храню и не планирую хранить.