|
Алгоритм теста внешнего статического ОЗУ. |
|
|
|
Nov 10 2017, 14:46
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Вот столкнулся с некачественной пайкой шин адреса (18 битов) или данных (16 битов), я так думаю. Не вижу, где. Тот тест, что имелся, просто сигналит, что не пройден. У меня просто младшая часть адреса записывалась, а потом читалась. В-общем, если все нормально, то тест проходил. Примитивно. Хочу сделать правильный тест, более информативный. Определить, где адрес или данные неправильные и выдать текстом в последовательный порт. Кто-нибудь делал подобное? Поделитесь соображениями или ссылками.
Оказалось, закоротились два соседних бита данных прямо на плате между переходными отверстиями. Нужно вычислять такие ошибки.
|
|
|
|
|
Nov 10 2017, 16:13
|
Местный
  
Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987

|
Ну, предполагается, что при обнаружении ошибки тест будет выводить некоторые ее детали, ну, как минимум: - адрес ячейки; - ожидаемое значение; - актуальное значение. Тестирующий далее включает устройство под названием мозг (или "моск" - это уж у кого как :-)), анализирует и делает выводы. Возможно, еще что-то допроверяет-дотестирует. Или у вас задача стоит - пусть "вкалывают роботы, а не человек" ?
|
|
|
|
|
Nov 10 2017, 16:38
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Да, правильно, не память проверяется, а шины, в первую очередь. Можно, конечно, отключить в портах функцию внешней памяти, и манипулировать портами. Пока, думаю, обойтись непосредственно интерфейсом памяти.
|
|
|
|
|
Nov 10 2017, 18:40
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(AnatolyT @ Nov 10 2017, 20:22)  тут контроль шины, устанавливаем все биты шины адреса в 1, последовательно переводим в 0 каждый бит шины, проверяем состояние шины; для шины данных, переводим внешнее озу в третье состояние и тоже самое делаем с шиной данных. (+) я подобным образом проверял подключенность шины I2C. Если в контроллере есть возможность включения pull up/down подтяжек по входам, то легко организуетя (само)проверка на замыкания линий шины между собой и на другие проводники.
|
|
|
|
|
Jan 8 2018, 12:20
|
Группа: Участник
Сообщений: 8
Регистрация: 31-12-17
Из: Праворулёвск, город у моря
Пользователь №: 100 906

|
Цитата(ViKo @ Nov 10 2017, 15:46)  Кто-нибудь делал подобное? Делал так: пишем везде 0x0000... (по размеру слова) проверяем, потом с 0xffff, потом 0x5555, потом 0xaaaa, 0x55aa, и запись псевдо-случайной последовательности и потом её же, но инвертированной
|
|
|
|
|
Jan 8 2018, 14:17
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(ViKo @ Jan 8 2018, 15:46)  Мне нужна была реально не проверка ячеек ОЗУ (маловероятно, что ОЗУ неисправно), а именно шин адреса и данных - незапаянных, закороченных на землю или питание, закороченных между собой. Вот эти неисправности хочу находить. Пока не занимался, поскольку неисправность уже нашел и устранил. Если у того, кто подключен к памяти, есть порт JTAG, то посмотрите на тему "JTAG-сканирование"... Например, программы от jtag-технолоджи не только покажут "что", но и на чертеже платы покажут "где"... И эти тесты действительно проверяют только припайку. А если у ОЗУ есть JTAG, то это вообще влет...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jan 8 2018, 14:29
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(iosifk @ Jan 8 2018, 17:17)  Если у того, кто подключен к памяти, есть порт JTAG, то посмотрите на тему "JTAG-сканирование"... Например, программы от jtag-технолоджи не только покажут "что", но и на чертеже платы покажут "где"... И эти тесты действительно проверяют только припайку. А если у ОЗУ есть JTAG, то это вообще влет... Да, спасибо, это тоже имею в виду на будущее. Но шинах есть STM32, но его JTAG-сигналы я на разъем не выводил.
|
|
|
|
|
Jan 9 2018, 06:08
|
Группа: Участник
Сообщений: 8
Регистрация: 31-12-17
Из: Праворулёвск, город у моря
Пользователь №: 100 906

|
Цитата(ViKo @ Jan 8 2018, 13:46)  Мне нужна была реально не проверка ячеек ОЗУ (маловероятно, что ОЗУ неисправно), а именно шин адреса и данных - незапаянных, закороченных на землю или питание, закороченных между собой. Вот эти неисправности хочу находить. Пока не занимался, поскольку неисправность уже нашел и устранил. Я это понял. При логировании ошибок (что должно быть, что на самом деле, адрес) и небольшом анализе логов нескольких прогонов - выявление коротышей/непропая задача довольно-таки тривиальная.
|
|
|
|
|
Jan 9 2018, 08:20
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(ViKo @ Jan 9 2018, 10:57)  Пока одна закоротка - да. А если две - уже не так просто. Ну тогда берем "Адрес" и в эту ячейку пишем "Данные". А "Данные" вычисляем как код Хемминга, дополняющий "Адрес"... Тогда можно прочесть из "откуда-то" либо полностью неправильные данные, если есть ошибка в "Адресе", либо неправильные "данные", но из требуемой ячейки. И по ним можно вычислить ошибку в битах шин данных. Соотв. можно записать такие же данные, но по "Адресам", имеющим ошибку. Тогда при чтении из этих адресов, можно вычислить ошибку шины адреса. Ну например, можно предположить, что А1 будет замкнут на 1. Тогда записывая коды в адреса с А1=0, мы при чтении, предполагая, что А0=0, на самом деле прочитаем эти коды из ячеек у которых А0=1. И вот тут если шины данных исправны, можно вычислить неисправность адреса....
--------------------
www.iosifk.narod.ru
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|