|
Целесообразность тестирования памяти и регистров |
|
|
Guest_Serg79_*
|
Apr 28 2007, 09:57
|
Guests

|
В данной теме мне хотелось бы обсудить вопрос целесообразности проведения тестирований памяти и регистров микроконтроллера.
Теперь хочу высказать свои мысли по этому поводу. Одним из главных требований выдвигаемых к программному обеспечению (ПО) для встраиваемых систем, это – контроль и проверка правильного функционирования рабочего окружения программы. К этому набору относятся, касательно микроконтроллеров AVR, регистры общего назначения (РОН), оперативно запоминающее устройство (ОЗУ), регистр состояния выполнения программы (SREG), память хранящая код программы (FLASH) и устройства с которыми работает программа (USART, ADC, TWI и т.д.). Так что в независимости от того хочешь ты этого или не хочешь, твоя программа помимо того что должна соответствовать требованиям выдвигаемым “техническим заданием”, дополнительно должна выполнять все требования предъявляемые к ПО для встраиваемых систем.
Высказывания такого характера как: ”Да что их проверять, за всю мою долгую историю собирания разных устройств на коленка, еще не у одного контроллера не выбило ячейку памяти” или ”Этого не может быть потому что этого не может” и ”т.д.”, просто не выдерживают никакой критики.
А вот вопросы касающиеся целесообразности проверки того или иного узла микроконтроллера и глубины проверки одного взятого узла мне бы и хотелось здесь обсудить.
Вот я и хочу услышать мнение тех людей, которым приходилось сталкиваться с данными вопросами, а так же послушать их высказывания по этому поводу и методы решения этих проблем.
|
|
|
|
|
 |
Ответов
|
Feb 16 2008, 13:17
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(_Pasha @ Feb 16 2008, 15:53)  По поводу надежности программы. Вот, я, например, никогда не допущу (в девайсе, работающем круглосуточно) использование ячейки ОЗУ для предварительно рассчитанной константы, в которую проц будет потом неделями заглядывать. Хороший пример для формулирования понятия надежной программы? Скажем так, я с этим не согласен. Ниже объясню почему. Это, кстати не относится к словам zltigo. Здесь я соглашусь. ВСЕ исключительные ситуации должны быть обработаны. Это очевидно. Более того именно программист и видит все эти ситуации. Иначе в его программе будут необработанные ветки либо упрощённый алгоритм. Теперь возвращаясь к цитате. Иными словами вы допускаете, что эта ячейка может быть повреждена в процессе работы? А чем она, простите, отличается от соседней? Или от ячейки стэка? А как, защититься, от повреждения стэка? Как контролировать постоянно меняющееся озу программой, которая сама меняет озу? Программа должна быть простой и регулярной. Достаточной для реализации необходимого алгоритма. С момента, когда программа начинает жить своей жизнью - её надо просто переписывать заново. По поводу проверок, я тоже согласен с подходом "анализ исправности чипа чипом исправность которого вызывает сомнения - нонсенс" Ну понимаю - сделать самодиагностику до старта и блокирнуться, хотя нет никакой гарантии что это произойдёт. Но теория вероятности такова, что для вас, к примеру, выход одного изделия из тысячи - 0.1%, а для клиента, который купил одно ваше изделие - 100%. Это я к тому что если от вашего изделия может взорваться снаряд (принципиально может), и вероятность этого события 0.1%, то это уже недопустимо потому, что кому-то это может стоить жизни. А значит здесь надо применять другие методы. Такие, чтобы выход из строя вашего изделия ЛЮБЫМ СПОСОБОМ не приводил к этому взрыву. Это только резервирование.
|
|
|
|
|
Feb 16 2008, 14:14
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(SasaVitebsk @ Feb 16 2008, 16:17)  Теперь возвращаясь к цитате. Иными словами вы допускаете, что эта ячейка может быть повреждена в процессе работы? А чем она, простите, отличается от соседней? Или от ячейки стэка? А как, защититься, от повреждения стэка? Как контролировать постоянно меняющееся озу программой, которая сама меняет озу? У меня время жизни объектов без их регенерации сравнительно короткое. Иногда ставлю низкоприоритетный тред, который пересчитывает кое-какие "константы". И вот почему: Сколько можно гонять/тестировать девайс? Новая ли разработка, либо просто выходной контроль - чем короче можно сделать этот процесс, тем лучше. В случае периодической калькуляции Цитата С момента, когда программа начинает жить своей жизнью - её надо просто переписывать заново. данный момент наступит быстрее при отладке, либо больше вероятность обнаружить некорректно работающее железо проца, если все на уровне. Если все ОК, то я могу уверенно полагать, что испытания прошли. Без организации теста наработки на сбой. Цитата Такие, чтобы выход из строя вашего изделия ЛЮБЫМ СПОСОБОМ не приводил к этому взрыву. Нет, я в такое не лезу. Зубками не вырос.
|
|
|
|
|
Feb 16 2008, 22:38
|
Гуру
     
