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

 
 
> Обработка 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
Ответов
ViKo
сообщение Jul 7 2018, 18:28
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



А вот, скажем, выйти из той функции, которая сбойнула, и продолжить работу дальше. И зафиксировать сбой, по возможности, и передать.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 7 2018, 18:32
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ViKo @ Jul 7 2018, 21:28) *
А вот, скажем, выйти из той функции, которая сбойнула, и продолжить работу дальше. И зафиксировать сбой, по возможности, и передать.

1. Каким образом выйти?
2. А если дальше все пойдет еще хуже?

Безопаснее рестартовать, сохранив информацию о сбое.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 7 2018, 20:08
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(aaarrr @ Jul 7 2018, 21:32) *
2. А если дальше все пойдет еще хуже?
Безопаснее рестартовать, сохранив информацию о сбое.

Надо думать, все, что выполнялось до функции, работало исправно. А после - как повезет. Так же и сброс не всегда можно допустить, мало ли, какой процесс обслуживается.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 7 2018, 20:48
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ViKo @ Jul 7 2018, 23:08) *
Так же и сброс не всегда можно допустить, мало ли, какой процесс обслуживается.

Вы так и не рассказали, как собираетесь выбираться из fault'а.
"Мало ли какие процессы" должны контролироваться аппаратно и/или безболезненно переживать сброс.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 7 2018, 20:56
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(aaarrr @ Jul 7 2018, 23:48) *
Вы так и не рассказали, как собираетесь выбираться из fault'а.

Типа как известный персонаж:
Прикрепленное изображение

biggrin.gif biggrin.gif biggrin.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 7 2018, 21:04
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(jcxz @ Jul 7 2018, 23:56) *
Типа как известный персонаж...

Так оно в ряде случаев вполне возможно - вон, на ARM7 так предлагали виртуальную память строить. Но прозвучало предложение "выйти из той функции", что уже действительно на грани фантастики.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 10 2018, 07:04
Сообщение #8


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(aaarrr @ Jul 8 2018, 00:04) *
Так оно в ряде случаев вполне возможно - вон, на ARM7 так предлагали виртуальную память строить. Но прозвучало предложение "выйти из той функции", что уже действительно на грани фантастики.

Так PC и LR во время падения в HF сохраняются в стеке. Вот за них и потянуть. Можно просто выйти из HF и продолжить, как ни в чем не бывало.
Я не настаиваю. Предлагаю подумать.
Можно задачу удалить в РТОС, а потом снова создать.
А сбросить МК любой умеет.
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
|- - jcxz   Цитата(aaarrr @ Jul 8 2018, 00:04) Так он...   Jul 7 2018, 21:12
|- - 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
- - AlexandrY   Цитата(Arlleex @ Jul 7 2018, 18:39) Интер...   Jul 11 2018, 13:15
|- - 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 Текстовая версия Сейчас: 26th June 2025 - 12:52
Рейтинг@Mail.ru


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