|
Прошу помощи с STM32F051, Периодическое сваливание в HardFault |
|
|
|
Aug 8 2014, 18:41
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Отлаживаю дивайс на STM32F051. интенсивно используется DMA - все каналы. Периодически (1 раз в 1- 4 часа) происходит HardFault.Ввел обработчик ХардФаулт из Definitive Guide, получил листинг регистров. Не могу полноценно осознать результаты. Судя по содержимому PC, инструкция, вызвавшая HardFault была расположена в RAM. Непонятно. Указатели на функции не использую. Во вложении кусочек скриншота с регистрами.
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Aug 10 2014, 12:21
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(nanorobot @ Aug 9 2014, 22:47)  Точка - chSemSignal(&semAdc) - использование сервиса RTOS Nil(ChibiOs) от Jiovanni di Sirio. Гляньте, выровнена ли переменная/структура (и ее поля) semAdc: для M0 это критично. Если M3 скушает структуру типа: __packed { U8 a; void *p; }, и не подавится (то есть, когда указатель p явно по нечетному адресу), то в M0 попытка обратиться через *p вызывает hard fault. На это я наткнулся, когда переносил библиотеку с M3 на M0. Т.к. структура у меня должна была оставаться __packed, пришлось перетасовать поля, чтобы указатели были по четным адресам.
|
|
|
|
|
Aug 17 2014, 11:18
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
Очень интересная тема ! Подскажите, нет ли в интернете какой-нибудь статьи, где разжёваны все отладочные возможности, которые есть после попадания в Hardfault ? И ещё вопрос . Вот тут, что именно произойдёт неправильно? Цитата(KnightIgor @ Aug 10 2014, 16:21)  __packed { U8 a; void *p; }, , то в M0 попытка обратиться через *p вызывает hard fault. Я верно понимаю, что не получится прочитать из памяти 32х битную переменную, не выровненную в памяти на 32 бита ? То есть, ядре М0 вот в этом случае значение b будет всё время некорректным ? __packed { U8 a; U32 b; },
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
Сообщений в этой теме
nanorobot Прошу помощи с STM32F051 Aug 8 2014, 18:41 adnega Стека точно хватает? Aug 8 2014, 19:22 nanorobot Цитата(adnega @ Aug 9 2014, 01:22) Стека ... Aug 8 2014, 19:25 Golikov A. так сгенерите карту памяти, и поглядите. Если огро... Aug 9 2014, 06:15 nanorobot увеличил размер стека в 1.5 раза. не помогло. Aug 9 2014, 09:21 ViKo Причина HardFault описана в Fault регистрах. В той... Aug 9 2014, 10:06 nanorobot Цитата(ViKo @ Aug 9 2014, 16:06) Причина ... Aug 9 2014, 10:18  jcxz Цитата(nanorobot @ Aug 9 2014, 16:18) Есл... Aug 9 2014, 15:25   nanorobot Цитата(jcxz @ Aug 9 2014, 21:25) ...
Ес... Aug 9 2014, 16:44    jcxz Цитата(nanorobot @ Aug 9 2014, 22:44) Есл... Aug 9 2014, 18:32     nanorobot Цитата(jcxz @ Aug 10 2014, 00:22) Пристой... Aug 9 2014, 18:35      jcxz Тогда эта модификация стека произошла в вашем обра... Aug 9 2014, 18:50       nanorobot Цитата(jcxz @ Aug 10 2014, 00:50) Тогда э... Aug 9 2014, 19:21        ViKo Цитата(nanorobot @ Aug 9 2014, 22:21) Осо... Aug 9 2014, 20:50 ViKo С CM0 знаком меньше. Может, таблица векторов преры... Aug 9 2014, 10:33 KnightIgor Цитата(nanorobot @ Aug 8 2014, 20:41) Отл... Aug 9 2014, 11:17 nanorobot Цитата(KnightIgor @ Aug 9 2014, 17:17) ..... Aug 9 2014, 11:23  Сергей Борщ Цитата(KnightIgor @ Aug 10 2014, 15:21) Т... Aug 10 2014, 14:57   KnightIgor Цитата(Сергей Борщ @ Aug 10 2014, 16:57) ... Aug 10 2014, 16:49    Сергей Борщ Цитата(KnightIgor @ Aug 10 2014, 19:49) У... Aug 11 2014, 08:43     jcxz Цитата(Сергей Борщ @ Aug 11 2014, 14:43) ... Aug 11 2014, 09:11     KnightIgor Цитата(Сергей Борщ @ Aug 11 2014, 10:43) ... Aug 12 2014, 10:08      Сергей Борщ Цитата(KnightIgor @ Aug 12 2014, 13:08) в... Aug 12 2014, 11:39       KnightIgor Цитата(Сергей Борщ @ Aug 12 2014, 13:39) ... Aug 12 2014, 12:33        Сергей Борщ Цитата(KnightIgor @ Aug 12 2014, 15:33) н... Aug 12 2014, 17:39  nanorobot Цитата(KnightIgor @ Aug 10 2014, 18:21) Г... Aug 10 2014, 15:14   adnega Цитата(MiklPolikov @ Aug 17 2014, 15:18) ... Aug 17 2014, 11:45    MiklPolikov Цитата(adnega @ Aug 17 2014, 15:45) Почем... Aug 17 2014, 11:54     adnega Цитата(MiklPolikov @ Aug 17 2014, 15:54) ... Aug 17 2014, 13:46 nanorobot Thank. День прожит не зря. )) Aug 9 2014, 21:03 Golikov A. вроде как-то уже такое обсуждали, но так и не смог... Aug 11 2014, 09:59 jcxz Не правы.
Здесь совсем о другом разговор. Почитайт... Aug 11 2014, 10:11 Golikov A. ну типа
Кодchar Array[10];
int *p = ... Aug 17 2014, 14:07 adnega Цитата(Golikov A. @ Aug 17 2014, 18:07) н... Aug 17 2014, 14:36 Сергей Борщ Цитата(Golikov A. @ Aug 17 2014, 17:07) Н... Aug 17 2014, 22:22  KnightIgor Цитата(Сергей Борщ @ Aug 18 2014, 00:22) ... Aug 18 2014, 07:50   Сергей Борщ Цитата(KnightIgor @ Aug 18 2014, 10:50) К... Aug 18 2014, 09:56    KnightIgor Цитата(Сергей Борщ @ Aug 18 2014, 11:56) ... Aug 18 2014, 12:31     Сергей Борщ Цитата(KnightIgor @ Aug 18 2014, 15:31) Н... Aug 18 2014, 12:48     LightElf QUOTE (KnightIgor @ Aug 18 2014, 16:31) Я... Aug 18 2014, 13:13      KnightIgor Цитата(LightElf @ Aug 18 2014, 15:13) До ... Aug 18 2014, 14:45       Сергей Борщ Цитата(KnightIgor @ Aug 18 2014, 17:45) Е... Aug 18 2014, 15:09        KnightIgor Цитата(Сергей Борщ @ Aug 18 2014, 17:09) ... Aug 18 2014, 16:31       LightElf QUOTE (KnightIgor @ Aug 18 2014, 18:45) К... Aug 19 2014, 07:30 Golikov A. это же условно...
может же быть входной байтовый... Aug 17 2014, 17:11 adnega Цитата(Golikov A. @ Aug 17 2014, 21:11) э... Aug 17 2014, 20:45 Golikov A. если тот кто пишет прошивку об этом знает и следит... Aug 18 2014, 07:00 adnega Цитата(Golikov A. @ Aug 18 2014, 11:00) П... Aug 18 2014, 07:38 Golikov A. ЦитатаПочему вы упорно валите с больной головы на ... Aug 18 2014, 11:39 Tahoe Цитата(Golikov A. @ Aug 18 2014, 15:39) п... Aug 19 2014, 03:16 Golikov A. ЦитатаИз указателя на int делать указатель на char... Aug 18 2014, 15:37 Golikov A. даже в мего защищенном С# есть object и var. Так ч... Aug 19 2014, 05:05 Сергей Борщ Цитата(KnightIgor @ Aug 18 2014, 19:31) С... Aug 19 2014, 06:10  KnightIgor Цитата(Сергей Борщ @ Aug 19 2014, 08:10) ... Aug 19 2014, 08:21   LightElf QUOTE (KnightIgor @ Aug 19 2014, 12:21) Я... Aug 19 2014, 10:29   LightElf QUOTE (KnightIgor @ Aug 19 2014, 12:21) Т... Aug 21 2014, 11:51    MiklPolikov Подскажите пожалуйста, как увидеть карту занятости... Aug 26 2014, 11:54 Tahoe Цитата(Golikov A. @ Aug 19 2014, 09:05) В... Aug 20 2014, 05:39 Golikov A. Сергей Борщ очень правильно указал зачем применяет... Aug 19 2014, 19:40 Golikov A. А вы по специальности работали? ...
мне вот очень... Aug 20 2014, 07:28 Tahoe Цитата(Golikov A. @ Aug 20 2014, 11:28) м... Aug 20 2014, 08:30 Golikov A. ЦитатаСдаюсь. Видимо, умение программировать дано ... Aug 20 2014, 08:44 Tahoe Цитата(Golikov A. @ Aug 20 2014, 12:44) п... Aug 20 2014, 10:46 Golikov A. ну в целом все как бы ясно, и про вас и про ваш по... Aug 20 2014, 11:24 Tahoe Согласен. Потихоньку слиться - лучшее, что можно с... Aug 20 2014, 12:17 Golikov A. если опустить маалоки и рекурсию, то надо поставит... Aug 26 2014, 12:22
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|