|
Самотестирование микроконтроллера в фоновом режиме |
|
|
|
Dec 12 2015, 14:25
|
Знающий
   
Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748

|
При разработке проекта, содержащего ASIC и МК, стоит задача постоянного тестирования как аппаратной, так и программной части в фоновом режиме с возможностью автоматического исправления возможных ошибок, поскольку физического доступа к "железу" не будет, если только частичная замена прошивки.
Подскажите, пожалуйста, литературу или ссылки по данной тематике. UART можно проверить путем приема/передачи соответствующих сообщений, код во флэши можно проверить, сравнивая контрольные суммы страниц, ... Хотелось бы подробнее узнать о дополнительных проверках и, возможно, лучших решениях их осуществления. Прочитал про Power-on self-test (POST). С этим более менее понятно, а вот как эффективно проводить мониторинг именно работающей программы, не нарушая временные диаграммы, пока не очень ясно.
|
|
|
|
Guest_TSerg_*
|
Dec 12 2015, 14:30
|
Guests

|
Кое-кто делает троированные системы.
|
|
|
|
|
Dec 12 2015, 14:53
|
Знающий
   
Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748

|
Цитата(TSerg @ Dec 12 2015, 18:30)  Кое-кто делает троированные системы. Спасибо, читаю. Вещь сУрьезная. Видимо, на одном MCU нормальную систему не сделать при заданных степени контроля и надежности.
|
|
|
|
|
Dec 12 2015, 15:02
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Grizzzly @ Dec 12 2015, 17:53)  Спасибо, читаю. Вещь сУрьезная. Видимо, на одном MCU нормальную систему не сделать при заданных степени контроля и надежности. Кое что и на одном можно. Например данные в памяти записывать перекрывая их Хеммингом, а исполнять из кэша... А общая теория такова. Есть "рабочий процесс", который считается не надежным. Ну например из-за большого количества команд, ветвлений и логики... И есть "тестовый процесс", который задействует гораздо меньше ресурсов или исполняется на другом ядре. Пример - сторожевой таймер. Но наверняка можно и другие такие примеры привести... И производится сравнение результатов... Вот это в общем виде...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Dec 12 2015, 21:07
|

Местный
  
Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502

|
Цитата(Grizzzly @ Dec 12 2015, 14:25)  При разработке проекта, содержащего ASIC и МК, стоит задача постоянного тестирования как аппаратной, так и программной части в фоновом режиме с возможностью автоматического исправления возможных ошибок, поскольку физического доступа к "железу" не будет, если только частичная замена прошивки. Подскажите, пожалуйста, литературу или ссылки по данной тематике. UART можно проверить путем приема/передачи соответствующих сообщений, код во флэши можно проверить, сравнивая контрольные суммы страниц, ... Хотелось бы подробнее узнать о дополнительных проверках и, возможно, лучших решениях их осуществления. Прочитал про Power-on self-test (POST). С этим более менее понятно, а вот как эффективно проводить мониторинг именно работающей программы, не нарушая временные диаграммы, пока не очень ясно. А вы уже определились, с какими повреждениями собираетесь бороться-то ?  А то, вот, например, прилетит высокоэнергетичная частица в триггер, выполнит bit flip, ну и процессор выполнит jz вместо jnz. Что будем делать ?
|
|
|
|
|
Dec 12 2015, 21:29
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(CrimsonPig @ Dec 13 2015, 01:07)  А то, вот, например, прилетит высокоэнергетичная частица в триггер, выполнит bit flip, ну и процессор выполнит jz вместо jnz. Что будем делать ? Цитата(Grizzzly @ Dec 13 2015, 01:16)  Если прилетит в ОЗУ или во флэш, то использовать другие их части. Вы не поняли. проц, флеш и/или озу вполне рабочие , речь о том что во время дешифрации команды (из за пролетающей частицы) процессор выполнит не верное действие! Что делать? кого и как вырубать?
|
|
|
|
|
Dec 12 2015, 21:29
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Grizzzly @ Dec 12 2015, 17:53)  Видимо, на одном MCU нормальную систему не сделать при заданных степени контроля и надежности. Вот, вспомнил. У НЕК в памяти команд был сделан внутренний контроль четности... А у TI есть процессоры с троированием прямо на кристалле... А вообще, прежде чем брать "что подешевле", лучше выбрать производителя который в большинстве продукции нацелен на автомобильный рынок. Т.к. там поголовная проверка, а не выборочная, как для ширпотреба... Ребята из ADI на семинаре рассказывали, что если есть брак на коммерческой "вафле", то выкидывается только один бракованный чип. А если на "автомобильной", то кроме бракованного выкидываются еще чипы, которые к нему примыкают. Чтобы получить НУЛЕВОЙ брак в автомобильных исполнениях...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Dec 13 2015, 07:35
|
Местный
  
Группа: Участник
Сообщений: 346
Регистрация: 15-12-13
Из: Планета Земля
Пользователь №: 79 630

|
Лучше использовать троирование. Пятирирование и т.п. Чем заморачиваться с софтом. Это будет гораздо проще. Да и дешевле. Сейчас микроконтроллеры стоят копейки. Можно в одну плату хоть 20 штук их напихать А так я тоже по молодости извращался с "самотестированием" в Run-Time. Вплоть до того что контролировал что проц прошел все точки вычислительной траектории и контролировал длительность выполнения отдельных участков кода. К примеру если проц выполнил участок кода не за 100 мкС, а за 50 или 150, то фиксировался сбой, "вызванный залетевшей в проц альфа-частицей"©. Но все эти извращения требуют расчетов времени выполнения участков кода и работать чисто на ассемблере. Ни о каком Си и тем более С++ и речи не было.
Сообщение отредактировал Флюктуация ваккума - Dec 13 2015, 07:39
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|