PDA

Просмотр полной версии : Тесты памяти



ivagor
04.09.2019, 17:19
Подумал, что стоит сделать отдельную тему.
Для затравки предлагаю свой тест в двух вариантах.
Главные особенности:
1. Операции записи в память и проверки разнесены во времени.
2. Целостность самого теста контролируется с использованием CRC. Не контролируется фрагмент памяти 256 байт с переменными, протоколом и стеком.
Предварительную версию (https://zx-pk.ru/threads/8636-vektor-start-1200-obsuzhdenie.html?p=1025102&viewfull=1#post1025102) shapipovo проверил на реале и она обнаружила ошибку, что дает некоторую уверенность в полезности теста.
Основное отличие версий 2 и 3 от первой - поддержка протокола на 32 ошибки. Т.е. тестовый прогон не прерывается сразу при обнаружении ошибки. Адрес, записанное и прочитанное значения заносятся в протокол. Печать результатов прогона производится по его окончанию или досрочно при переполнении протокола ошибок.
После каждого прогона печатается его номер и CRC программы (для memtest2 эталон - 2EB1, для memtest3 - B8D3).
Далее печатаются ошибки при их наличии. Каждая ошибка печатается в одной строке: адрес, записанный байт, прочитанный байт.
Для запуска следующего прогона нужно нажать УС или СС или РУС/ЛАТ
Тесты универсальные и подходят для любого известного клона вектора.
memtest3 полный (как memtest) - проверяет 256 комбинаций для каждой тестируемой ячейки. Время одного прогона в районе восьми минут.
memtest2 сокращенный - проверяет 4 комбинации для каждой тестируемой ячейки. Время одного прогона несколько секунд.

shapipovo
05.09.2019, 18:45
Хорошая прога. У меня на Старт-1200 техпрогон проходил без ошибок. Этот тест нашел МС памяти сбоящей при пониженном напряжении питания +5 вольт.

ivagor
05.09.2019, 21:00
shapipovo, спасибо на добром слове, но хочу дополнить.
1. Если некоторые озушки полностью неработоспособны, то
или
1.1. При старте вектора сразу будут видны характерные вертикальные полосы на карте загрузки, если сбойные ячейки в области C000-DFFF.
или
1.2. Не получится запустить практически любую загруженную программу, если сбойные ячейки в области 0000-1FFF. Причем загрузчик может рапортовать, что загрузка прошла успешно, т.к. считываемую программу он только пишет в память, но не читает.
или
1.3. Если "мертвые" ячейки в других областях, то их обнаружит любой тест памяти, в т.ч. и тест техпрогона.
2. А вот если ошибка плавающая, то техпрогон вряд ли ее обнаружит. И memtest2 тоже.
memtest или memtest3 скорее всего обнаружат плавающие ошибки в старших битах, насчет младших полной уверенности нет. В идеале можно было бы сделать симметричный тест всех бит всех ячеек, но тогда время тестирования будет больше суток. Думаю на практике можно обойтись двумя зеркальными проходами, что увеличит время тестирования только в два раза.