Группа: Свой
Сообщений: 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 разрушится быстрее или вероятность появления ошибки выше?
|
|
|
|
|
Feb 17 2008, 08:02
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(SasaVitebsk @ Feb 17 2008, 01:38)  Я совершенно не спорю с вами я просто не знаю ответа. ................. В каком из этих вариантов EEPROM разрушится быстрее или вероятность появления ошибки выше? А резервирование - то делается на макроуровне, на уровне блоков. А все остальное - камлания и холодный термоядерный синтез.  Есть пример - контроллер мостовой пилы для резки гранита. Все просто - тележка ездит вперед/назад, пила вверх/вниз и враво/влево, датчики положения (холла). Решения - периодическая проверка живучести системного таймера, таймауты на прием сигналов датчиков. Красота... но если пила в камне, то вправо/влево включать нельзя. А как сие определить? Проверить положение? А если что-то врет? Тогда получается некрасивая пропорция - проц за 1 доллар убивает пилу за 2000 оных. Вышли из положения - перемещения влево/вправо можно только выключить автоматом. Включить - только вручную. Извините за оффтоп.
|
|
|
|
|
Feb 18 2008, 14:57
|

Участник

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

|
Цитата(SasaVitebsk @ Feb 17 2008, 11:46)  Конечно - это всё не праздные вопросы. И в каждом конкретном случае надо самостоятельное решение принимать. А груз ответственности велик. Будем решать. Будем внимательнее.  Полностью согласен, достаточность мер диагностики определяет только разработчик и под свою ответственность. И на 99% вероятность аварии в его руках. Но если вернуться к теме Цитата Целесообразность тестирования памяти и регистров То честно говоря не вижу в этом особого смысла, да и возможности. При включении можно проверить всё, что угодно. А как во время работы проверить ОЗУ? Остановить устройство, и записывать-считывать память, регистры и т.п.? Цитата(_Pasha @ Feb 17 2008, 10:02)  Есть пример - контроллер мостовой пилы для резки гранита. Все просто - тележка ездит вперед/назад, пила вверх/вниз и враво/влево, датчики положения (холла). Решения - периодическая проверка живучести системного таймера, таймауты на прием сигналов датчиков. Красота... но если пила в камне, то вправо/влево включать нельзя. А как сие определить? Проверить положение? А если что-то врет? Тогда получается некрасивая пропорция - проц за 1 доллар убивает пилу за 2000 оных. Для устройств, которые выполняют периодические действия эта задача решаема, например в ЧПУ станка такую проверку можно выполнять перед запуском программы. А если процесс непрерывный или непредсказуемый? Да и вероятность выхода из строя ячейки памяти гораздо ниже, чем какого либо датчика, поэтому стоит обращать внимание на диагностику периферийных устройств, исходя из моего опыта, это в большой степени снижает вероятность отказа, и конечно же стоит следить за "качеством" программы написаной Вами.
|
|
|
|
|
May 18 2008, 18:40
|

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

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

Участник

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

|
Цитата(Дон Амброзио @ May 18 2008, 21:40)  Как как.. Да как два пальца абосфальт.. Записал чё-нить в ОЗУ и тут же прочитал (проверил тем самым записалось ли). Не знал про такой способ? А тут же, это когда, через такт, секунду, месяц? А ещё бывают volatile переменные, что, запрещать к ним доступ, что бы прочитать что записалось?
|
|
|
|
|
May 19 2008, 04:11
|
Местный
  
Группа: Участник
Сообщений: 424
Регистрация: 6-03-06
Из: Н.Новгород
Пользователь №: 14 997

|
Цитата(Getmanov @ May 18 2008, 23:10)  А тут же, это когда, через такт, секунду, месяц? А ещё бывают volatile переменные, что, запрещать к ним доступ, что бы прочитать что записалось? Можно выделить сразу буфер, для проверуи памяти. Сначала проверяете его, а потом блоками перетаскиваете в него содержимое из ОЗУ, проверив определённый участок памяти, возвращаете туда то что перекидывали. Естенственно на время теста нужно вырубать прерывания. А период тестирования определяется параметрами надёжности и безопасности вашего устройства.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|