|
stm32 Hard fault |
|
|
|
 |
Ответов
(15 - 29)
|
Jan 29 2016, 04:59
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

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

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

|
Цитата(jcxz @ Jan 29 2016, 07:59)  В многозадачной среде можно сделать переключение стека при вызове printf, естественно заблокировав его семафором. Тогда не нужно закладывать дополнительный объём стека для printf для каждой задачи. Такие штуки лучше выносить в отдельный классы, методы, функции, делая защиту однозадачных вещей внутри в одном месте. Я использую отдельные классы-синглтоны, которые как бы везде видны, но существовать могут тока в одном экземпляре. В этом случае код не зависит от способа вывода служебной информации - где послед. порт, где сам экран, где эзернет и т.д. Позволяет дать имена более осмысленные и соответствущие требованиям конторы, чем некий prinf и им подобные наборы букв )) Тогда код легко читаем и переносим. Копированием кусков с одного проекта в другой не требует их допиливания. Не нужно писать бессмысленные комменты, которые тока путают. У меня в коде комментов практически нет - код написан так, что легко вкурить что он делает даже через много месяцев... Сорри за офф ))
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jan 29 2016, 10:30
|

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

|
Цитата(juvf @ Jan 29 2016, 12:48)  Оверинженеринг в вакууме. Когда ушел в C++ на ARMах, в голый С не вернусь даже под дулом пистолета ))) Разница по размеру кода щас никого не волнует, да и нету там особой разныцы, зато читаемость и переносимость на порядки выше! Скорость работы тоже не страдает. Я не использую исключения и работу с ними (пока что). В обязательном порядке стоит ось, причем сделана обертка вокруг нее, чтобы она стала C++, ну, там классы потоков, программных таймеров, семафором и т.п. Поменяю ось, поменяю обертку под нее, а весь остальной код во всех проектах вообще не изменится. Так читаемость и переносимость кода возрастает в разы. Нет глубокой привязки ни к ядру, ни к процу, ни к компилятору, ни к оси. Экономия времени на новых проектах просто чумовая! Лень-матушка вынуждает так поступать - категорически ненавижу переделывать свою же работу, лучше сразу сделать нормально
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jan 29 2016, 10:52
|

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

|
Цитата(scifi @ Jan 29 2016, 13:46)  Это и старый добрый Си умеет. Это даже можно на асме сделать )) Тока переход в плюсы - это переход на новый уровень структурного, а не функционального программирования. Чистый С хоть и позволяет это делать, но с такими ацкими костылями, что боже упаси это недобровольный "секас" Цитата Вам нравится Си++ - почему бы и нет? Может быть, у меня просто такие проекты, но ни разу не ощущал потребности перейти на Си++. А просто так без причины как-то не хочется. Дело тут вовсе не том что нравится или нет, а в том, что этот инструмент обладает гораздо бОльшей функциональностью и значительно упрощает создание самодокументируемого и легкосопровождаемого кода. Мне важнее последнее. Ведь в конечном итоге любой код превращается компилятором в т.н. машинные коды. Поэтому если когда-то появится возможность писать на ARM под С#, я буду это делать, предварительно отключив "тяжелые" вещи, свойственные этим мощным языкам. Я не буду ручной дрелью ковырять сотню дырок, особенно когда под рукой есть электрическая дрель
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jan 29 2016, 11:10
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(Forger @ Jan 29 2016, 13:52)  Поэтому если когда-то появится возможность писать на ARM под С#, я буду это делать, предварительно отключив "тяжелые" вещи, свойственные этим мощным языкам. Шарп без тяжелых вещей будет хуже плюсов  банально потому, что в плюсах значительно больше инструментов времени компиляции. Те же шаблоны, лямбды (сахарок над шаблонами), итераторы в for, да хоть старые добрые макросы. А вот в шарпе приоритет отдается динамике. Опять же очень многие вещи завязаны на GC. Плюсы же дают возможность писать достаточно высокоуровнево, но там где надо - генерируемый код будет не медленее си Хотя конечно процессоры развиваются и постепенно это будет волновать все меньшее количество людей
|
|
|
|
|
Jan 29 2016, 13:08
|

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

