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

 
 
> Обработка Faults на Cortex-Mx, Как используете?
Arlleex
сообщение Jul 7 2018, 15:39
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Интересует, как коллеги обрабатывают все Faults на микроконтроллерах Cortex-Mx.
Я про NMI, Hard, MemManage, Bus, Usage, SVCall, Debug Monitor, PendSV, Systick.
С SVCall, Debug Monitor, Systick все понятно, с PendSV в принципе тоже.

А что делаете с тяжелыми отказами, отказами шины и прочими? Сейчас я просто вывожу состояние нужных регистров и стек. Как правило, если где-то программа падает, я узнаю об этом на этапе отладки. Но ведь может быть такое, что устройство уже стоит у заказчика и частично подлежит отладке на объектах. И оно должно продолжить функционирование. Как обрабатывать тогда ошибки? Перезагрузка по WDT? Или все-таки грамотный обработчик исключения должен понять природу ошибки и попытаться исправить ее? Если да, то каким образом? Сейчас мне видится вариант с сохранением лога событий в памяти (допустим, SD карты) и перезагрузкой МК. Пока что больше хорошего развития событий не знаю. Отсюда и предположения для обсуждения:
1. Должны ли существовать обработчики исключения CPU, связанные с аварийным событием (промах по памяти, тяжелый отказ, например, и т.д.) только на момент разработки и отладки ПО и выявлять все проблемы именно на этапе разработки, а при этом в боевой работе устройство ни коим образом не должно ловить такие Fault-ы?
2. Пункт 1 влечет за собой следующий вопрос: если в боевом коде обработчики должны быть предусмотрены (я подразумеваю, что все-таки это именно так) - как правильно строить архитектуру обработки ошибок? Что должен делать код в обработчике, кроме как сообщать программисту (каким-то образом) о состоянии регистров?
3. Вопрос больше из разряда "как больше нравится" - код обработчика на ассемблере или на Си?
То есть, как вы поняли, вопрос в грамотном управлении ходом событий для обеспечения надежности и безотказности устройства.

Я задаю себе вслух вопрос: "причину отказа я установлю, но что мне с этим делать дальше?".
Вопрос не философский и хотелось бы узнать, как коллеги на реальной практике применяют обработчики исключений CPU для обеспечения надежности ПО и устройства в целом от сбоев. Только прошу, не хотелось бы услышать ответ "на столе отлаживать надо". Мы отлаживаем. И работает годами. Но бывают (уверен, у всех) непредвиденные случаи, когда устройство может "выстрелить себе в колено", не важно по вашей вине или вине заказчика, и нужно с этим разбираться.
Также был бы благодарен, если на эту тему существуют мануалы, но я об этом не знаю - будьте добры, поделитесь информацией rolleyes.gif

Сообщение отредактировал Arlleex - Jul 7 2018, 15:42
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlexandrY
сообщение Jul 11 2018, 13:15
Сообщение #2


Ally
******

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



Цитата(Arlleex @ Jul 7 2018, 18:39) *
Интересует, как коллеги обрабатывают все Faults на микроконтроллерах Cortex-Mx.
Я про NMI, Hard, MemManage, Bus, Usage, SVCall, Debug Monitor, PendSV, Systick.
С SVCall, Debug Monitor, Systick все понятно, с PendSV в принципе тоже.

Ловить HardFault-ы в релизе во время эксплуатации нет особого смысла.
Слишком много информации надо зафиксировать о контексте события, слишком обременительно хранить историю версий и парсить многомегабайтные логи.
Лучше их выловить отладочным адаптером заранее.
Поскольку такие проблемы чаще всего из-за специфичной периферии SoC-а и происходят во время ее исследований.
Либо по причине некачественного интерфейса к внешней памяти.
Но тут надо не HardFault-ы ловить, а гонять разнообразные тесты.
Помню случай когда ошибка c DDR вылезала у меня только когда компилер генерил STM инструкцию с сохранением более 7 им регистров в определенной последовательности и никак иначе.
Это вызывало самые причудливые Hard Fault-ы всех сортов.
Никакие логи и дампы регистров и стека не помогали. После каждой смены опций компиляции картина ошибок менялась.

