|
Самотестирование микроконтроллера в фоновом режиме |
|
|
|
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
|
|
|
|
|
Dec 13 2015, 09:21
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Grizzzly @ Dec 12 2015, 16:25)  При разработке проекта, содержащего ASIC и МК, стоит задача постоянного тестирования как аппаратной, так и программной части в фоновом режиме с возможностью автоматического исправления возможных ошибок, поскольку физического доступа к "железу" не будет, если только частичная замена прошивки.
Подскажите, пожалуйста, литературу или ссылки по данной тематике. UART можно проверить путем приема/передачи соответствующих сообщений, код во флэши можно проверить, сравнивая контрольные суммы страниц, ... Хотелось бы подробнее узнать о дополнительных проверках и, возможно, лучших решениях их осуществления. Прочитал про Power-on self-test (POST). С этим более менее понятно, а вот как эффективно проводить мониторинг именно работающей программы, не нарушая временные диаграммы, пока не очень ясно. Читайте на тему https://en.wikipedia.org/wiki/Lockstep_(computing)Такие решения есть у всех серьезных производителей: Freescale - Qorivva TI - TMS570 Infineon - AURIX Но по логике сначала надо доказать необходимость "постоянного тестирования как аппаратной, так и программной части в фоновом режиме" для этого анализируют риски. Можно проводить анализ по аналогии с другими отраслями - https://en.wikipedia.org/wiki/Automotive_Sa...Integrity_LevelА то в том виде как вы задали вопрос создается впечатление, что вас там интересует снижение издержек на обслуживание. Но надежность и тестирование тут слабо коррелируют. Вернее они прямо противоречат такой цели.
|
|
|
|
|
Dec 13 2015, 09:26
|
Знающий
   
Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748

|
Цитата(AlexandrY @ Dec 13 2015, 12:21)  Спасибо за ссылки. Как раз именно это хотелось увидеть. Да, придется переосмыслить подход.
|
|
|
|
|
Dec 13 2015, 14:55
|
Местный
  
Группа: Участник
Сообщений: 346
Регистрация: 15-12-13
Из: Планета Земля
Пользователь №: 79 630

|
Цитата(AlexandrY @ Dec 13 2015, 12:21)  Такие решения есть у всех серьезных производителей Это, мягко говоря, неправда. А говоря прямо, это откровенное враньё. На самом деле НИКТО из "серьёзных производителей" процессоров НИКОГДА не заморачивается поддержкой фонового софтваре run-time тестирования потока исполнения. НИКТО не задумывался НИКОГДА о том, что какая-нибудь случайно залетевшая альфа-частица может изменить значение регистра IP и программа можете улететь неизвестно куда. Более того. Не один из производителей компиляторов об этом тоже НИКОГДА не задумывался
Сообщение отредактировал Флюктуация ваккума - Dec 13 2015, 14:53
|
|
|
|
|
Dec 13 2015, 15:38
|

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

|
Цитата(Флюктуация ваккума @ Dec 13 2015, 14:55)  Это, мягко говоря, неправда. А говоря прямо, это откровенное враньё. На самом деле НИКТО из "серьёзных производителей" процессоров НИКОГДА не заморачивается поддержкой фонового софтваре run-time тестирования потока исполнения. НИКТО не задумывался НИКОГДА о том, что какая-нибудь случайно залетевшая альфа-частица может изменить значение регистра IP и программа можете улететь неизвестно куда. Более того. Не один из производителей компиляторов об этом тоже НИКОГДА не задумывался Вот ведь козлы! Чтоже делать-то теперь, дядь Мить ? Цитата(Флюктуация ваккума @ Dec 13 2015, 07:35)  Лучше использовать троирование. Пятирирование и т.п. Чем заморачиваться с софтом. Это будет гораздо проще. Да и дешевле. Сейчас микроконтроллеры стоят копейки. Можно в одну плату хоть 20 штук их напихать Скажите таки, что случилось с дублированием шелезяки на нашем отечественном тракторе фобос-в-грунт? Все-таки не пионеры на ардуинах делали, хотя.. кто его знает
|
|
|
|
|
Dec 13 2015, 18:24
|
Местный
  
Группа: Участник
Сообщений: 346
Регистрация: 15-12-13
Из: Планета Земля
Пользователь №: 79 630

|
Цитата(CrimsonPig @ Dec 13 2015, 18:38)  Скажите таки, что случилось с дублированием шелезяки на нашем отечественном тракторе фобос-в-грунт? Все-таки не пионеры на ардуинах делали, хотя.. кто его знает Таки именно "пионеры". У меня есть знакомые, участвовавшие в проекте. И говорят, что проект "отдали на откуп" "молодым да ранним/перспективным". Ну и они сказали: "Вы старичьё! Не фейхуа не понимаете в современной разработке. Вы все сделаем по своему" Но и обосрались по полной. Дублирование/троирование тоже нужно ведь делать с умом. А то ведь можно не улучшить, а напротив, ухудшить надежность системы
Сообщение отредактировал Флюктуация ваккума - Dec 13 2015, 18:26
|
|
|
|
|
Dec 15 2015, 20:39
|
Местный
  
Группа: Участник
Сообщений: 346
Регистрация: 15-12-13
Из: Планета Земля
Пользователь №: 79 630

|
Цитата(zombi @ Dec 15 2015, 22:42)  вот и надо уменьшать эту вероятность как только возможно Дублирование, троирование, пятирирование....А может вообще штук 100 МК поставить на плату и пусть следят друг за другом? ВОТЦитата(zombi @ Dec 15 2015, 22:24)  счетчик команд вроде PC называется (program counter) На заре моей туманной юности он назывался IP. От слова "Instruction Pointer"
|
|
|
|
|
Dec 15 2015, 21:01
|
Местный
  
Группа: Участник
Сообщений: 346
Регистрация: 15-12-13
Из: Планета Земля
Пользователь №: 79 630

|
Цитата(zombi @ Dec 16 2015, 00:00)  Да хоть миллионирование! Это абсолютно не уменьшит вероятность "схода с орбиты" первого МК. Зато это позволит вовремя это обнаружить и избежать нехороших последствий. Вы вообще в теме? Слышали как работает троирование? В своих проектах юсали?
Сообщение отредактировал Флюктуация ваккума - Dec 15 2015, 21:02
|
|
|
|
|
Dec 15 2015, 21:33
|

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

|
Цитата(Флюктуация ваккума @ Dec 16 2015, 00:19)  Троирование - это вид резервирования. О, теперь понятно. Цитата(Флюктуация ваккума @ Dec 16 2015, 00:01)  Зато это позволит вовремя это обнаружить и избежать нехороших последствий. "вовремя" - понятие растяжимое. Конкретно за какой промежуток времени троирование позволит избежать нехороших последствий?
|
|
|
|
|
Dec 16 2015, 10:01
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Флюктуация ваккума @ Dec 16 2015, 02:39)  Дублирование, троирование, пятирирование....А может вообще штук 100 МК поставить на плату и пусть следят друг за другом? ВОТЕсли все эти МК будут разведены так же, как и тот, который сходит с ума от зажигалки, то это просто приведёт к "Дублирование, троирование, пятирирование...." количества этих сбоев. Лечить надо проблему (кривую разводку платы и её разработчика), а не придумывать кривые костыли и подпорки. Цитата(Флюктуация ваккума @ Dec 16 2015, 00:21)  А к тому, что существует ненулевая вероятность что проц "слетит со своей орбиты". Существует ненулевая вероятность, что в ваш счётчик команд попадёт пучок позитронов и он аннигилирует. Как планируете защищаться от этого??
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|