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

 
 
> stm32 Hard fault
juvf
сообщение Jan 23 2016, 08:47
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



часто валиться hf. иногда указывает LR и PC на одно и тоже место.... но иногда на 0х0. Как отловить HF с LR и PC равным нулю?
Код
[Hard fault handler]
R0 = 0x20003d28
R1 = 0x20003db8
R2 = 0x20006230
R3 = 0x20006230
R12 = 0xa5a5a5a5
LR = 0x0
PC = 0x0
PSR = 0x4000000e
Go to the top of the page
 
+Quote Post
3 страниц V  < 1 2 3 >  
Start new topic
Ответов (15 - 29)
sigmaN
сообщение Jan 27 2016, 09:56
Сообщение #16


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Ну вот это уже более развернутый ответ касающийся только printf
а то сразу
Цитата
как можно реже пользуйтесь кейловскими(иаровскими) библиотечными функциями..как максимум-только malloc/free,все остальное заменяйте собственными реализациями


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 29 2016, 04:59
Сообщение #17


Гуру
******

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



Цитата(SasaVitebsk @ Jan 27 2016, 12:07) *
Но проблема, если честно, не в самом объёме а в том, что это достаточно сильно меняющееся число. Ну и когда у вас несколько задач используют printf, то при анализе размеров стека понимаешь, что его надо увеличивать. В зависимости от сложности выводимой информации, народ указывает размеры до 2к. Вот и получается, что использование printf в трёх задачах - 6к озу.
Применение своих п/п вывода экономит эту память. В моём случае скорости особой не требовалось, так как это происходило при выводе на дисплей, принтер, ну и в HTTP задаче.
Никто не призывает отказываться от стандартных п/п. Просто надо знать инструмент, который применяешь. В случае с printf, надо автоматически увеличивать объём стека ну и убедится что вы выделили его достаточно.

В многозадачной среде можно сделать переключение стека при вызове printf, естественно заблокировав его семафором.
Тогда не нужно закладывать дополнительный объём стека для printf для каждой задачи.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jan 29 2016, 09:27
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Jan 29 2016, 07:59) *
В многозадачной среде можно сделать переключение стека при вызове printf, естественно заблокировав его семафором.
Тогда не нужно закладывать дополнительный объём стека для printf для каждой задачи.

Такие штуки лучше выносить в отдельный классы, методы, функции, делая защиту однозадачных вещей внутри в одном месте.
Я использую отдельные классы-синглтоны, которые как бы везде видны, но существовать могут тока в одном экземпляре.
В этом случае код не зависит от способа вывода служебной информации - где послед. порт, где сам экран, где эзернет и т.д.
Позволяет дать имена более осмысленные и соответствущие требованиям конторы, чем некий prinf и им подобные наборы букв ))
Тогда код легко читаем и переносим. Копированием кусков с одного проекта в другой не требует их допиливания.
Не нужно писать бессмысленные комменты, которые тока путают.
У меня в коде комментов практически нет - код написан так, что легко вкурить что он делает даже через много месяцев...

Сорри за офф ))


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
juvf
сообщение Jan 29 2016, 09:48
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Forger @ Jan 29 2016, 14:27) *
Такие штуки лучше выносить в отдельный классы, методы, функции, делая защиту однозадачных вещей внутри в одном месте.
Я использую отдельные классы-синглтоны, ....

Оверинженеринг в вакууме.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jan 29 2016, 09:56
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(juvf @ Jan 29 2016, 12:48) *
Оверинженеринг в вакууме.


Да ладно, это вы Явы не видели sm.gif Вот там оверинжиниринг в полный рост.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jan 29 2016, 10:30
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(juvf @ Jan 29 2016, 12:48) *
Оверинженеринг в вакууме.

Когда ушел в C++ на ARMах, в голый С не вернусь даже под дулом пистолета )))
Разница по размеру кода щас никого не волнует, да и нету там особой разныцы, зато читаемость и переносимость на порядки выше!
Скорость работы тоже не страдает. Я не использую исключения и работу с ними (пока что).
В обязательном порядке стоит ось, причем сделана обертка вокруг нее, чтобы она стала C++, ну, там классы потоков, программных таймеров, семафором и т.п.
Поменяю ось, поменяю обертку под нее, а весь остальной код во всех проектах вообще не изменится.
Так читаемость и переносимость кода возрастает в разы. Нет глубокой привязки ни к ядру, ни к процу, ни к компилятору, ни к оси.
Экономия времени на новых проектах просто чумовая!
Лень-матушка вынуждает так поступать - категорически ненавижу переделывать свою же работу, лучше сразу сделать нормально wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
scifi
сообщение Jan 29 2016, 10:46
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Forger @ Jan 29 2016, 13:30) *
Поменяю ось, поменяю обертку под нее, а весь остальной код во всех проектах вообще не изменится.

