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

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Целесообразность тестирования памяти и регистров
Guest_Serg79_*
сообщение Apr 28 2007, 09:57
Сообщение #1





Guests






В данной теме мне хотелось бы обсудить вопрос целесообразности проведения тестирований памяти и регистров микроконтроллера.

Теперь хочу высказать свои мысли по этому поводу. Одним из главных требований выдвигаемых к программному обеспечению (ПО) для встраиваемых систем, это – контроль и проверка правильного функционирования рабочего окружения программы. К этому набору относятся, касательно микроконтроллеров AVR, регистры общего назначения (РОН), оперативно запоминающее устройство (ОЗУ), регистр состояния выполнения программы (SREG), память хранящая код программы (FLASH) и устройства с которыми работает программа (USART, ADC, TWI и т.д.).
Так что в независимости от того хочешь ты этого или не хочешь, твоя программа помимо того что должна соответствовать требованиям выдвигаемым “техническим заданием”, дополнительно должна выполнять все требования предъявляемые к ПО для встраиваемых систем.

Высказывания такого характера как: ”Да что их проверять, за всю мою долгую историю собирания разных устройств на коленка, еще не у одного контроллера не выбило ячейку памяти” или ”Этого не может быть потому что этого не может” и ”т.д.”, просто не выдерживают никакой критики.

А вот вопросы касающиеся целесообразности проверки того или иного узла микроконтроллера и глубины проверки одного взятого узла мне бы и хотелось здесь обсудить.

Вот я и хочу услышать мнение тех людей, которым приходилось сталкиваться с данными вопросами, а так же послушать их высказывания по этому поводу и методы решения этих проблем.
Go to the top of the page
 
+Quote Post
arttab
сообщение Apr 28 2007, 10:14
Сообщение #2


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

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



В серии есть сбои в работе мк. раньше основная проблема была с данными в EEPROM. Кто с AVR знаком давно тот знает об этой проблеме. Решение этой проблемы программным путем особых успехов не имело. Данные в EEPROM, это заводские предустановки (калибровка) и чтобы их восстановить нужно технологическое оборудование.
Стали писать во Flash. модифицировалась базовая прошивка под конкретный прибор. Проблемы с распрограммированием ушли.
Но есть и другие отказы мк: битые порты и хрен знает что. не можем мы в него заглянуть. Думаем CRC прошивки проверять и конфигурации.
А теоритически повреждение РОНов, и пр. памяти должны вызвать сбои в алгоритме и пес не будет сбрасоваться, а мк будет.
Вопрос интересный. Кто что скажет?


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Apr 28 2007, 10:35
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Serg79 @ Apr 28 2007, 09:57) *
В данной теме мне хотелось бы обсудить вопрос целесообразности проведения тестирований памяти и регистров микроконтроллера.
...
Вот я и хочу услышать мнение тех людей, которым приходилось сталкиваться с данными вопросами, а так же послушать их высказывания по этому поводу и методы решения этих проблем.

Приходилось сталкиваться, начиная с 8080.
Контроль РОН и АЛУ был прописан тщательно и ни разу не дал ошибку.
Мои убеждения по обычным приборам (не спец применения):
Имеет смысл только контроль внешних устройств.
Проверка внутреннего ОЗУ невозможна в случае необходимости сохранять его содержимое или быстрого восстановления после сброса.
Проверка внутренней памяти программ имеет мало смысла поскольку программа должна работать. Статистика очень хорошая по последним 10 годам. Контрольная сумма используется только при программировании бутлоадером.
Проверка EEPROM проводится с помощью контрольной суммы блоков информации в "пользовательcком приложении".
Прибор должен иметь светодиод ошибки/индикации шевеления.

Резюме: вероятность отказа компонентов намного меньше вероятности проявления ошибки разработки, что делает контроль неэффективным.
Повторяю, все это относится к обычным приборам общепромышленного назначения, без резервирования и прочих трюков, но тем не менее не создающих повышенной опасности.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 28 2007, 10:50
Сообщение #4


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

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



