|
Embedded C++, Кто какие библиотеки использует? |
|
|
|
 |
Ответов
(45 - 59)
|
Sep 12 2012, 14:17
|

фанат дивана
     
Группа: Свой
Сообщений: 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 в этом смысле лучше);
Я уверен, что после выполнения всех этих условий ваши волосы станут мягкими и шелковистыми
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 13 2012, 01:18
|

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

|
QUOTE (AHTOXA @ Sep 12 2012, 22:17)  Вообще-то должен. Посмотрите вот эту тему, потом дополнительно убедитесь, что: - вы не забыли ключики -fno-exceptions и -fno-rtti для компилятора;
- все варианты new() переопределены с nothrow;
- к проекту подключен вот этот файл;
- вы не забыли написать свой вариант _sbrk() (штатный вариант от codesourcery может тянуть за собой исключения. kgp в этом смысле лучше);
Я уверен, что после выполнения всех этих условий ваши волосы станут мягкими и шелковистыми  Все, что Вы перечислили у меня есть (от части из scmRTOS). Но шампунь не помогает) Волосы мягкими и шелковистыми не стали) В мап-файле видно, что тянутся исключения CODE /arm-none-eabi/lib\libstdc++.a(eh_exception.o) Во вложениее полный map-файл...
--------------------
Выбор.
|
|
|
|
|
Sep 13 2012, 02:33
|

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

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

Познающий...
     
Группа: Свой
Сообщений: 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 так рулит по объему (почти в два раза)?
--------------------
Выбор.
|
|
|
|
|
Sep 13 2012, 04:21
|

Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
Sep 13 2012, 05:01
|

Познающий...
     