Это и старый добрый Си умеет.
Вам нравится Си++ - почему бы и нет? Может быть, у меня просто такие проекты, но ни разу не ощущал потребности перейти на Си++. А просто так без причины как-то не хочется.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jan 29 2016, 10:52
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(scifi @ Jan 29 2016, 13:46) *
Это и старый добрый Си умеет.
Это даже можно на асме сделать ))
Тока переход в плюсы - это переход на новый уровень структурного, а не функционального программирования.
Чистый С хоть и позволяет это делать, но с такими ацкими костылями, что боже упаси это недобровольный "секас" wacko.gif


Цитата
Вам нравится Си++ - почему бы и нет? Может быть, у меня просто такие проекты, но ни разу не ощущал потребности перейти на Си++. А просто так без причины как-то не хочется.

Дело тут вовсе не том что нравится или нет, а в том, что этот инструмент обладает гораздо бОльшей функциональностью и значительно упрощает создание самодокументируемого и легкосопровождаемого кода.
Мне важнее последнее. Ведь в конечном итоге любой код превращается компилятором в т.н. машинные коды.
Поэтому если когда-то появится возможность писать на ARM под С#, я буду это делать, предварительно отключив "тяжелые" вещи, свойственные этим мощным языкам.

Я не буду ручной дрелью ковырять сотню дырок, особенно когда под рукой есть электрическая дрель wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jan 29 2016, 11:10
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Forger @ Jan 29 2016, 13:52) *
Поэтому если когда-то появится возможность писать на ARM под С#, я буду это делать, предварительно отключив "тяжелые" вещи, свойственные этим мощным языкам.


Шарп без тяжелых вещей будет хуже плюсов wink.gif банально потому, что в плюсах значительно больше инструментов времени компиляции. Те же шаблоны, лямбды (сахарок над шаблонами), итераторы в for, да хоть старые добрые макросы.

А вот в шарпе приоритет отдается динамике. Опять же очень многие вещи завязаны на GC.

Плюсы же дают возможность писать достаточно высокоуровнево, но там где надо - генерируемый код будет не медленее си

Хотя конечно процессоры развиваются и постепенно это будет волновать все меньшее количество людей sm.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение Jan 29 2016, 11:19
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Непомнящий Евгений @ Jan 29 2016, 14:10) *
Хотя конечно процессоры развиваются и постепенно это будет волновать все меньшее количество людей sm.gif
Именно! Тут главное - не отставать от поезда, иначе быстро спишут в утиль


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
scifi
сообщение Jan 29 2016, 11:28
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Forger @ Jan 29 2016, 14:19) *
Именно! Тут главное - не отставать от поезда, иначе быстро спишут в утиль

Всё-таки чистое программирование и ковыряние в железе - сильно отличающиеся области деятельности. ИМХО, Си - достаточно простой и обозримый язык, чтобы железячник мог им достойно овладеть и строить сложные системы. Си++ уже выползает за пределы этой зоны, такие железячники - уже редкий зверь (вроде Вас). Там, где железо и софт делает один человек, Си никуда не денется.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jan 29 2016, 13:08
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(scifi @ Jan 29 2016, 14:28) *
Всё-таки чистое программирование и ковыряние в железе - сильно отличающиеся области деятельности. ИМХО, Си - достаточно простой и обозримый язык, чтобы железячник мог им достойно овладеть и строить сложные системы. Си++ уже выползает за пределы этой зоны, такие железячники - уже редкий зверь (вроде Вас). Там, где железо и софт делает один человек, Си никуда не денется.

Все это перешло в глубокий офф, ибо холивар - "C vs C++" - пожалуй самый бессмысленный и беспощадный холивар у программеров.
Одно время был "ASM vs C", я чуток застал те дремучие времена такого холивара (я про контроллеры, т.е. эмбеддерство, НЕ ПК), тоже самое ))
Придет время, C# или что-то подобное сменит C++....

Короче, вот простое сравнение:
Детишки носятся на велосипедах, подрастают и пересаживаются на мопеды/моциклеты, потом личное авто, а у более успешных личный самолет sm.gif
Чистый С - это велосипед: для здоровья полезен, укрепляет мышцы, прост как 5копеек - починит даже безрукий. Но далеко на нем не уедешь и тем более не увезешь.
Но другое дело - моциклет и т.д .....

