MementoMori 4 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба Добрый вечер. Интересовался как-то на какой частоте может работать SDRAM на контроллере STM32H743, мне говорили - 90 МГц, не больше. Некоторые говорили 108 МГц. ЧТо имею - указанный контроллер последней ревизии, той что на 480 МГц, и SDRAM на 166 Мгц. Плата 4-слойная, разводка без изысков и выравниваний (только клок сделал длинее всего остального). Работает на 112 МГц, прошла 10 тыс циклов без единой ошибки. Тест - идеологически выдержанный while(1) { srand(1); for (uwIndex = 0; uwIndex < 4194304; uwIndex++){ *(__IO uint32_t*)(SDRAM_BANK_ADDR + 4*uwIndex) = rand(); } srand(1); for (uwIndex = 0; uwIndex < 4194304; uwIndex++){ if (*(__IO uint32_t*)(SDRAM_BANK_ADDR + 4*uwIndex) != rand()) err++; } ttt++; } Будь это на штатной частоте, я бы успокоился - все уже проверено до нас, раз производитель говорит, что на 90 МГц можно работать, значит он гонял память на этой частоте годами. А вот 112 МГц - это уже разогнано. Если бы SDRAM у меня была только для видеобуфера, то мне было бы спокойно - ну подумаешь, раз в час битый пиксель. Но все же хотелось бы разместить в SDRAM немножко критически важных данных, а немножко - это 1,5-2 МБ, в ОЗУ не влезут. Кто что скажет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба rand() - это не лучший вариант, медленный слишком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба 1 minute ago, aaarrr said: rand() - это не лучший вариант, медленный слишком. Я подожду. Вопрос "сколько нужно" подразумевал не время, а количество циклов. Кстати. Вот мои настройки С чем еще можно поиграться, дабы еще немного поднять частоту? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба 9 minutes ago, MementoMori said: Я подожду Не в этом дело - нагрузка должна быть максимальной. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба 1 minute ago, aaarrr said: Не в этом дело - нагрузка должна быть максимальной. Ваш вариант? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба Погуглите генератор ПСЧ на ассемблере - был такой в несколько команд буквально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба 1 minute ago, aaarrr said: генератор ПСЧ на ассемблере погуглю. А с настройками как? Нормальные? По какому принципу с ними можно поиграться? Не буду же я все возможные комбинации перебирать, это долго. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба Just now, MementoMori said: А с настройками как? Нормальные? По какому принципу с ними можно поиграться? Не буду же я все возможные комбинации перебирать, это долго. А смысл играться с настройками и повышать частоту? Просто сравните времянки в ДШ на процессор и память, все ли в норме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба 32 минуты назад, aaarrr сказал: Погуглите генератор ПСЧ на ассемблере - был такой в несколько команд буквально. Ещё можно в этом качестве использовать аппаратный вычислитель CRC. Это должно быть ещё быстрее. Если он мало тактов на одно вычисление требует в этом МК. И я бы сделал два прохода цикла чтения на один цикл записи. Чтобы было ещё "идеологически выдержаннее". Так как сбои регенерации никто не отменял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mdmitry 0 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба По аналогии с memtest86 для РС, взять исходник memtest, выдрать собственно тестовую часть, собрать и запустить на плате. Там правда паттерны записи в uint64 представлены, что потребует адаптации кода для используемой шины (ширина). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба 3 hours ago, jcxz said: Ещё можно в этом качестве использовать аппаратный вычислитель CRC. Это должно быть ещё быстрее. Ого! И как я раньше до этого не додумался... Спасибо за идею. Тоже тестирую критически важную область SDRAM при каждом включении изделия. В моём МК есть аппаратный CRC32 - на входе байт. Какую константу лучше ему скармливать для получения алярадомайза? Все нули, все единицы или какую иную? 3 hours ago, jcxz said: Так как сбои регенерации никто не отменял. А куда регенерация может подеваться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба 4 hours ago, MementoMori said: Вопрос "сколько нужно" подразумевал не время, а количество циклов. Я тестирую один раз при каждом включении. Не вижу смысла повторять тест многократно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 29 января, 2021 Опубликовано 29 января, 2021 · Жалоба 5 часов назад, MementoMori сказал: мне говорили - 90 МГц, не больше. ...... Работает на 112 МГц, прошла 10 тыс циклов без единой ошибки. Погодите, погодите. Что значит "говорили"? Мужики в гараже?))))))))))) Эту цифру вы должны взять только из официального документа на микроконтроллер. И то, что оно сейчас работает на нештатной частоте ни о чём не говорит. Но если хочется, я бы к тестам памяти добавил бы распыление "фризера" (специальный газ в балончике) на микросхемы микроконтроллера и памяти во время тестов. То же самое бы проделал и с нагревом феном до 80 - 90 градусов. Я обычно всегда так тестирую что-то скоростное и впервый раз заведённое. Нередко нагрев или охлаждение помогают сразу же увидеть ошибки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AleksBak 0 29 января, 2021 Опубликовано 29 января, 2021 · Жалоба 10 часов назад, MementoMori сказал: Кстати. Вот мои настройки А что за м/с памяти у Вас? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 29 января, 2021 Опубликовано 29 января, 2021 · Жалоба 8 часов назад, zombi сказал: Какую константу лучше ему скармливать для получения алярадомайза? Наверное любую. От этого будет зависеть генерируемая последовательность. Но пожалуй лучше не 0 и -1. Можно даже эту константу взять из генератора настоящих случайных чисел. Если такой есть в МК. Цитата А куда регенерация может подеваться? Ну Вы же допускаете, что чип SDRAM может быть неисправен? А почему тогда думаете, что эта неисправность не может находиться в его регенерирующем механизме? Сталкивался с таким чипом однажды: первое чтение - всё ок, 2-е и последующие - данные некоторых бит изменились. 7 часов назад, MrBearManul сказал: к тестам памяти добавил бы распыление "фризера" (специальный газ в балончике) на микросхемы микроконтроллера и памяти во время тестов. То же самое бы проделал и с нагревом феном до 80 - 90 градусов. Это что - такой вариант камеры тепла и холода для бедных? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться