|
Прошу помощи с 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 19 2014, 06:10
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(KnightIgor @ Aug 18 2014, 19:31)  Сергей, Вы правы. В 2014 году. Для 2009-2010 высказывание смысла не имеет. Похоже, я окончательно потерял нить ваших рассуждений. Если вы работаете с CM-0 - используйте документацию и примеры от CM-0. Причем тут CM-3 независимо от года его рождения? Цитата(Golikov A. @ Aug 19 2014, 08:05)  В большинстве случаев void * может быть прекрасно заменен на char * без какого либо ущерба для функционала или производительности. Это глубокое заблуждение. Будет ущерб производительности программиста. В подавляющем большинстве случаев void * используется в параметрах функций, подобных memcpy(), read(), write(). Это позволяет существенно разгрузить исходник от явных приведений типа при вызове таких функций (приведение в этом случае делается один раз внутри функции). При замене на char * возможность неявного приведения теряется, исходник загромождается явными приведениями. А загроможденный исходник - это совершенно ненужные потери времени на написание и сопровождение.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Aug 19 2014, 08:21
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(Сергей Борщ @ Aug 19 2014, 08:10)  Похоже, я окончательно потерял нить ваших рассуждений. Если вы работаете с CM-0 - используйте документацию и примеры от CM-0. Причем тут CM-3 независимо от года его рождения? Я о том, что нельзя предвидеть будущее с одной стороны, и легко умничать (не упрек Вам, а общее рассуждение) и тыкать НЫНЕ носом в код, несовместимый с процессором, которого не было и в помине в период написания библиотеки. И о том, что несмотря на стремление и утверждение ARM "забыть" ассемблер при работе с Cortex (это же их рекламный слоган был!), есть навороты, когда без этого самого ассемблера (смотри тот же ARM для SVC) ну никак. Я не спорю, что -M0 это иное, чем -M3, и надо учитывать СЕЙЧАС особенности -M0, но учесть их 4-5 лет назад было невозможно по определению. И так будет всегда. И допахивать код придется всегда - тот же time_t. Тут один советчик опустился до вопроса, не пробовал ли я код с PDP-11 на Cortex перенести. Он, видимо, предполагал, что я не знаю, что такое PDP-11. Но в отличие от него, я еще помню НАИЗУСТЬ многие бинарные коды инструкций PDP-11: в советское время CM-1420 и "Электроника". Кстати, MSP430 - это тот самый PDP-11 по идее.
Сообщение отредактировал KnightIgor - Aug 19 2014, 08:52
|
|
|
|
|
Aug 21 2014, 11:51
|
Частый гость
 
Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205

|
QUOTE (KnightIgor @ Aug 19 2014, 12:21)  Тут один советчик опустился до вопроса, не пробовал ли я код с PDP-11 на Cortex перенести. Он, видимо, предполагал, что я не знаю, что такое PDP-11. Но в отличие от него, я еще помню НАИЗУСТЬ многие бинарные коды инструкций PDP-11: в советское время CM-1420 и "Электроника". Кстати, MSP430 - это тот самый PDP-11 по идее. Раз уж коды инструкций на наизусть помните, может и требования к выравниванию переменных не забыли? На всякий случай: ваш код и на PDP-11 работать не будет.
|
|
|
|
Сообщений в этой теме
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 nanorobot Со стеком разобрался. Нашел точку в которой происх... Aug 9 2014, 20:47 KnightIgor Цитата(nanorobot @ Aug 9 2014, 22:47) Точ... Aug 10 2014, 12:21  Сергей Борщ Цитата(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  MiklPolikov Очень интересная тема !
Подскажите, нет ли в и... Aug 17 2014, 11:18   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   LightElf QUOTE (KnightIgor @ Aug 19 2014, 12:21) Я... Aug 19 2014, 10:29 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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|