Группа: Свой
Сообщений: 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 кБ  Правда без CODE include <iostream> я лишился строк Си++, которые очень удобны в работе...(
--------------------
Выбор.
|
|
|
|
|
Sep 13 2012, 05:03
|

фанат дивана
     
Группа: Свой
Сообщений: 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 кБ  Ага! Значит всё же не был выполнен пункт Цитата(AHTOXA @ Sep 12 2012, 20:17)  - все варианты new() переопределены с nothrow;
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 13 2012, 05:08
|

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

|
QUOTE (AHTOXA @ Sep 13 2012, 13:03)  И какой объём у вас получился? 32500 (cs) kgp вылетает с той же ошибкой( QUOTE (AHTOXA @ Sep 13 2012, 13:03)  Ага! Значит всё же не был выполнен пункт Верно, слона-то я и не заметил
--------------------
Выбор.
|
|
|
|
|
Sep 13 2012, 05:20
|
Знающий
   
Группа: Свой
Сообщений: 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
|
|
|
|
|
Sep 13 2012, 05:21
|

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

|
QUOTE (haker_fox @ Sep 13 2012, 13:01)  Правда без CODE include <iostream> я лишился строк Си++, которые очень удобны в работе...( Нет, не лишился. Но конструкторы строк за собой тянут около 100 кб дополнительно... Кстати, классы, шаблоны, перегрузку и тп в embedded делаем, тут сомнений нет. А строки Си++ используем, или по старинке строки Си да что-нить printf-подобное?  Я для себя сделал вывод, что последнее (т.е. printf) проще во встраиваемых приложениях, да и на большом брате тоже...
--------------------
Выбор.
|
|
|
|
|
Oct 3 2012, 07:05
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111

|
наткнулся на статью интересную Паттерны проектирования в Embedded . можете поделиться подобным образом (лучше, конечно, поподробнее, а если и с реальными примерами - будет здорово!) кто какие паттерны использует, какие полезны в embedded?
--------------------
"Об уме человека вернее судить по его вопросам, нежели по его ответам" (с)
|
|
|
|
|
Oct 5 2012, 09:56
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(beaRTS @ Oct 3 2012, 11:05)  ...кто какие паттерны использует, какие полезны в embedded? сейчас многие возбудятся, но патерны - это собственно для блондинок от программирования(чисто имхо). почему? очень просто. Читаете Буча(надеюсь авторитет одного из пап практического применения ООП и ООА не вызывает сомнений?) и видите, что помимо технических аспектов (полиморфизм, наследование и т.д.) всплывает очень мощная методология по переходу от задумки к коду. Именно методология. Именно она имеет ряд мощных плюсов. Ведь первым шагом идёт анализ задачи, нахождения сущностей, декомпозиция, нахождения связей и т.п.. Т.е. вы строите код от задачи(!). Т.е. если люди из предметной области говорят что машина крутит колёсами и перемещается из пункта А в пункт Б = то Вы используя именно эти сущности получаете статическое построение модели(!) которая не будет меняться во времени жизни всего проекта!!! Понимаете какая мощь? т.е. машина не превратиться в верблюда, а дорога в озеро! ни под каким соусом!!! Это только я озвучил первый плюс данной методы  ну а теперь возвращаемся к патернам. И ответьте мне - разве существуют в жизни одинаковые задачи?  надеюсь смысл понятен? на мой взгляд инструмент патернов придумали для упрощения(читай снижения затрат) на обучение программистов(читай издержки производства) в эпоху 2000 годов, когда все домохозяйки шли в пилоты, тьху в программисты  ну и к чему привело - понятно, шлёпнулось IT отрасль у них в 2001 (для тех кто не помнит). по поводу, что читать. не буду оригинален - Гради Буча естественно. Более того скажу - читать маловато будет. Именно стэп бай стэп конкретной вашей задачи сверяясь с книгой. и я бы порекомендовал Джэф Элджер "С++" она правда не по ОО а больше по технике и языку. Но взгляд расширяется на возможности языка. Ну и осознание того, что есть ышо неизведанное
|
|
|
|
|
Oct 8 2012, 04:34
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111

|
Цитата(kolobok0 @ Oct 5 2012, 13:56)  И ответьте мне - разве существуют в жизни одинаковые задачи?  надеюсь смысл понятен? Задач одинаковых не существует. Смысл понятен. Вот только, как по мне, паттерны = идиомы = методологии удобны при создании архитектурных частей системы. Тот же pimpl хорош, чтобы разделить абстрактный интерфейс, например, SPI от архитектурной реализации в используемом процессоре (регистры процессора). Потом просто достаточно менять реализацию под выбранный процессор - удобно, геммора меньше (ведь все мы ленивы, и делать одно и тоже сызнова для каждой новой задачи - не айс). Делюсь найденными ссылками. youdevelop : даны тезисы когда следует применять Design Patterns for Real-time and Embedded System Design Цитата(kolobok0 @ Oct 5 2012, 13:56)  по поводу, что читать. за авторов спасибо! Закачаю, гляну
--------------------
"Об уме человека вернее судить по его вопросам, нежели по его ответам" (с)
|
|
|
|
|
Oct 8 2012, 09:37
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(beaRTS @ Oct 8 2012, 08:34)  ...паттерны = идиомы = методологии удобны при создании архитектурных частей системы....достаточно менять реализацию под выбранный процессор... кто же говорит, что юзать повторно - есть зло? юзайте на здоровье. я не об этом говорил выше.  я о том, что подгонять задачу под "удобное" и "готовое" решение - есть зло, которое даст о себе знать гораздо позже и подлее чем можно себе представить  и не важно на каком этапе оно уже готово и решено - на этапе проектирования и анализа, либо кодинга. кстати говоря, надо очень критично относиться к себе любимому, чтоб вовремя остановить бег мысли своей и сказать - опа, эта я уже пытаюсь подгонять под результат!!! т.е. решать задачу надо начинать с Анализа по любасику. И если на стадии принятия решения Вы не видите противоречий(любых, дажэ самых мало-мальских) в использовании ранее написанного(продуманного) багажа - кто-же мешает то?
Сообщение отредактировал kolobok0 - Oct 8 2012, 09:41
|
|
|
|
|
Oct 8 2012, 09:54
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111

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