МК достаточно сложное устройство и полноценная проверка его сделает алгоритм еще более сложным, а систему соответсвенно еще более ненадежной.
Поэтому лучшим выходом является не контроль элементов системы, а контроль ее общей работоспособности.
Для этого существуют три способа.
1. Контороль целостности критических данных - CRC etc.
2. Борьба с зависанием - ватчдоги внутренние и внешние
3. Борьба с запрещенными состояниями - всевозможные аппаратные взаимоблокировки исключающие выполнение противоречивых команд даже в случае полной неработоспособности микропроцессорного модуля.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Serj78
сообщение Apr 28 2007, 11:17
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



я не вижу смысла проверять целостность внутренних блоков контроллера ( используем AVR)... кроме eeprom кажется, ничего не портится smile.gif

поэтому у нас "внутренние" проверки нацелены в основном на проверку целостности eeprom ( совпадения контрольной суммы) и проверку источника сброса ( в основном для детектирования аварии по питанию)

после выявления в одной их мег8 падения коэфф. усиления усилителя тактового генератора все собранные устройства тестируются на амплитуду тактового сигнала под нагрузкой в 10пф. хотя, я надеюсь, это был единичный случай.
Go to the top of the page
 
+Quote Post
Guest_=AVR=_*
сообщение Apr 28 2007, 11:23
Сообщение #6





Guests






Проверка работоспособности МК самим МК, работоспособность которого под сомнением, является прекрасным примером логического абсурда. Мало того, примитивные проверки типа 0х55-0хАА не выявят ровным счетом ничего. Если уж так хочется, то проверять нужно всю систему вместе с подключенными к ней устройствами - убедиться в целостности внешних интерфейсов, соответствия измеренных значений их областям допусков, корректности CRC/CS Flash/EEPROM. Тест, который проверит И ВЫЯВИТ некорректность функционирования ЛЮБОГО узла МК, можно попытаться написать и запускать в порядке входного контроля (отбраковки), а в рабочие системы уже ставить те МК, которые таковую отбраковку прошли, но это тоже малополезно. Грамотно и тщательно проведенное ВЫХОДНОЕ тестирование системы гораздо более эффективно, чем написание/проведение никому не нужных "академических" тестов голого МК
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Apr 28 2007, 11:43
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



МК в конечном счете лишь часть системы, может быть и основная, но только часть. Опыт показывает, что тестирование отдельных элементов системы, маоэффективно. Даже работающую микросхему можно неправильно впаять. Достаточен элементарный входной контроль. А вот тест системы это как раз то, что отвечает за конечный результат и он, как правило, требует разработки не только тестового ПО, но и определенного дополнительного оборудования.
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 28 2007, 12:58
Сообщение #8


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



А вот у меня был реальный случай в ATMega8515 5 бит в регистре R12 (или R14 не помню точно). не всегда устанавливался в еденицу. а использовался этот регистр в прерывании там сохранялся указатель на очередь клавиатуры. Так вот глюк был совершенно смешной нажимаешь 16 раз на клавиатуре, а потом она сама еще 16 раз нажимает, и так далее...
Я запарился искать, потом когда в очередной раз поменял код все регистры сохранял в стеке и не использовал этот все работало. Написал простой тест регистров, так вот на всех платах кроме одной тест проходил.
Но такой контроллер мне попался один из нескольких тысяч.
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Apr 29 2007, 12:46
Сообщение #9


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Тоже очень больной вопрос....
У меня в одном проекте иммется тестирование сначала регистров потом озу.
кристалл м16
если косяк - зажигаю группу светодиодов
И что характерно....
наблюдал очень непонятный момент...
во первых... сколько не шил партий всегда все гладко запускалось
т.е тест проходил без ошибок
но тем не менее на одном из объектов произошел отказ
ну то се... вообщем взял конроллер на исследование..
действительно, наблюдал непрохождение теста, причем самое непонятное то, что при внешнем ресете проц запускался и работал какое то время без сбоев там 3-4 часа
потом чувствовался ватч дог или переполнение стека и проц шел на вектор ресета...
так вот...
если процу щелкнуть питанием то тест озу не проходил...
причем это наблюдалось в 100%
ну естествеено храню этот камень как дорогую реликвию - для опытов :-)
посему считаю что тест флеша и тест регистров и озу очень желеательным.


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 29 2007, 13:06
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(=AVR= @ Apr 28 2007, 11:23) *
Проверка работоспособности МК самим МК, работоспособность которого под сомнением, является прекрасным примером логического абсурда.