|
Цитата(scifi @ Jan 29 2016, 14:28)  Всё-таки чистое программирование и ковыряние в железе - сильно отличающиеся области деятельности. ИМХО, Си - достаточно простой и обозримый язык, чтобы железячник мог им достойно овладеть и строить сложные системы. Си++ уже выползает за пределы этой зоны, такие железячники - уже редкий зверь (вроде Вас). Там, где железо и софт делает один человек, Си никуда не денется. Все это перешло в глубокий офф, ибо холивар - "C vs C++" - пожалуй самый бессмысленный и беспощадный холивар у программеров. Одно время был "ASM vs C", я чуток застал те дремучие времена такого холивара (я про контроллеры, т.е. эмбеддерство, НЕ ПК), тоже самое )) Придет время, C# или что-то подобное сменит C++.... Короче, вот простое сравнение: Детишки носятся на велосипедах, подрастают и пересаживаются на мопеды/моциклеты, потом личное авто, а у более успешных личный самолет  Чистый С - это велосипед: для здоровья полезен, укрепляет мышцы, прост как 5копеек - починит даже безрукий. Но далеко на нем не уедешь и тем более не увезешь. Но другое дело - моциклет и т.д ..... Понимаете о чем?
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jan 29 2016, 13:21
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(Forger @ Jan 29 2016, 16:08)  Чистый С - это велосипед: для здоровья полезен, укрепляет мышцы, прост как 5копеек - починит даже безрукий. Но далеко на нем не уедешь и тем более не увезешь. Это не совсем так, достаточно взглянуть на ядро линукса. На чистом Си вполне можно замутить много чего, а если использовать макры или даже внешний препроцессор - то возможности открываются колоссальные  То же ООП вполне себе работает и в сях, просто местами оно похоже на закат солнца вручную  Чистый Си как-то практически остановился в развитии. Особенно это хорошо видно, если сравнить его с плюсами. Плюсы заморозились в промежутке 1998-2011. Однако стандарт 2011 дал уже много вкусностей, сейчас есть стандарт 14, в котором часть вкусностей углубили. Дальше речь идет о стандарте 17, в котором это движение продолжается. В Си же за последние годы было добавлено крайне мало - навскидку атомики, bcd, может еще что по мелочи.
|
|
|
|
|
Jan 29 2016, 13:31
|

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

|
Цитата(Непомнящий Евгений @ Jan 29 2016, 16:21)  достаточно взглянуть на ядро линукса Ой не надо, я тока что пообедал Цитата То же ООП вполне себе работает и в сях, просто местами оно похоже на закат солнца вручную Это точно!
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jan 29 2016, 13:57
|
Профессионал
    
Группа: Свой
Сообщений: 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++.... Короче, вот простое сравнение: Детишки носятся на велосипедах, подрастают и пересаживаются на мопеды/моциклеты, потом личное авто, а у более успешных личный самолет  Чистый С - это велосипед: для здоровья полезен, укрепляет мышцы, прост как 5копеек - починит даже безрукий. Но далеко на нем не уедешь и тем более не увезешь. Но другое дело - моциклет и т.д ..... Понимаете о чем?  Нет не понимаю. На Javа предлагаете писать или ХML, а может на Rational Rose? Цитата(Forger @ Jan 29 2016, 16:08)  Все это перешло в глубокий офф, ибо холивар - "C vs C++" - пожалуй самый бессмысленный и беспощадный холивар у программеров. Одно время был "ASM vs C", я чуток застал те дремучие времена такого холивара (я про контроллеры, т.е. эмбеддерство, НЕ ПК), тоже самое )) Придет время, C# или что-то подобное сменит C++.... Короче, вот простое сравнение: Детишки носятся на велосипедах, подрастают и пересаживаются на мопеды/моциклеты, потом личное авто, а у более успешных личный самолет  Чистый С - это велосипед: для здоровья полезен, укрепляет мышцы, прост как 5копеек - починит даже безрукий. Но далеко на нем не уедешь и тем более не увезешь. Но другое дело - моциклет и т.д ..... Понимаете о чем?  Да нет никакого холивара. Тот же компилятор для С++ написан на С. Только если писать апликации, то конечно С++ кроет С, а вот с системным программированием пока все с точностью до наоборот. У часового мастера и у кузнеца разные инструменты. Цитата(Forger @ Jan 29 2016, 16:31)  Ой не надо, я тока что пообедал Это точно! От вас подвигов никто и не ждет. Есть же мы для этого  Однажды у меня был один сотрудник, который писал на Вижуал С. Он к эмбеддед программистам приставал, чтобы признали, что на РС тоже реал-тайм можно писать. С ним соглашались, чтобы отстал. И с вами согласимся.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|