ViKo 1 9 января, 2018 Опубликовано 9 января, 2018 · Жалоба Так точно, можно взяться за ум и сотворить алгоритм. И что же, быть первопроходимцем? Мне думается, где-то это все уже придумано до нас. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 9 января, 2018 Опубликовано 9 января, 2018 · Жалоба Так точно, можно взяться за ум и сотворить алгоритм. И что же, быть первопроходимцем? Мне думается, где-то это все уже придумано до нас. Без сомнения. Когда-то возился с Синклерами, там в тестовом ПЗУ и был сделан тест памяти, который выводил на экран сообщения об ошибках в Адресе или в Данных... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 20 марта, 2020 Опубликовано 20 марта, 2020 · Жалоба Вот, клюнул петух, пришлось вернуться к задаче. Делюсь соображениями. Записываю последовательно по всей памяти данные - младшую часть адреса (16 битов из 18): 0, 1, 2 ... При записи тут же читаю. Это позволяет определить неисправность шины данных (ячейка памяти одна и та же). Или определить, что вообще нет записи или чтения. Затем делаю проход чтения по всей памяти, сравниваю с тем, что должно быть. Поскольку проверка шины данных уже пройдена, здесь ошибки могут быть вызваны только неисправностью шины адреса - не туда было записано, вот и читается не то. Алгоритмом конкретного определения неисправности с точностью до бита не занимался, пока на скорую руку достаточно такого грубого определения. Но, вижу, так можно и конкретно определять, что там со всеми цепями на плате или внутри микросхемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 20 марта, 2020 Опубликовано 20 марта, 2020 · Жалоба 1 час назад, ViKo сказал: Записываю последовательно по всей памяти данные - младшую часть адреса (16 битов из 18): 0, 1, 2 ... При записи тут же читаю. Это позволяет определить неисправность шины данных (ячейка памяти одна и та же). Или определить, что вообще нет записи или чтения. Затем делаю проход чтения по всей памяти, сравниваю с тем, что должно быть. Поскольку проверка шины данных уже пройдена, здесь ошибки могут быть вызваны только неисправностью шины адреса - не туда было записано, вот и читается не то. Алгоритмом конкретного определения неисправности с точностью до бита не занимался, пока на скорую руку достаточно такого грубого определения. Но, вижу, так можно и конкретно определять, что там со всеми цепями на плате или внутри микросхемы. 1. Записываете ячейку данными и тут же читаете. Но ведь при этом могут быть кз между проводами и обрывы в шине. КЗ запишет данные в неправильную ячейку и оттуда же эти данные прочтет. Если будет КЗ с линией данных, то хоть как-то можно это поймать. А вот при обрыве будут играть роль только остаточные заряды на шине... И поймать это будет сложно... Когда-то в Синклерах применяли код Хэмминга. В ячейку писали данные, которые дополняли Адрес+Часть данных. И по искаженным принятым данным можно было вычислить одиночную ошибку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexRayne 7 20 марта, 2020 Опубликовано 20 марта, 2020 (изменено) · Жалоба делал такие тесты. много зависит от разводки/распиповки - что на что может залипнуть. 1) тест шины данных - при фиксированном адресе, пишем и читаем данные - перебираем её пины. бегущей единицы и нуля как пправило достаточно. 2) при исправных данных тестируем шину адреса. самый топорный вариант - последовтельно залить всё адресами ячеек, а считывать и сверять только ячейки с бегущей 1 и нулем адреса. это тормозной тест. можно его ускорить - заливать не всё. т.е при заливке можно учесь что читается не всё, а только бегущая 1/0 с её соседними битами. Но это такое усложнение, что на деле этот тест делил на 2 фазы: а) проверка исправности - пишет по адресам бегущей 1/0 и сверяет. затем делает такой же проход, но пишет инверсные данные. Б) поиск неисправности - если не проканало а), то заливаем всё адресами. впринципе и разрывы оно неплохо ловит, чтобы отлавливать убедительнее, надо следить чтобы соседние записи/чтения были по различающимся, даже по инверсным состояниям. Изменено 20 марта, 2020 пользователем AlexRayne Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 20 марта, 2020 Опубликовано 20 марта, 2020 · Жалоба 1 час назад, iosifk сказал: 1. Записываете ячейку данными и тут же читаете. Но ведь при этом могут быть кз между проводами и обрывы в шине. КЗ запишет данные в неправильную ячейку и оттуда же эти данные прочтет. Если будет КЗ с линией данных, то хоть как-то можно это поймать. А вот при обрыве будут играть роль только остаточные заряды на шине... И поймать это будет сложно... На первом этапе важно, чтобы принятые данные совпадали с записанными. С какой ячейкой работали - не важно. При обрыве данных я не прочитаю то, что записывал. Во всяком случае, не всегда. А когда разберусь с данными, примусь за адреса. 41 минуту назад, AlexRayne сказал: делал такие тесты. много зависит от разводки/распиповки - что на что может залипнуть. 1) тест шины данных - при фиксированном адресе, пишем и читаем данные - перебираем её пины. бегущей единицы и нуля как пправило достаточно. 2) при исправных данных тестируем шину адреса. самый топорный вариант - последовтельно залить всё адресами ячеек, а считывать и сверять только ячейки с бегущей 1 и нулем адреса. это тормозной тест. можно его ускорить - заливать не всё. т.е при заливке можно учесь что читается не всё, а только бегущая 1/0 с её соседними битами. Но это такое усложнение, что на деле этот тест делил на 2 фазы: а) проверка исправности - пишет по адресам бегущей 1/0 и сверяет. затем делает такой же проход, но пишет инверсные данные. Б) поиск неисправности - если не проканало а), то заливаем всё адресами. впринципе и разрывы оно неплохо ловит, чтобы отлавливать убедительнее, надо следить чтобы соседние записи/чтения были по различающимся, даже по инверсным состояниям. Да, в начале темы о том же говорили, примерно. (Не вы, ошибся. Но очень похоже.) Мне предстваляется, достаточно того, что описал выше. Один проход записи-чтения - тест данных, один проход чтения - тест адреса при исправных данных. Думаю, если выдавать первые десяток несовпадений записанного и прочитанного, будет достаточно для определения обрыва-закоротки-сцепления. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 20 марта, 2020 Опубликовано 20 марта, 2020 · Жалоба 1 час назад, ViKo сказал: При обрыве данных я не прочитаю то, что записывал. Во всяком случае, не всегда. Если машина быстрая, то Вы можете при обрыве провода считать остаточные заряды с шины. Т.е. если пишите и тут же читаете. Или делайте паузу, так чтобы заряды точно рассосались. А чтобы такого не произошло, делайте запись в нужную ячейку, а потом запись других данных, но в "пустоту". Так чтобы на шине данные поменялись. И только потом читайте... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 27 марта, 2020 Опубликовано 27 марта, 2020 · Жалоба По теме тестирования памяти: https://habr.com/ru/post/484026/ Алгоритмы наверное можно подглядеть чтобы велосипед не изобретать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 27 марта, 2020 Опубликовано 27 марта, 2020 · Жалоба 45 минут назад, demiurg_spb сказал: По теме тестирования памяти: https://habr.com/ru/post/484026/ Алгоритмы наверное можно подглядеть чтобы велосипед не изобретать. Видимо, можно. Но в статье я их не нашел, а в исходниках копаться скучно. Я уже написал и встроил в своё ПО. Правда, потестировать не получилось, все недо-пере-пайки уже исправили. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться