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

 
 
> Целесообразность тестирования памяти и регистров
Guest_Serg79_*
сообщение Apr 28 2007, 09:57
Сообщение #1





Guests






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

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

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

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

Вот я и хочу услышать мнение тех людей, которым приходилось сталкиваться с данными вопросами, а так же послушать их высказывания по этому поводу и методы решения этих проблем.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Pasha
сообщение Feb 16 2008, 11:53
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



По поводу надежности программы.
Вот, я, например, никогда не допущу (в девайсе, работающем круглосуточно) использование ячейки ОЗУ для предварительно рассчитанной константы, в которую проц будет потом неделями заглядывать. Хороший пример для формулирования понятия надежной программы?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Feb 16 2008, 13:17
Сообщение #3


Гуру
******

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



Цитата(_Pasha @ Feb 16 2008, 15:53) *
По поводу надежности программы.
Вот, я, например, никогда не допущу (в девайсе, работающем круглосуточно) использование ячейки ОЗУ для предварительно рассчитанной константы, в которую проц будет потом неделями заглядывать. Хороший пример для формулирования понятия надежной программы?

Скажем так, я с этим не согласен. Ниже объясню почему. Это, кстати не относится к словам zltigo. Здесь я соглашусь. ВСЕ исключительные ситуации должны быть обработаны. Это очевидно. Более того именно программист и видит все эти ситуации. Иначе в его программе будут необработанные ветки либо упрощённый алгоритм.

Теперь возвращаясь к цитате.
Иными словами вы допускаете, что эта ячейка может быть повреждена в процессе работы? А чем она, простите, отличается от соседней? Или от ячейки стэка? А как, защититься, от повреждения стэка? Как контролировать постоянно меняющееся озу программой, которая сама меняет озу?

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

По поводу проверок, я тоже согласен с подходом "анализ исправности чипа чипом исправность которого вызывает сомнения - нонсенс" Ну понимаю - сделать самодиагностику до старта и блокирнуться, хотя нет никакой гарантии что это произойдёт. Но теория вероятности такова, что для вас, к примеру, выход одного изделия из тысячи - 0.1%, а для клиента, который купил одно ваше изделие - 100%. Это я к тому что если от вашего изделия может взорваться снаряд (принципиально может), и вероятность этого события 0.1%, то это уже недопустимо потому, что кому-то это может стоить жизни. А значит здесь надо применять другие методы. Такие, чтобы выход из строя вашего изделия ЛЮБЫМ СПОСОБОМ не приводил к этому взрыву. Это только резервирование.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 16 2008, 14:14
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(SasaVitebsk @ Feb 16 2008, 16:17) *
Теперь возвращаясь к цитате.
Иными словами вы допускаете, что эта ячейка может быть повреждена в процессе работы? А чем она, простите, отличается от соседней? Или от ячейки стэка? А как, защититься, от повреждения стэка? Как контролировать постоянно меняющееся озу программой, которая сама меняет озу?


У меня время жизни объектов без их регенерации сравнительно короткое. Иногда ставлю низкоприоритетный тред, который пересчитывает кое-какие "константы". И вот почему:
Сколько можно гонять/тестировать девайс? Новая ли разработка, либо просто выходной контроль - чем короче можно сделать этот процесс, тем лучше. В случае периодической калькуляции

Цитата
С момента, когда программа начинает жить своей жизнью - её надо просто переписывать заново.


данный момент наступит быстрее при отладке, либо больше вероятность обнаружить некорректно работающее железо проца, если все на уровне. Если все ОК, то я могу уверенно полагать, что испытания прошли. Без организации теста наработки на сбой.

Цитата
Такие, чтобы выход из строя вашего изделия ЛЮБЫМ СПОСОБОМ не приводил к этому взрыву.

Нет, я в такое не лезу. Зубками не вырос. smile.gif
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Feb 16 2008, 22:38
Сообщение #5


Гуру
******

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



Цитата(_Pasha @ Feb 16 2008, 18:14) *
У меня время жизни объектов без их регенерации сравнительно короткое. Иногда ставлю низкоприоритетный тред, который пересчитывает кое-какие "константы".

Я совершенно не спорю с вами я просто не знаю ответа.

Вот скажите мне при каком условии вероятность сбоя будет выше?
1) 1 раз записать ячейку - 100 млн. раз её прочитать.
2) 100 тыс. раз записать ячейку - 100 млн. раз её прочитать.

Давайте ещё один пример виртуальный с EEPROM.
Представим себе ситуацию что надо хранить 50 байт данных и периодически обновлять их.
Как надёжнее?
1) Просто записать и КС
2) Хранить 3 экземпляра и кс.
и ещё вопрос
В каком из этих вариантов EEPROM разрушится быстрее или вероятность появления ошибки выше?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 17 2008, 08:02
Сообщение #6


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(SasaVitebsk @ Feb 17 2008, 01:38) *
Я совершенно не спорю с вами я просто не знаю ответа.
.................
В каком из этих вариантов EEPROM разрушится быстрее или вероятность появления ошибки выше?


А резервирование - то делается на макроуровне, на уровне блоков. А все остальное - камлания и холодный термоядерный синтез.smile.gif

Есть пример - контроллер мостовой пилы для резки гранита.
Все просто - тележка ездит вперед/назад, пила вверх/вниз и враво/влево, датчики положения (холла).
Решения - периодическая проверка живучести системного таймера, таймауты на прием сигналов датчиков. Красота... но если пила в камне, то вправо/влево включать нельзя. А как сие определить?
Проверить положение? А если что-то врет? Тогда получается некрасивая пропорция - проц за 1 доллар убивает пилу за 2000 оных. Вышли из положения - перемещения влево/вправо можно только выключить автоматом. Включить - только вручную.
Извините за оффтоп.
Go to the top of the page
 
+Quote Post
Getmanov
сообщение Feb 18 2008, 14:57
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 66
Регистрация: 28-01-08
Из: Николаев
Пользователь №: 34 507



Цитата(SasaVitebsk @ Feb 17 2008, 11:46) *
Конечно - это всё не праздные вопросы. И в каждом конкретном случае надо самостоятельное решение принимать. А груз ответственности велик.
Будем решать. Будем внимательнее. smile.gif

Полностью согласен, достаточность мер диагностики определяет только разработчик и под свою ответственность. И на 99% вероятность аварии в его руках.
Но если вернуться к теме
Цитата
Целесообразность тестирования памяти и регистров

То честно говоря не вижу в этом особого смысла, да и возможности. При включении можно проверить всё, что угодно. А как во время работы проверить ОЗУ? Остановить устройство, и записывать-считывать память, регистры и т.п.?
Цитата(_Pasha @ Feb 17 2008, 10:02) *
Есть пример - контроллер мостовой пилы для резки гранита.
Все просто - тележка ездит вперед/назад, пила вверх/вниз и враво/влево, датчики положения (холла).
Решения - периодическая проверка живучести системного таймера, таймауты на прием сигналов датчиков. Красота... но если пила в камне, то вправо/влево включать нельзя. А как сие определить?
Проверить положение? А если что-то врет? Тогда получается некрасивая пропорция - проц за 1 доллар убивает пилу за 2000 оных.

Для устройств, которые выполняют периодические действия эта задача решаема, например в ЧПУ станка такую проверку можно выполнять перед запуском программы. А если процесс непрерывный или непредсказуемый?
Да и вероятность выхода из строя ячейки памяти гораздо ниже, чем какого либо датчика, поэтому стоит обращать внимание на диагностику периферийных устройств, исходя из моего опыта, это в большой степени снижает вероятность отказа, и конечно же стоит следить за "качеством" программы написаной Вами.
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение May 18 2008, 18:40
Сообщение #8


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(Getmanov @ Feb 18 2008, 18:57) *
При включении можно проверить всё, что угодно. А как во время работы проверить ОЗУ? Остановить устройство, и записывать-считывать память, регистры и т.п.?

Как как.. Да как два пальца абосфальт.. Записал чё-нить в ОЗУ и тут же прочитал (проверил тем самым записалось ли). Не знал про такой способ?


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
Getmanov
сообщение May 18 2008, 19:10
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 66
Регистрация: 28-01-08
Из: Николаев
Пользователь №: 34 507



Цитата(Дон Амброзио @ May 18 2008, 21:40) *
Как как.. Да как два пальца абосфальт.. Записал чё-нить в ОЗУ и тут же прочитал (проверил тем самым записалось ли). Не знал про такой способ?

А тут же, это когда, через такт, секунду, месяц?
А ещё бывают volatile переменные, что, запрещать к ним доступ, что бы прочитать что записалось?
Go to the top of the page
 
+Quote Post
EugeNNe
сообщение May 19 2008, 04:11
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 424
Регистрация: 6-03-06
Из: Н.Новгород
Пользователь №: 14 997



Цитата(Getmanov @ May 18 2008, 23:10) *
А тут же, это когда, через такт, секунду, месяц?
А ещё бывают volatile переменные, что, запрещать к ним доступ, что бы прочитать что записалось?


Можно выделить сразу буфер, для проверуи памяти. Сначала проверяете его, а потом блоками перетаскиваете в него содержимое из ОЗУ, проверив определённый участок памяти, возвращаете туда то что перекидывали. Естенственно на время теста нужно вырубать прерывания. А период тестирования определяется параметрами надёжности и безопасности вашего устройства.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 19 2008, 04:54
Сообщение #11


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(BigBolt @ May 19 2008, 07:11) *
Сначала проверяете его, а потом блоками перетаскиваете в него содержимое из ОЗУ, проверив определённый участок памяти, возвращаете туда то что перекидывали.


Известно из работ 80-х годов по тестированию ОЗУ (конкретнее - если найду книжку - скажу) о том, что такой способ является самым грубым и не обеспечивает выявление даже половины возможных неисправностей. smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Serg79   Целесообразность тестирования памяти и регистров   Apr 28 2007, 09:57
- - arttab   В серии есть сбои в работе мк. раньше основная про...   Apr 28 2007, 10:14
- - Dog Pawlowa   Цитата(Serg79 @ Apr 28 2007, 09:57) В дан...   Apr 28 2007, 10:35
- - beer_warrior   МК достаточно сложное устройство и полноценная про...   Apr 28 2007, 10:50
- - Serj78   я не вижу смысла проверять целостность внутренних ...   Apr 28 2007, 11:17
- - =AVR=   Проверка работоспособности МК самим МК, работоспос...   Apr 28 2007, 11:23
|- - zltigo   Цитата(=AVR= @ Apr 28 2007, 11:23) Провер...   Apr 29 2007, 13:06
|- - Дон Амброзио   Цитата(=AVR= @ Apr 28 2007, 14:23) Провер...   Feb 11 2008, 18:16
- - VladimirYU   МК в конечном счете лишь часть системы, может быть...   Apr 28 2007, 11:43
- - KRS   А вот у меня был реальный случай в ATMega8515 5 би...   Apr 28 2007, 12:58
|- - SasaVitebsk   Цитата(KRS @ Apr 28 2007, 12:58) А вот у ...   Apr 30 2007, 00:35
|- - KRS   Цитата(SasaVitebsk @ Apr 30 2007, 01:35) ...   Apr 30 2007, 11:46
||- - SasaVitebsk   Цитата(KRS @ Apr 30 2007, 11:46) Если вы ...   Apr 30 2007, 12:11
|- - zltigo   Цитата(SasaVitebsk @ Apr 30 2007, 00:35) ...   May 1 2007, 00:48
- - Kovrov   Тоже очень больной вопрос.... У меня в одном проек...   Apr 29 2007, 12:46
|- - Dog Pawlowa   Цитата(Kovrov @ Apr 29 2007, 12:46) Тоже ...   Apr 29 2007, 19:50
- - sadat   Добавлю свое замечание по этому вопросу. Из опыта,...   Apr 29 2007, 14:53
- - singlskv   Долго думал участвовать в обсуждении или не участв...   Apr 30 2007, 00:55
- - Nanobyte   А вот ещё какой вопрос возникает. Все предложенные...   Apr 30 2007, 19:56
- - umup   ЦитатаТак как КР580 выполнен на динамических регис...   Apr 30 2007, 20:52
- - Nanobyte   Очень просто. Статические регистры выполнены на об...   Apr 30 2007, 21:12
- - bodja74   2Nanobyte Незнаю как РОН ,но SRAM в AVR указано я...   Apr 30 2007, 23:23
|- - Nanobyte   Цитата(bodja74 @ May 1 2007, 00:23) ...Не...   May 1 2007, 00:09
- - slog   Можно проверить CRC EEPOM и FLASH, как самые вероя...   May 2 2007, 13:19
- - SasaVitebsk   Цитата(slog @ May 2 2007, 13:19) Можно пр...   May 2 2007, 16:37
- - ПАВ   Хочу сказать свои два слова. В общем случае разли...   May 9 2007, 06:34
- - klop   Для средненькой прооверки памяти AVR польззовал сл...   May 9 2007, 16:27
- - Getmanov   Для любой встроенной системы, имеет смысл тестиров...   Feb 11 2008, 18:49
|- - Дон Амброзио   Цитата(Getmanov @ Feb 11 2008, 21:49) тес...   Feb 11 2008, 20:05
||- - Getmanov   Цитата(Дон Амброзио @ Feb 11 2008, 22:05)...   Feb 14 2008, 09:41
||- - SasaVitebsk   Цитата(Getmanov @ Feb 14 2008, 13:41) Для...   Feb 14 2008, 11:14
||- - Дон Амброзио   Цитата(Getmanov @ Feb 14 2008, 12:41) Пер...   Feb 14 2008, 15:45
||- - Dog Pawlowa   Цитата(Дон Амброзио @ Feb 14 2008, 19:45)...   Feb 15 2008, 04:31
||- - Getmanov   Цитата(Дон Амброзио @ Feb 14 2008, 17:45)...   Feb 16 2008, 00:29
||- - Дон Амброзио   Цитата(Getmanov @ Feb 16 2008, 03:29) А в...   Feb 16 2008, 11:32
||- - zltigo   Цитата(Дон Амброзио @ Feb 16 2008, 14:32)...   Feb 16 2008, 11:48
|||- - Дон Амброзио   Цитата(zltigo @ Feb 16 2008, 14:48) не со...   Feb 16 2008, 13:09
||- - Getmanov   Цитата(Дон Амброзио @ Feb 16 2008, 13:32)...   Feb 16 2008, 12:52
|- - galjoen   Насчёт тестов считаю, что они полезны, но не особо...   Feb 11 2008, 20:35
|- - Дон Амброзио   Цитата(galjoen @ Feb 11 2008, 23:35) Насч...   Feb 11 2008, 20:44
- - SasaVitebsk   Стиральная доска всегда надёжнее чем стиральная ма...   Feb 15 2008, 11:02
|- - galjoen   Цитата(_Pasha @ Feb 16 2008, 14:53) По по...   Feb 16 2008, 12:53
||- - BigBolt   Цитата(_Pasha @ May 19 2008, 08:54) Извес...   May 19 2008, 08:01
||- - tag   Цитата(_Pasha @ May 19 2008, 08:54) Извес...   May 19 2008, 10:23
|- - Getmanov   Цитата(BigBolt @ May 19 2008, 07:11) Можн...   May 19 2008, 04:58
|- - zltigo   Цитата(BigBolt @ May 19 2008, 06:11) Можн...   May 20 2008, 10:05
|- - BigBolt   Цитата(zltigo @ May 20 2008, 14:05) А пот...   May 20 2008, 10:57
|- - sKWO   Цитата(zltigo @ May 20 2008, 13:05) одна ...   May 20 2008, 12:03
- - SasaVitebsk   Конечно - это всё не праздные вопросы. И в каждом ...   Feb 17 2008, 09:46
|- - _Pasha   Цитата(SasaVitebsk @ Feb 17 2008, 12:46) ...   Feb 17 2008, 09:52
|- - SasaVitebsk   Цитата(_Pasha @ Feb 17 2008, 13:52) Брат ...   Feb 17 2008, 10:14
- - vetal   Мне, вот, просто интересно стало. А что же делать ...   May 16 2008, 08:01
- - BigBolt   Интересно...., а контроль переполнения стека тоже ...   May 20 2008, 09:42
- - Rst7   ЦитатаИнтересно...., а контроль переполнения стека...   May 20 2008, 10:00
- - defunct   Цитата(Rst7 @ May 20 2008, 13:00) Плохо т...   May 20 2008, 10:14


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

 


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


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