Перейти к содержанию
    

Алгоритм теста внешнего статического ОЗУ.

Так точно, можно взяться за ум и сотворить алгоритм. И что же, быть первопроходимцем? Мне думается, где-то это все уже придумано до нас.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так точно, можно взяться за ум и сотворить алгоритм. И что же, быть первопроходимцем? Мне думается, где-то это все уже придумано до нас.

Без сомнения. Когда-то возился с Синклерами, там в тестовом ПЗУ и был сделан тест памяти, который выводил на экран сообщения об ошибках в Адресе или в Данных...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот, клюнул петух, пришлось вернуться к задаче. Делюсь соображениями.

Записываю последовательно по всей памяти данные - младшую часть адреса (16 битов из 18): 0, 1, 2 ... При записи тут же читаю. Это позволяет определить неисправность шины данных (ячейка памяти одна и та же). Или определить, что вообще нет записи или чтения. Затем делаю проход чтения по всей памяти, сравниваю с тем, что должно быть. Поскольку проверка шины данных уже пройдена, здесь ошибки могут быть вызваны только неисправностью шины адреса - не туда было записано, вот и читается не то. Алгоритмом конкретного определения неисправности с точностью до бита не занимался, пока на скорую руку достаточно такого грубого определения. Но, вижу, так можно и конкретно определять, что там со всеми цепями на плате или внутри микросхемы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, ViKo сказал:

Записываю последовательно по всей памяти данные - младшую часть адреса (16 битов из 18): 0, 1, 2 ... При записи тут же читаю. Это позволяет определить неисправность шины данных (ячейка памяти одна и та же). Или определить, что вообще нет записи или чтения. Затем делаю проход чтения по всей памяти, сравниваю с тем, что должно быть. Поскольку проверка шины данных уже пройдена, здесь ошибки могут быть вызваны только неисправностью шины адреса - не туда было записано, вот и читается не то. Алгоритмом конкретного определения неисправности с точностью до бита не занимался, пока на скорую руку достаточно такого грубого определения. Но, вижу, так можно и конкретно определять, что там со всеми цепями на плате или внутри микросхемы.

1. Записываете ячейку данными и тут же читаете. Но ведь при этом могут быть кз между проводами и обрывы в шине. КЗ запишет данные в неправильную ячейку и оттуда же эти данные прочтет. Если будет КЗ с линией данных, то хоть как-то можно это поймать. А вот при обрыве будут играть роль только остаточные заряды на шине... И поймать это будет сложно...

Когда-то в Синклерах применяли код Хэмминга. В ячейку писали данные, которые дополняли Адрес+Часть данных. И по искаженным принятым данным можно было вычислить одиночную ошибку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

делал такие тесты. много зависит от разводки/распиповки - что на что может залипнуть.

1) тест шины данных - при фиксированном адресе, пишем и читаем данные - перебираем её пины. бегущей единицы и нуля как пправило достаточно.

2) при исправных данных тестируем шину адреса. самый топорный вариант - последовтельно залить всё адресами ячеек, а считывать и сверять только ячейки с бегущей 1 и нулем адреса. это тормозной тест. можно его ускорить - заливать не всё. т.е при заливке можно учесь что читается не всё, а только бегущая 1/0 с её соседними битами. Но это такое усложнение, что на деле этот тест делил на 2 фазы:

а) проверка исправности - пишет по адресам бегущей 1/0 и сверяет.

затем делает такой же проход, но пишет инверсные данные.

Б) поиск неисправности - если не проканало а), то заливаем всё адресами.

впринципе и разрывы оно неплохо ловит, чтобы отлавливать убедительнее,  надо следить чтобы соседние записи/чтения были по различающимся, даже по инверсным состояниям.

Изменено пользователем AlexRayne

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, iosifk сказал:

1. Записываете ячейку данными и тут же читаете. Но ведь при этом могут быть кз между проводами и обрывы в шине. КЗ запишет данные в неправильную ячейку и оттуда же эти данные прочтет. Если будет КЗ с линией данных, то хоть как-то можно это поймать. А вот при обрыве будут играть роль только остаточные заряды на шине... И поймать это будет сложно...

На первом этапе важно, чтобы принятые данные совпадали с записанными. С какой ячейкой работали - не важно. При обрыве данных я не прочитаю то, что записывал. Во всяком случае, не всегда.
А когда разберусь с данными, примусь за адреса.

41 минуту назад, AlexRayne сказал:

делал такие тесты. много зависит от разводки/распиповки - что на что может залипнуть.

1) тест шины данных - при фиксированном адресе, пишем и читаем данные - перебираем её пины. бегущей единицы и нуля как пправило достаточно.

2) при исправных данных тестируем шину адреса. самый топорный вариант - последовтельно залить всё адресами ячеек, а считывать и сверять только ячейки с бегущей 1 и нулем адреса. это тормозной тест. можно его ускорить - заливать не всё. т.е при заливке можно учесь что читается не всё, а только бегущая 1/0 с её соседними битами. Но это такое усложнение, что на деле этот тест делил на 2 фазы:

а) проверка исправности - пишет по адресам бегущей 1/0 и сверяет.

затем делает такой же проход, но пишет инверсные данные.

Б) поиск неисправности - если не проканало а), то заливаем всё адресами.

впринципе и разрывы оно неплохо ловит, чтобы отлавливать убедительнее,  надо следить чтобы соседние записи/чтения были по различающимся, даже по инверсным состояниям.

 

Да, в начале темы о том же говорили, примерно. (Не вы, ошибся. Но очень похоже.)
Мне предстваляется, достаточно того, что описал выше. Один проход записи-чтения - тест данных, один проход чтения - тест адреса при исправных данных. Думаю, если выдавать первые десяток несовпадений записанного и прочитанного, будет достаточно для определения обрыва-закоротки-сцепления.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, ViKo сказал:

 При обрыве данных я не прочитаю то, что записывал. Во всяком случае, не всегда.

Если машина быстрая, то Вы можете при обрыве провода считать остаточные заряды с шины. Т.е. если пишите и тут же читаете. Или делайте паузу, так чтобы заряды точно рассосались. А чтобы такого не произошло, делайте запись в нужную ячейку, а потом запись других данных, но в "пустоту". Так чтобы на шине данные поменялись. И только потом читайте...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По теме тестирования памяти:

https://habr.com/ru/post/484026/

Алгоритмы наверное можно подглядеть чтобы велосипед не изобретать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

45 минут назад, demiurg_spb сказал:

По теме тестирования памяти:

https://habr.com/ru/post/484026/

Алгоритмы наверное можно подглядеть чтобы велосипед не изобретать.

Видимо, можно. Но в статье я их не нашел, а в исходниках копаться скучно. Я уже написал и встроил в своё ПО. Правда, потестировать не получилось, все недо-пере-пайки уже исправили. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...