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

 
 
> Embedded C++, Кто какие библиотеки использует?
segment
сообщение Oct 28 2010, 12:12
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 352
Регистрация: 10-08-06
Из: Санкт-Петербург
Пользователь №: 19 471



Я не начинаю очередной холивар по поводу того что C++ не нужен для микроконтроллеров и прочее. Поэтому те, кто хочет поспорить - приводите убедительные факты куда угодно, но не в эту тему.

Само собой использование STL в программе под микроконтроллер сомнительно, так как, к примеру, работа с STL в Keil uVision 4 (видимо их порт STL) обходится в минимум 40 Кбайт (собрал пример из Keil examples). Поэтому выходом из этой ситуации вижу использование либо специальных готовых light библиотек либо написание базовых шаблонов/классов самому. Но так уже стадия "начинающий и все хочу попробовать" прошла уже давно, поэтому писать самому не сильно тянет.
Кто какие C++ библиотеки использует для работы с периферией и данными?
Go to the top of the page
 
+Quote Post
5 страниц V  « < 2 3 4 5 >  
Start new topic
Ответов (45 - 59)
AHTOXA
сообщение Sep 12 2012, 14:17
Сообщение #46


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(haker_fox @ Sep 12 2012, 19:54) *
В общем new (std::nothrow) объем кода не уменьшает...(((

Вообще-то должен. Посмотрите вот эту тему,
потом дополнительно убедитесь, что:
  • вы не забыли ключики -fno-exceptions и -fno-rtti для компилятора;
  • все варианты new() переопределены с nothrow;
  • к проекту подключен вот этот файл;
  • вы не забыли написать свой вариант _sbrk() (штатный вариант от codesourcery может тянуть за собой исключения. kgp в этом смысле лучше);

Я уверен, что после выполнения всех этих условий ваши волосы станут мягкими и шелковистымиsm.gif



--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Sep 13 2012, 01:18
Сообщение #47


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (AHTOXA @ Sep 12 2012, 22:17) *
Вообще-то должен. Посмотрите вот эту тему,
потом дополнительно убедитесь, что:
  • вы не забыли ключики -fno-exceptions и -fno-rtti для компилятора;
  • все варианты new() переопределены с nothrow;
  • к проекту подключен вот этот файл;
  • вы не забыли написать свой вариант _sbrk() (штатный вариант от codesourcery может тянуть за собой исключения. kgp в этом смысле лучше);

Я уверен, что после выполнения всех этих условий ваши волосы станут мягкими и шелковистымиsm.gif

Все, что Вы перечислили у меня есть (от части из scmRTOS). Но шампунь не помогает) Волосы мягкими и шелковистыми не стали) В мап-файле видно, что тянутся исключения
CODE
/arm-none-eabi/lib\libstdc++.a(eh_exception.o)
Во вложениее полный map-файл...
Прикрепленные файлы
Прикрепленный файл  2xTermARM7.7z ( 102.89 килобайт ) Кол-во скачиваний: 15
 


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 13 2012, 02:33
Сообщение #48


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



А если взять kgp?
Или попробуйте скомпилировать приложенный пример. У меня он компилируется в следующие объёмы:
codesourcery : 32K
kgp : 18K.
Прикрепленный файл  stm32_minimal_with_printf_and_new.zip ( 119.2 килобайт ) Кол-во скачиваний: 123


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Sep 13 2012, 04:20
Сообщение #49


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (AHTOXA @ Sep 13 2012, 10:33) *
А если взять kgp?
Или попробуйте скомпилировать приложенный пример. У меня он компилируется в следующие объёмы:
codesourcery : 32K
kgp : 18K.
Прикрепленный файл  stm32_minimal_with_printf_and_new.zip ( 119.2 килобайт ) Кол-во скачиваний: 123

Ваш компилируется) Мой не компилируется сборкой от Клена( Просто выдает это
CODE
--- compiling .\src/isrHandlers.cpp...
make: *** [obj/isrHandlers.o] Error 1

Кстати, а за счет чего kgp так рулит по объему (почти в два раза)?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
alx2
сообщение Sep 13 2012, 04:21
Сообщение #50


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(haker_fox @ Sep 13 2012, 06:18) *
Во вложениее полный map-файл...

Насколько я вижу из вашего map-файла, eh_exception.o тянет за собой ваш ./obj/main.o из-за использования std::ios_base::Init::Init().
Каким образом это связано с операторами new и delete, я не знаю...


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Sep 13 2012, 05:01
Сообщение #51


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (alx2 @ Sep 13 2012, 12:21) *
Насколько я вижу из вашего map-файла, eh_exception.o тянет за собой ваш ./obj/main.o из-за использования std::ios_base::Init::Init().
Каким образом это связано с операторами new и delete, я не знаю...

Похоже это дело тянул <iostream>, который у меня был подключен. Я его исключил, и теперь код уменьшился в два раза ( 150 кБ). Если поключить файл new.cpp из проекта, выложенного выше уважаемым пользователем AHTOXA, то размер уменьшает до 50 кБ rolleyes.gif

Правда без
CODE
include <iostream>
я лишился строк Си++, которые очень удобны в работе...(


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 13 2012, 05:03
Сообщение #52


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(haker_fox @ Sep 13 2012, 10:20) *
Ваш компилируется)
И какой объём у вас получился?
Цитата(haker_fox @ Sep 13 2012, 10:20) *
Кстати, а за счет чего kgp так рулит по объему (почти в два раза)?
Видимо за счёт того, что klen специально боролся с исключениями. Или же наоборот, cs что-то понапихали своего.

ЗЫ. У кого есть YAGARTO, посмотрите пожалуйста, в какой объём компилится мой проект?

Цитата(haker_fox @ Sep 13 2012, 11:01) *
Если поключить файл new.cpp из проекта, выложенного выше уважаемым пользователем AHTOXA, то размер уменьшает до 50 кБ rolleyes.gif

Ага! Значит всё же не был выполнен пункт
Цитата(AHTOXA @ Sep 12 2012, 20:17) *
  • все варианты new() переопределены с nothrow;

sm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Sep 13 2012, 05:08
Сообщение #53


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (AHTOXA @ Sep 13 2012, 13:03) *
И какой объём у вас получился?

32500 (cs)
kgp вылетает с той же ошибкой(

QUOTE (AHTOXA @ Sep 13 2012, 13:03) *
Ага! Значит всё же не был выполнен пункт

Верно, слона-то я и не заметил biggrin.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Sep 13 2012, 05:20
Сообщение #54


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(AHTOXA @ Sep 13 2012, 09:03) *
ЗЫ. У кого есть YAGARTO, посмотрите пожалуйста, в какой объём компилится мой проект?

arm-none-eabi-gcc.EXE (GCC) 4.7.1

text data bss dec hex filename
27636 2244 600 30480 7710 ./exe/hello-stm32-printf-and-new.elf
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Sep 13 2012, 05:21
Сообщение #55


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (haker_fox @ Sep 13 2012, 13:01) *
Правда без
CODE
include <iostream>
я лишился строк Си++, которые очень удобны в работе...(

Нет, не лишился. Но конструкторы строк за собой тянут около 100 кб дополнительно...

Кстати, классы, шаблоны, перегрузку и тп в embedded делаем, тут сомнений нет. А строки Си++ используем, или по старинке строки Си да что-нить printf-подобное? rolleyes.gif Я для себя сделал вывод, что последнее (т.е. printf) проще во встраиваемых приложениях, да и на большом брате тоже...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
beaRTS
сообщение Oct 3 2012, 07:05
Сообщение #56


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111



наткнулся на статью интересную Паттерны проектирования в Embedded . можете поделиться подобным образом (лучше, конечно, поподробнее, а если и с реальными примерами - будет здорово!) кто какие паттерны использует, какие полезны в embedded?


--------------------
"Об уме человека вернее судить по его вопросам, нежели по его ответам" (с)
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Oct 5 2012, 09:56
Сообщение #57


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(beaRTS @ Oct 3 2012, 11:05) *
...кто какие паттерны использует, какие полезны в embedded?


сейчас многие возбудятся, но патерны - это собственно для блондинок от программирования(чисто имхо). почему? очень просто. Читаете Буча(надеюсь авторитет одного из пап практического применения ООП и ООА не вызывает сомнений?) и видите, что помимо технических аспектов (полиморфизм, наследование и т.д.) всплывает очень мощная методология по переходу от задумки к коду. Именно методология. Именно она имеет ряд мощных плюсов. Ведь первым шагом идёт анализ задачи, нахождения сущностей, декомпозиция, нахождения связей и т.п.. Т.е. вы строите код от задачи(!). Т.е. если люди из предметной области говорят что машина крутит колёсами и перемещается из пункта А в пункт Б = то Вы используя именно эти сущности получаете статическое построение модели(!) которая не будет меняться во времени жизни всего проекта!!! Понимаете какая мощь? т.е. машина не превратиться в верблюда, а дорога в озеро! ни под каким соусом!!! Это только я озвучил первый плюс данной методы sm.gif

ну а теперь возвращаемся к патернам. И ответьте мне - разве существуют в жизни одинаковые задачи? sm.gif надеюсь смысл понятен? на мой взгляд инструмент патернов придумали для упрощения(читай снижения затрат) на обучение программистов(читай издержки производства) в эпоху 2000 годов, когда все домохозяйки шли в пилоты, тьху в программисты sm.gif ну и к чему привело - понятно, шлёпнулось IT отрасль у них в 2001 (для тех кто не помнит).

по поводу, что читать.
не буду оригинален - Гради Буча естественно. Более того скажу - читать маловато будет. Именно стэп бай стэп конкретной вашей задачи сверяясь с книгой.

и я бы порекомендовал
Джэф Элджер "С++"
она правда не по ОО а больше по технике и языку. Но взгляд расширяется на возможности языка. Ну и осознание того, что есть ышо неизведанное sm.gif
Go to the top of the page
 
+Quote Post
beaRTS
сообщение Oct 8 2012, 04:34
Сообщение #58


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111



Цитата(kolobok0 @ Oct 5 2012, 13:56) *
И ответьте мне - разве существуют в жизни одинаковые задачи? sm.gif надеюсь смысл понятен?

Задач одинаковых не существует. Смысл понятен.
Вот только, как по мне, паттерны = идиомы = методологии удобны при создании архитектурных частей системы. Тот же pimpl хорош, чтобы разделить абстрактный интерфейс, например, SPI от архитектурной реализации в используемом процессоре (регистры процессора). Потом просто достаточно менять реализацию под выбранный процессор - удобно, геммора меньше (ведь все мы ленивы, и делать одно и тоже сызнова для каждой новой задачи - не айс).
Делюсь найденными ссылками.
youdevelop : даны тезисы когда следует применять
Design Patterns for Real-time and Embedded System Design


Цитата(kolobok0 @ Oct 5 2012, 13:56) *
по поводу, что читать.

за авторов спасибо! Закачаю, гляну


--------------------
"Об уме человека вернее судить по его вопросам, нежели по его ответам" (с)
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Oct 8 2012, 09:37
Сообщение #59


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(beaRTS @ Oct 8 2012, 08:34) *
...паттерны = идиомы = методологии удобны при создании архитектурных частей системы....достаточно менять реализацию под выбранный процессор...


кто же говорит, что юзать повторно - есть зло? юзайте на здоровье. я не об этом говорил выше. sm.gif

я о том, что подгонять задачу под "удобное" и "готовое" решение - есть зло, которое даст о себе знать гораздо позже и подлее чем можно себе представить sm.gif и не важно на каком этапе оно уже готово и решено - на этапе проектирования и анализа, либо кодинга. кстати говоря, надо очень критично относиться к себе любимому, чтоб вовремя остановить бег мысли своей и сказать - опа, эта я уже пытаюсь подгонять под результат!!! т.е. решать задачу надо начинать с Анализа по любасику. И если на стадии принятия решения Вы не видите противоречий(любых, дажэ самых мало-мальских) в использовании ранее написанного(продуманного) багажа - кто-же мешает то?

Сообщение отредактировал kolobok0 - Oct 8 2012, 09:41
Go to the top of the page
 
+Quote Post
beaRTS
сообщение Oct 8 2012, 09:54
Сообщение #60


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111



Цитата(kolobok0 @ Oct 8 2012, 13:37) *
я о том, что подгонять задачу под "удобное" и "готовое" решение - есть зло... И если на стадии принятия решения Вы не видите противоречий(любых, дажэ самых мало-мальских) в использовании ранее написанного(продуманного) багажа - кто-же мешает то?

ну да да. все логично говорите. согласен


--------------------
"Об уме человека вернее судить по его вопросам, нежели по его ответам" (с)
Go to the top of the page
 
+Quote Post

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

 


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


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