Если устройство действительно критичное для безопасности, то никто не даст вам полагаться на обработку HardFault, а потребуют полный пакет самотестирования всего и вся в чипе перед каждой ответственной операцией.
Насчет как писать надежный софт есть специальные стандарты.
Вот тут доступно написано
Что интересно, допускается восстановление после HardFault-ов, если они были ожидаемы и произошли во время штатного тестирования.
Т.е. перед тестированием переопределяем обработчик на специальный для данного теста, по завершению тестирования ставим на место стандартный обработчик RTOS.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Arlleex   Обработка Faults на Cortex-Mx   Jul 7 2018, 15:39
- - aaarrr   По-моему, так: 1. Должны быть и в релизе. 2. Регис...   Jul 7 2018, 15:53
- - ViKo   А вот, скажем, выйти из той функции, которая сбойн...   Jul 7 2018, 18:28
|- - aaarrr   Цитата(ViKo @ Jul 7 2018, 21:28) А вот, с...   Jul 7 2018, 18:32
|- - ViKo   Цитата(aaarrr @ Jul 7 2018, 21:32) 2. А е...   Jul 7 2018, 20:08
|- - aaarrr   Цитата(ViKo @ Jul 7 2018, 23:08) Так же и...   Jul 7 2018, 20:48
|- - jcxz   Цитата(aaarrr @ Jul 7 2018, 23:48) Вы так...   Jul 7 2018, 20:56
|- - aaarrr   Цитата(jcxz @ Jul 7 2018, 23:56) Типа как...   Jul 7 2018, 21:04
|- - jcxz   Цитата(aaarrr @ Jul 8 2018, 00:04) Так он...   Jul 7 2018, 21:12
|- - ViKo   Цитата(aaarrr @ Jul 8 2018, 00:04) Так он...   Jul 10 2018, 07:04
|- - aaarrr   Цитата(ViKo @ Jul 10 2018, 10:04) Так PC ...   Jul 10 2018, 07:24
|- - ViKo   Цитата(aaarrr @ Jul 10 2018, 10:24) А где...   Jul 10 2018, 07:47
|- - jcxz   Цитата(aaarrr @ Jul 10 2018, 10:24) Разме...   Jul 10 2018, 08:05
|- - aaarrr   Цитата(jcxz @ Jul 10 2018, 11:05) Пока не...   Jul 10 2018, 08:13
- - jcxz   Цитата(Arlleex @ Jul 7 2018, 18:39) А что...   Jul 7 2018, 20:45
- - Arlleex   Спасибо участникам обсуждения! Примерно так я ...   Jul 10 2018, 05:14
|- - jcxz   Цитата(Arlleex @ Jul 10 2018, 08:14) где ...   Jul 10 2018, 06:08
||- - Arlleex   Цитата(jcxz @ Jul 10 2018, 10:08) Лучше л...   Jul 10 2018, 06:35
|- - aaarrr   Цитата(Arlleex @ Jul 10 2018, 08:14) Если...   Jul 10 2018, 06:42
|- - jcxz   Цитата(aaarrr @ Jul 10 2018, 09:42) скопи...   Jul 10 2018, 06:57
- - Arlleex   Цитата(aaarrr @ Jul 10 2018, 10:42) Если ...   Jul 10 2018, 07:36
|- - jcxz   Цитата(Arlleex @ Jul 10 2018, 10:36) В эт...   Jul 10 2018, 08:13
- - aaarrr   Цитата(Arlleex @ Jul 10 2018, 10:36) Кста...   Jul 10 2018, 08:01
|- - ViKo   Цитата(aaarrr @ Jul 10 2018, 11:01) Да ну...   Jul 10 2018, 08:09
|- - aaarrr   Цитата(ViKo @ Jul 10 2018, 11:09) Если вн...   Jul 10 2018, 08:18
||- - ViKo   Цитата(aaarrr @ Jul 10 2018, 11:18) Так о...   Jul 10 2018, 08:23
|- - jcxz   Цитата(ViKo @ Jul 10 2018, 11:09) То есть...   Jul 10 2018, 08:26
|- - ViKo   Цитата(jcxz @ Jul 10 2018, 11:26) А какой...   Jul 10 2018, 08:35
|- - jcxz   Цитата(ViKo @ Jul 10 2018, 11:35) А вы ко...   Jul 10 2018, 11:47
|- - ViKo   Цитата(jcxz @ Jul 10 2018, 14:47) Да ужжж...   Jul 10 2018, 11:57
||- - jcxz   Цитата(ViKo @ Jul 10 2018, 14:57) А вы на...   Jul 10 2018, 11:59
||- - ViKo   Цитата(jcxz @ Jul 10 2018, 14:59) Что за ...   Jul 10 2018, 12:04
||- - jcxz   Цитата(ViKo @ Jul 10 2018, 15:04) В обраб...   Jul 10 2018, 12:13
||- - ViKo   Цитата(jcxz @ Jul 10 2018, 15:13) Ааа...   Jul 10 2018, 12:23
|- - serglg   Цитата(jcxz @ Jul 10 2018, 17:47) Да ужжж...   Jul 10 2018, 14:26
- - aaarrr   Цитата(ViKo @ Jul 10 2018, 11:23) По моем...   Jul 10 2018, 08:39
|- - ViKo   Цитата(aaarrr @ Jul 10 2018, 11:39) Можно...   Jul 10 2018, 08:44
||- - aaarrr   Цитата(ViKo @ Jul 10 2018, 11:44) И к вых...   Jul 10 2018, 08:47
||- - ViKo   Цитата(aaarrr @ Jul 10 2018, 11:47) Ну, в...   Jul 10 2018, 08:57
||- - aaarrr   Цитата(ViKo @ Jul 10 2018, 11:57) Допусти...   Jul 10 2018, 09:13
||- - ViKo   Цитата(aaarrr @ Jul 10 2018, 12:13) Главн...   Jul 10 2018, 09:38
||- - Arlleex   Цитата(ViKo @ Jul 10 2018, 13:38) У меня ...   Jul 10 2018, 10:15
|- - Pavia   Цитата(aaarrr @ Jul 10 2018, 11:39) Можно...   Jul 10 2018, 15:01
- - haker_fox   Мой обработчик HardFault состоит из диагностическо...   Jul 11 2018, 09:53
|- - aaarrr   Цитата(haker_fox @ Jul 11 2018, 12:53) Со...   Jul 11 2018, 10:17
|- - ViKo   Цитата(haker_fox @ Jul 11 2018, 12:53) Зн...   Jul 11 2018, 10:22
|- - Arlleex   Цитата(haker_fox @ Jul 11 2018, 13:53) А ...   Jul 11 2018, 11:52
||- - haker_fox   QUOTE (Arlleex @ Jul 11 2018, 19:52) А ес...   Jul 11 2018, 13:11
|- - jcxz   Цитата(haker_fox @ Jul 11 2018, 12:53) А ...   Jul 11 2018, 20:01
|- - Arlleex   Цитата(jcxz @ Jul 12 2018, 00:01) Конечно...   Jul 12 2018, 04:44
||- - jcxz   Цитата(Arlleex @ Jul 12 2018, 07:44) А во...   Jul 12 2018, 12:29
||- - Arlleex   Цитата(jcxz @ Jul 12 2018, 16:29) А эскал...   Jul 12 2018, 12:41
||- - Kabdim   Цитата(Arlleex @ Jul 12 2018, 15:41) ...   Jul 12 2018, 13:53
|- - AlexandrY   Цитата(jcxz @ Jul 11 2018, 23:01) Ну никт...   Jul 12 2018, 19:40
|- - haker_fox   QUOTE (AlexandrY @ Jul 13 2018, 03:40) Ну...   Jul 13 2018, 01:27
|- - AlexandrY   Цитата(haker_fox @ Jul 13 2018, 04:27) Пр...   Jul 13 2018, 10:21
|- - jcxz   Цитата(AlexandrY @ Jul 13 2018, 13:21) Не...   Jul 13 2018, 11:15
|- - haker_fox   QUOTE (AlexandrY @ Jul 13 2018, 18:21) Жд...   Jul 13 2018, 14:18
|- - haker_fox   QUOTE (AlexandrY @ Jul 11 2018, 21:15) Лу...   Jul 11 2018, 13:28
|- - AlexandrY   Цитата(haker_fox @ Jul 11 2018, 16:26) Пе...   Jul 11 2018, 13:45
|- - Pavia   Цитата(haker_fox @ Jul 11 2018, 16:28) Но...   Jul 11 2018, 16:21
|- - Kabdim   Цитата(Pavia @ Jul 11 2018, 19:21) Всё пр...   Jul 11 2018, 16:29
|- - AlexandrY   Цитата(Pavia @ Jul 11 2018, 19:21) Ошероу...   Jul 11 2018, 18:30
- - haker_fox   QUOTE (Arlleex @ Jul 11 2018, 19:52) Я ещ...   Jul 11 2018, 13:19
|- - AlexandrY   Цитата(haker_fox @ Jul 11 2018, 16:19) И ...   Jul 11 2018, 13:24
- - haker_fox   QUOTE (jcxz @ Jul 12 2018, 04:01) Расчуде...   Jul 12 2018, 05:10
|- - jcxz   Цитата(haker_fox @ Jul 12 2018, 08:10) Од...   Jul 12 2018, 12:51
|- - Arlleex   Цитата(jcxz @ Jul 12 2018, 16:51) А мне д...   Jul 12 2018, 13:15
|- - jcxz   Цитата(Arlleex @ Jul 12 2018, 16:15) ETB ...   Jul 12 2018, 13:24
- - Kabdim   Зато они сменили лицензию на 5 версию. За деньги ч...   Jul 16 2018, 09:36
- - Arlleex   Кстати, коллеги. А нормальная ли практика фиксиров...   Jul 17 2018, 09:03
|- - AlexandrY   Цитата(Arlleex @ Jul 17 2018, 12:03) Кста...   Jul 17 2018, 09:09
|- - jcxz   Цитата(Arlleex @ Jul 17 2018, 12:03) А то...   Jul 17 2018, 09:57
- - aaarrr   Цитата(Arlleex @ Jul 17 2018, 12:03) А но...   Jul 17 2018, 09:54


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

 


RSS Текстовая версия Сейчас: 13th August 2025 - 04:20
Рейтинг@Mail.ru


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