реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Алгоритм теста внешнего статического ОЗУ.
ViKo
сообщение Nov 10 2017, 14:46
Сообщение #1


Универсальный солдатик
******

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



Вот столкнулся с некачественной пайкой шин адреса (18 битов) или данных (16 битов), я так думаю. Не вижу, где. Тот тест, что имелся, просто сигналит, что не пройден. У меня просто младшая часть адреса записывалась, а потом читалась. В-общем, если все нормально, то тест проходил. Примитивно. Хочу сделать правильный тест, более информативный. Определить, где адрес или данные неправильные и выдать текстом в последовательный порт. Кто-нибудь делал подобное? Поделитесь соображениями или ссылками.


Оказалось, закоротились два соседних бита данных прямо на плате между переходными отверстиями. Нужно вычислять такие ошибки.
Go to the top of the page
 
+Quote Post
Raven
сообщение Nov 10 2017, 15:51
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987



Тема практически необъятная, но для начала разговора:

Простой, быстрый, но хорошо проверяющий "на элементарную вшивость" тест памяти - адресный тест. В ячейку памяти с адресом "ADDR" пишется значение самого этого адреса (значение "ADDR"). После write-прохода делается read-проход и контроль. Неплохо выявляет залипания/неконтакты линий адреса (в первую очередь).

А дальше - тесты с паттернами данных 0x0, 0xFF, 0x55, 0xAA, марш 1, марш 0 и т.д. и т.п. (разных тестов уйма).
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 10 2017, 15:56
Сообщение #3


Универсальный солдатик
******

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



Адрес я и писал. Нужно проверять не просто совпадение записанного и прочитанного, но выдавать, в чем не совпало и почему.
Go to the top of the page
 
+Quote Post
Raven
сообщение Nov 10 2017, 16:13
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987



Ну, предполагается, что при обнаружении ошибки тест будет выводить некоторые ее детали, ну, как минимум:
- адрес ячейки;
- ожидаемое значение;
- актуальное значение.

Тестирующий далее включает устройство под названием мозг (или "моск" - это уж у кого как :-)), анализирует и делает выводы. Возможно, еще что-то допроверяет-дотестирует. Или у вас задача стоит - пусть "вкалывают роботы, а не человек" ? sm.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 10 2017, 16:15
Сообщение #5


Универсальный солдатик
******

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



Да, второго хочу. :-) Раз напрячься, потом гуляючи...
Go to the top of the page
 
+Quote Post
AnatolyT
сообщение Nov 10 2017, 16:22
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 29-03-10
Пользователь №: 56 269



тут контроль шины, устанавливаем все биты шины адреса в 1, последовательно переводим в 0 каждый бит шины, проверяем состояние шины;
для шины данных, переводим внешнее озу в третье состояние и тоже самое делаем с шиной данных.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 10 2017, 16:38
Сообщение #7


Универсальный солдатик
******

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



Да, правильно, не память проверяется, а шины, в первую очередь.
Можно, конечно, отключить в портах функцию внешней памяти, и манипулировать портами. Пока, думаю, обойтись непосредственно интерфейсом памяти.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Nov 10 2017, 18:40
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(AnatolyT @ Nov 10 2017, 20:22) *
тут контроль шины, устанавливаем все биты шины адреса в 1, последовательно переводим в 0 каждый бит шины, проверяем состояние шины;
для шины данных, переводим внешнее озу в третье состояние и тоже самое делаем с шиной данных.

(+)
я подобным образом проверял подключенность шины I2C.
Если в контроллере есть возможность включения pull up/down подтяжек по входам,
то легко организуетя (само)проверка на замыкания линий шины между собой и на другие проводники.
Go to the top of the page
 
+Quote Post
_Thomas_
сообщение Jan 8 2018, 12:20
Сообщение #9





Группа: Участник
Сообщений: 8
Регистрация: 31-12-17
Из: Праворулёвск, город у моря
Пользователь №: 100 906



Цитата(ViKo @ Nov 10 2017, 15:46) *
Кто-нибудь делал подобное?
Делал так: пишем везде 0x0000... (по размеру слова) проверяем, потом с 0xffff, потом 0x5555, потом 0xaaaa, 0x55aa, и запись псевдо-случайной последовательности и потом её же, но инвертированной
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 8 2018, 12:46
Сообщение #10


Универсальный солдатик
******

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



Мне нужна была реально не проверка ячеек ОЗУ (маловероятно, что ОЗУ неисправно), а именно шин адреса и данных - незапаянных, закороченных на землю или питание, закороченных между собой. Вот эти неисправности хочу находить. Пока не занимался, поскольку неисправность уже нашел и устранил.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 8 2018, 14:17
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(ViKo @ Jan 8 2018, 15:46) *
Мне нужна была реально не проверка ячеек ОЗУ (маловероятно, что ОЗУ неисправно), а именно шин адреса и данных - незапаянных, закороченных на землю или питание, закороченных между собой. Вот эти неисправности хочу находить. Пока не занимался, поскольку неисправность уже нашел и устранил.

Если у того, кто подключен к памяти, есть порт JTAG, то посмотрите на тему "JTAG-сканирование"... Например, программы от jtag-технолоджи не только покажут "что", но и на чертеже платы покажут "где"... И эти тесты действительно проверяют только припайку. А если у ОЗУ есть JTAG, то это вообще влет...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 8 2018, 14:29
Сообщение #12


Универсальный солдатик
******

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



Цитата(iosifk @ Jan 8 2018, 17:17) *
Если у того, кто подключен к памяти, есть порт JTAG, то посмотрите на тему "JTAG-сканирование"... Например, программы от jtag-технолоджи не только покажут "что", но и на чертеже платы покажут "где"... И эти тесты действительно проверяют только припайку. А если у ОЗУ есть JTAG, то это вообще влет...

Да, спасибо, это тоже имею в виду на будущее. Но шинах есть STM32, но его JTAG-сигналы я на разъем не выводил.
Go to the top of the page
 
+Quote Post
_Thomas_
сообщение Jan 9 2018, 06:08
Сообщение #13





Группа: Участник
Сообщений: 8
Регистрация: 31-12-17
Из: Праворулёвск, город у моря
Пользователь №: 100 906



Цитата(ViKo @ Jan 8 2018, 13:46) *
Мне нужна была реально не проверка ячеек ОЗУ (маловероятно, что ОЗУ неисправно), а именно шин адреса и данных - незапаянных, закороченных на землю или питание, закороченных между собой. Вот эти неисправности хочу находить. Пока не занимался, поскольку неисправность уже нашел и устранил.
Я это понял. При логировании ошибок (что должно быть, что на самом деле, адрес) и небольшом анализе логов нескольких прогонов - выявление коротышей/непропая задача довольно-таки тривиальная.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 9 2018, 07:57
Сообщение #14


Универсальный солдатик
******

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



Цитата(_Thomas_ @ Jan 9 2018, 09:08) *
Я это понял. При логировании ошибок (что должно быть, что на самом деле, адрес) и небольшом анализе логов нескольких прогонов - выявление коротышей/непропая задача довольно-таки тривиальная.

Пока одна закоротка - да. А если две - уже не так просто.
Мне и нужен не просто лог ошибок, а результат анализа, который сам микроконтроллер сделает. В порт выдаст - какая ошибка, чем вызвана.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 9 2018, 08:20
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 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
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 21:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01534 секунд с 7
ELECTRONIX ©2004-2016