Самоконтроль сам-себя совершенно обыденное явление. Для процессоров на рассыпухе это было проcто абсолютно обязательной процедурой. С переходом на микропроцессоры это как-то от конечного пользователя стало скрыто, но тем не менее даже для первых интеловских микропроцессоров существовали официально раздаваемые пользователям диагностические программы постепенно от простого к сложному, базируясь на уже проверенном проверяющие ядро. Да и сейчас, ка Вы полагаете тестируются контроллеры у производителя smile.gif?
По нынешним временам тестом ядра не занимаюсь, но памяти тестирую обязательно. Диагностика встроенной внешней периферии - тоже. Привычка smile.gif когда-то десять лет занимался диагностическим оборудованием для производства коммутационной техники.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sadat
сообщение Apr 29 2007, 14:53
Сообщение #11


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

Группа: Свой
Сообщений: 117
Регистрация: 6-07-05
Из: Белгород
Пользователь №: 6 575



Добавлю свое замечание по этому вопросу.
Из опыта, ни разу не сталкивался с битым RAM или FLASH памятью AVR-ок. EEPROM, конечно, надо писать с контрольной суммой.
А вот "частично выбитые" электромагнитным импульсом (или статикой) входы мк - это было.
К примеру, лапка мк настроена на вход. Типовой (даташит) входящий ток - мка должен быть, однако в реалии - более 2 ма, чтобы ядро поняло, что на входе - лог "1". Это было следствие электростатического разряда на лапку.

Так же и в режиме работы - попробуйте поднести мощную радиостанцию к мк в режиме передачи (5 Вт будет достаточно).
Если разводка платы непродумана полностью, то мк начнет "глючить".
Если же импульс помехи будет достаточный, чтобы частично пробить защитные входные диоды и транзисторы - то деградация вывода со временем обеспечена....

Конечно, возможны "глюки" и со стороны производителя мк, когда при производстве "где-то что-то пролилось не туда" или маленькая пылинка сделала свое дело.....
Но вспомним Фуджики винчестеры серии MPG320 - когда из-за активного флюса (или промывки) жидкость через выводы проникла к кристаллу и начала его разъедать.... Миллионы винтов сдохли...

Поэтому надежность - это комплексное понятие, простым тестом не отследишь...
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Apr 29 2007, 19:50
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Kovrov @ Apr 29 2007, 12:46) *
Тоже очень больной вопрос....
...
посему считаю что тест флеша и тест регистров и озу очень желеательным.

Любой чужой опыт, хм, дополняет мои представления.

Но такой аспект. На полупроводники сильно влияют окружающие условия. У нас на заводике все приборы тестируются в предельных рабочих режимах по температуре и напряжению. Мне кажется это гораздо важнее и эффективнее, чем прогон простейшего теста компонентов при наладке.
Вы спросите - а как же диагностика и поиск неисправности?
Отвечу. Был такой опыт на заре микроконтроллерных устройств - отдали в производство прибор, с идеальной, как казалось, диагностикой - на каждом модуле был светодиодик, который гасился только в случае успешного прохождения теста этого модуля. Оказалось, что жизнь богаче, что эта классная диагностика может давать ложные ошибки, и пропускать реальные. А обыкновенный наладчик без образования находит причину отказа проще, не вдаваясь в высшие материи.

Поэтому вопрос о цене вопроса (сорри за каламбур). Ну, отказал контроллер, ну выкинули его, дальше работаем. В приведенном случае он отказал уже у клиента. И какая разница, что показала диагностика. Отказ то произошел.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 30 2007, 00:35
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(KRS @ Apr 28 2007, 12:58) *
А вот у меня был реальный случай в ATMega8515 5 бит в регистре R12 (или R14 не помню точно). не всегда устанавливался в еденицу. а использовался этот регистр в прерывании там сохранялся указатель на очередь клавиатуры. Так вот глюк был совершенно смешной нажимаешь 16 раз на клавиатуре, а потом она сама еще 16 раз нажимает, и так далее...
Я запарился искать, потом когда в очередной раз поменял код все регистры сохранял в стеке и не использовал этот все работало. Написал простой тест регистров, так вот на всех платах кроме одной тест проходил.
Но такой контроллер мне попался один из нескольких тысяч.


