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

 
 
> Прошу помощи с STM32F051, Периодическое сваливание в HardFault
nanorobot
сообщение Aug 8 2014, 18:41
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Отлаживаю дивайс на STM32F051. интенсивно используется DMA - все каналы. Периодически (1 раз в 1- 4 часа) происходит HardFault.Ввел обработчик ХардФаулт из Definitive Guide, получил листинг регистров. Не могу полноценно осознать результаты. Судя по содержимому PC, инструкция, вызвавшая HardFault была расположена в RAM. Непонятно. Указатели на функции не использую.
Во вложении кусочек скриншота с регистрами.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Aug 19 2014, 05:05
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



даже в мего защищенном С# есть object и var. Так что насчет стиля не согласен, согласен с тем что если пошли по этому пути то надо следить самому и учитывать особенности архитектуры.

В большинстве случаев void * может быть прекрасно заменен на char * без какого либо ущерба для функционала или производительности. Void нужен больше стилистически, что-ли, для понятности кода.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 19 2014, 06:10
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Aug 19 2014, 08:21
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
LightElf
сообщение Aug 21 2014, 11:51
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 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 работать не будет.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Aug 26 2014, 11:54
Сообщение #6


Гуру
******

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



Подскажите пожалуйста, как увидеть карту занятости оперативной памяти например в Keil ?


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 07:53
Рейтинг@Mail.ru


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