Понимаете о чем? wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jan 29 2016, 13:21
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Forger @ Jan 29 2016, 16:08) *
Чистый С - это велосипед: для здоровья полезен, укрепляет мышцы, прост как 5копеек - починит даже безрукий. Но далеко на нем не уедешь и тем более не увезешь.


Это не совсем так, достаточно взглянуть на ядро линукса. На чистом Си вполне можно замутить много чего, а если использовать макры или даже внешний препроцессор - то возможности открываются колоссальные sm.gif

То же ООП вполне себе работает и в сях, просто местами оно похоже на закат солнца вручную sm.gif

Чистый Си как-то практически остановился в развитии. Особенно это хорошо видно, если сравнить его с плюсами. Плюсы заморозились в промежутке 1998-2011. Однако стандарт 2011 дал уже много вкусностей, сейчас есть стандарт 14, в котором часть вкусностей углубили. Дальше речь идет о стандарте 17, в котором это движение продолжается.

В Си же за последние годы было добавлено крайне мало - навскидку атомики, bcd, может еще что по мелочи.


Go to the top of the page
 
+Quote Post
Forger
сообщение Jan 29 2016, 13:31
Сообщение #29


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Непомнящий Евгений @ Jan 29 2016, 16:21) *
достаточно взглянуть на ядро линукса
Ой не надо, я тока что пообедал wacko.gif


Цитата
То же ООП вполне себе работает и в сях, просто местами оно похоже на закат солнца вручную
Это точно!


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jan 29 2016, 13:57
Сообщение #30


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(Alechek @ Jan 27 2016, 08:43) *
Видимо, речь идет про конкретный случай. Меня писать свой printf как-то не климатит...


На самом деле не так сложно. Правда если использовать более базовые функции из библотеки.
Я делал принты через TCP и UDP -- познакомился.

Цитата(Forger @ Jan 29 2016, 16:08) *
Все это перешло в глубокий офф, ибо холивар - "C vs C++" - пожалуй самый бессмысленный и беспощадный холивар у программеров.
Одно время был "ASM vs C", я чуток застал те дремучие времена такого холивара (я про контроллеры, т.е. эмбеддерство, НЕ ПК), тоже самое ))
Придет время, C# или что-то подобное сменит C++....

Короче, вот простое сравнение:
Детишки носятся на велосипедах, подрастают и пересаживаются на мопеды/моциклеты, потом личное авто, а у более успешных личный самолет sm.gif
Чистый С - это велосипед: для здоровья полезен, укрепляет мышцы, прост как 5копеек - починит даже безрукий. Но далеко на нем не уедешь и тем более не увезешь.
Но другое дело - моциклет и т.д .....

Понимаете о чем? wink.gif


Нет не понимаю. На Javа предлагаете писать или ХML, а может на Rational Rose?

Цитата(Forger @ Jan 29 2016, 16:08) *
Все это перешло в глубокий офф, ибо холивар - "C vs C++" - пожалуй самый бессмысленный и беспощадный холивар у программеров.
Одно время был "ASM vs C", я чуток застал те дремучие времена такого холивара (я про контроллеры, т.е. эмбеддерство, НЕ ПК), тоже самое ))
Придет время, C# или что-то подобное сменит C++....

Короче, вот простое сравнение:
Детишки носятся на велосипедах, подрастают и пересаживаются на мопеды/моциклеты, потом личное авто, а у более успешных личный самолет sm.gif
Чистый С - это велосипед: для здоровья полезен, укрепляет мышцы, прост как 5копеек - починит даже безрукий. Но далеко на нем не уедешь и тем более не увезешь.
Но другое дело - моциклет и т.д .....

Понимаете о чем? wink.gif


Да нет никакого холивара. Тот же компилятор для С++ написан на С. Только если писать апликации, то конечно С++ кроет С, а вот с системным программированием пока все с точностью до наоборот. У часового мастера и у кузнеца разные инструменты.

Цитата(Forger @ Jan 29 2016, 16:31) *
Ой не надо, я тока что пообедал wacko.gif


Это точно!


От вас подвигов никто и не ждет. Есть же мы для этого sm.gif

Однажды у меня был один сотрудник, который писал на Вижуал С. Он к эмбеддед программистам приставал, чтобы признали, что на РС тоже реал-тайм можно писать. С ним соглашались, чтобы отстал. И с вами согласимся.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:50
Рейтинг@Mail.ru


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