НЕВЕРЮ! Ну хоть убейте не верю.

У вас выбит один бит в регистре и при этом у Вас только кнопка не работает?!!!!!!! Это чтож за программа у Вас была такая?

Если писать на ASMе и при этом программа байт 500, то тогда ещё такое возможно. Но в реальном проекте данный камень бы просто не работал! Это совершенно очевидно.



Хотелось бы услышать zltigo. Вот Вы в каждое изделие вставляете тест памяти. Сколько у вас было случаев неисправности ОЗУ? Сколько у Вас было случаев неисправности озу, при котором изделие работало, но скажем сбоило?

Ну и последний самый главный вопрос Вам как специалисту.
Можно ли написать такой тест, который в случае выхода из строя ОЗУ либо регистров в процессе работы изделия делал "проверка правильного функционирования рабочего окружения программы". Ну и если это возможно, то насколько это загрузит процессор.



На мой взгляд, о чём я и писал в предыдущей ветке, вопрос не только в возможности, но и в целесообразности! Можно всё! Но, на мой взгляд нецелесообразно. Потому, что я, кпримеру, не возьмусь за написание такой программы, которая со 100% вероятностью при неисправности озу или регистров не выполнит ЛЮБОЕ ДЕЙСТВИЕ.

Если же мы вернёмся к IBM, то думаю zltigo Вам подтвердит, что там сначала проверяется маленький участок озу и только потом запускается дальнейшее тестирование! Если привести это грубо к какому-то знаменателю, то они не гарантируют прохождение теста если не работает маленький кусочек ОЗУ и процессор в начальный момент. Работоспособность регистров должна быть обязательно. Иначе последствия непредсказуемы. Существуют у нек. МП немаскируемые вектора по ошибочной команде, тогда в принципе возможно создать систему с защитой от таких ошибок. Но это к AVR не относится.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 30 2007, 00:55
Сообщение #14


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Долго думал участвовать в обсуждении или не участвовать...
Все-таки не удержался и решил поучаствовать smile.gif

Дело в том что я достаточно много времени занимался тестированием и ремонтом
памяти для PC, по этому вопросы и проблемы поднятые в этом топике мне близки и понятны...

Попробую высказаться только по сути:
- тестировать полезно (но не всегда необходимо)
- для простых тестов типа 0X55, 0xAA мы можем получить только информацию о том
что какая-то линия данных как-то не так подключена к процессору(типа иногда сбоит,
ну или что чаще бывает на модулях памяти это банальный непропай или неправильные
подтягивающие резисторы)
- для исключения ошибок по адресным линиям нужно прописывать в память
адрес тестируемой ячейки и потом сравнивать его при чтении
- для более подробного тестирования необходимо над каждой ячейкой памяти делать
сдвиговые операции
- для еще более подробного тестирования нужно прописывать блок памяти некоторыми данными,
потом производить сдвиговые операции над всем блоком памяти а затем проверять результат

- а самый простой вариант это просто прописывать некоторые данные с заранее просчитанным
CRC16/32 а затем их просто считывать и проверять CRC (в CRC сдвигов вполне хватает)
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 30 2007, 11:46
Сообщение #15


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(SasaVitebsk @ Apr 30 2007, 01:35) *
НЕВЕРЮ! Ну хоть убейте не верю.

У вас выбит один бит в регистре и при этом у Вас только кнопка не работает?!!!!!!! Это чтож за программа у Вас была такая?


Если вы знаете, как IAR распределяет регистры, то нечего удивительного в этом нет
я же говрю этот регистр использовался только в прерывании, и не рабтала е одна клавиша а клавиатурный буфер глючил
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:32
Рейтинг@Mail.ru


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