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

 
 
> Как писать на С++ при создание приложений под ARM, Примеры
Hellper
сообщение Jun 18 2011, 20:15
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 13-08-07
Из: Санкт-Петербург
Пользователь №: 29 745



Посоветуйте примеры использование С++ при создание программ под архитектуру ARM микроконтроллеров. Такие примеры, чтобы показывали удобство и силу использование ООП, и тянуло сразу садится, вникать и кодить.
спасибо
пс желательно под компилятор от keil-а или gcc

ПС извините за дублирование. неполадки связи.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andrewlekar
сообщение Jun 22 2011, 04:57
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Расказ про ООП конечно увлекательный, но стоит учитывать, что как только вы вылезете за область применения, описанную dxp (наследование от интерфейса и поточная обработка), то тут же вся система станет крайне неустойчивой. Конкретно: множественное наследование сразу ставит крест на проекте, перегрузка функций и операторов приводит к очень хитрым багам, развесистая иерархия наследования приводит к хрупкости системы - очень высокая связность элементов... Использование паттернов не имеет отношения к С++, но в микроконтроллерах не имеет особого смысла. Куда можно в AVR засунуть синглтон?! Использование шаблонов С++ сильно тормозит компиляцию и плохо контролируется по расходу памяти.
В общем, это неправда, что С++ оправдан везде, где оправдан С.
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 22 2011, 06:40
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(andrewlekar @ Jun 22 2011, 11:57) *
(наследование от интерфейса и поточная обработка), то тут же вся система станет крайне неустойчивой.
Почему? В чём причины неустойчивости?

Цитата(andrewlekar @ Jun 22 2011, 11:57) *
Конкретно: множественное наследование сразу ставит крест на проекте,

Поясните? И причём тут множественное наследование? О нём вообще ни слова не было сказано.

Цитата(andrewlekar @ Jun 22 2011, 11:57) *
перегрузка функций и операторов приводит к очень хитрым багам,

К очень хитрым (уж куда более хитрым) багам приводит неаккуратная работа с памятью и невнимательное использование адресной арифметики, а это чисто сишные вещи.

Цитата(andrewlekar @ Jun 22 2011, 11:57) *
развесистая иерархия наследования приводит к хрупкости системы - очень высокая связность элементов...

А голова-то на что? Средства-то надо применять осмысленно и к месту, а не ради них самих, о чём было сказано выше.

Цитата(andrewlekar @ Jun 22 2011, 11:57) *
Использование паттернов не имеет отношения к С++, но в микроконтроллерах не имеет особого смысла. Куда можно в AVR засунуть синглтон?!

Да как обычно - чтобы избавиться от зависимости порядка создания объектов при раздельной компиляции файлов проекта. Затраты на него копеечные.

Цитата(andrewlekar @ Jun 22 2011, 11:57) *
Использование шаблонов С++ сильно тормозит компиляцию

Да, несколько секунд лишних, обычно, приходится потратить. sm.gif

Цитата(andrewlekar @ Jun 22 2011, 11:57) *
и плохо контролируется по расходу памяти.

Это только если использовать бездумно и не представлять себе, во что выливается та или иная языковая конструкция. На сях тоже можно начать бездумно маллоки метать направо и налево, и будет "плохо контролируемый расход памяти".

Цитата(andrewlekar @ Jun 22 2011, 11:57) *
В общем, это неправда, что С++ оправдан везде, где оправдан С.

Технически с точки зрения эффективности везде. А то, что голову надо включать, так это универсальное правило для любого ЯП. Единственное, с чем соглашусь, что С++ требует больше времени на изучение в силу много большего разнообразия и сложности самого языка. Это его единственный объективный недостаток перед С.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Jun 22 2011, 07:38
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Цитата
Поясните? И причём тут множественное наследование? О нём вообще ни слова не было сказано.

С++ позволяет множественное наследование, вот и упомянул. Просто перечисление объективных недостатков языка.

Цитата
К очень хитрым (уж куда более хитрым) багам приводит неаккуратная работа с памятью и невнимательное использование адресной арифметики, а это чисто сишные вещи.

Адресная арифметика - это также и чисто микроконтроллерная область. И хоть вы на чём пишите, залезать в неё придётся. А неаккуратная работа с памятью более вероятна как раз в С++, потому что там куда чаще встречается динамическое размещение объектов.

Цитата
Да как обычно - чтобы избавиться от зависимости порядка создания объектов при раздельной компиляции файлов проекта. Затраты на него копеечные.

Ага, сначала создавать себе проблемы, используя С++, а потом мужественно их решать sm.gif

Цитата
А то, что голову надо включать, так это универсальное правило для любого ЯП.

На С++ голову уж слишком сильно нужно включать. Язык должен ограничивать программиста в его бурных устремлениях, а чрезмерная гибкость С++ позволяет выстрелить себе в ногу и успешно завалить проект. С со статической аллокацией - вот правильный выбор программиста микроконтроллеров.
Go to the top of the page
 
+Quote Post
Danis
сообщение Jun 22 2011, 08:28
Сообщение #5


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Цитата(andrewlekar @ Jun 22 2011, 11:38) *
А неаккуратная работа с памятью более вероятна как раз в С++, потому что там куда чаще встречается динамическое размещение объектов.


Набрался терпения и решил немного поработать писателем и корректором. Да, действительно адресная арифметика и динамическое размещение памяти при неопытности «да и опытности» тянет за собой источники потенциальных ошибок. Microsof, например, для решения этой проблемы и не только, разработал платформу .NET, под которую можно писать приложения на многих языках программирования, в частности применять C++ с расширением управляемости. (С++.Net). Код здесь, выполняется под управлением обще языковой среды выполнения CLR (Common Language Runtime), называется «управляемым кодом». Программы состоят из кода и данных, и обще языковая среда выполнения CLR обеспечивает поддержку и управляемым данным, и управляемому коду. Управляемые данные размещаются в управляемой динамически распределяемой области памяти (куче), которая имеет весьма ценную особенность — автоматическую сборку мусора (garbage collection). Если при создании программ на обычном C++ программист должен сам создавать средства управления динамически распределяемой областью памяти, то обще языковая среда выполнения CLR реализует этот процесс, отслеживая ссылки на объекты и автоматически освобождая ресурсы, занятые объектами, которые стали недоступны программе. Фактически, управляемые и неуправляемые (к которому мы все так привыкли) код и данные на C++ могут быть определены в одном и том же исходном файле, и в некоторой степени эти два мира могут взаимодействовать. Хотя использование управляемого кода и данных имеет много преимуществ (пример выход за пределы массива, на этапе run-time сразу выбросит исключение) оно может привести к снижению производительности и потере гибкости. Поэтому во многих случаях неуправляемый C++, при опытности и знаниях, оказывается лучшим выбором для создания программ.


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Hellper   Как писать на С++ при создание приложений под ARM   Jun 18 2011, 20:15
- - Danis   Цитата(Hellper @ Jun 19 2011, 00:15) Посо...   Jun 18 2011, 20:21
|- - scifi   Цитата(Danis @ Jun 19 2011, 00:21) Доволь...   Jun 18 2011, 20:53
- - zltigo   QUOTE (Hellper @ Jun 18 2011, 23:15) тяну...   Jun 18 2011, 20:36
- - haker_fox   QUOTE (Hellper @ Jun 19 2011, 05:15) и тя...   Jun 19 2011, 03:03
- - gladov   Цитата(Hellper @ Jun 19 2011, 00:15) Посо...   Jun 20 2011, 04:34
|- - dxp   Цитата(gladov @ Jun 20 2011, 11:34) С++ п...   Jun 20 2011, 07:32
||- - gladov   Цитата(dxp @ Jun 20 2011, 11:32) Два, нет...   Jun 21 2011, 06:40
|||- - dxp   Вынужден категорически не согласиться по всем пунк...   Jun 21 2011, 08:47
|||- - scifi   Цитата(dxp @ Jun 21 2011, 12:47) Если вы ...   Jun 21 2011, 09:21
||- - 777777   Цитата(dxp @ Jun 20 2011, 11:32) Почему в...   Sep 22 2011, 04:49
||- - andrewlekar   Цитата(777777 @ Sep 22 2011, 10:49) О как...   Sep 23 2011, 04:49
||- - 777777   Цитата(andrewlekar @ Sep 23 2011, 08:49) ...   Sep 23 2011, 05:52
||- - dxp   Цитата(777777 @ Sep 23 2011, 12:52) Во-вт...   Sep 23 2011, 07:02
|- - haker_fox   QUOTE (gladov @ Jun 20 2011, 13:34) и еще...   Jun 20 2011, 08:07
||- - MrYuran   Цитата(haker_fox @ Jun 20 2011, 12:07) 3....   Jun 20 2011, 09:54
|- - klen   Цитата(gladov @ Jun 20 2011, 08:34) С++ п...   Jun 20 2011, 10:45
|- - Axel   Цитата(gladov @ Jun 20 2011, 07:34) ...пр...   Jun 20 2011, 11:22
- - demiurg_spb   Цитата(Hellper @ Jun 19 2011, 00:15) Посо...   Jun 20 2011, 11:35
- - Danis   ТС, позвольте не большой, скромный вопрос к Вам. З...   Jun 20 2011, 12:15
- - GDI   ringbuffer-dlya-embedded - пример кода, и даже не ...   Jun 20 2011, 13:11
|- - Hellper   Цитата(GDI @ Jun 20 2011, 17:11) ringbuff...   Jun 20 2011, 16:05
- - brag   Да, стоит сделать new, как c++ тянет библиотечный ...   Jun 21 2011, 08:09
- - brag   согласен, обзор полностью верный. и применять тот ...   Jun 21 2011, 09:33
|- - scifi   Цитата(brag @ Jun 21 2011, 13:33) пример ...   Jun 21 2011, 09:39
|- - Axel   Цитата(scifi @ Jun 21 2011, 12:39) ...где...   Jun 21 2011, 10:14
|- - dxp   Цитата(scifi @ Jun 21 2011, 16:39) При вс...   Jun 21 2011, 11:58
|- - scifi   Цитата(dxp @ Jun 21 2011, 15:58) В общем,...   Jun 21 2011, 14:37
|- - Danis   Цитата(scifi @ Jun 21 2011, 17:37) Другим...   Jun 21 2011, 15:55
- - brag   ЦитатаПри всём уважении, это голословное утвержден...   Jun 21 2011, 10:30
- - Danis   dxp, как у вас терпения хватает писать такие длинн...   Jun 21 2011, 13:27
- - brag   dxp, спасибо большое за обзорчик, вроде все и так ...   Jun 21 2011, 22:18
- - haker_fox   dxp, спасибо за шикарные ответы!!! Н...   Jun 22 2011, 01:05
|- - MrYuran   Цитата(andrewlekar @ Jun 22 2011, 08:57) ...   Jun 22 2011, 06:38
||- - haker_fox   По сравнению с уважаемым dxp, я вообще не программ...   Jun 22 2011, 08:32
|||- - andrewlekar   Цитата(haker_fox @ Jun 22 2011, 14:32) А ...   Jun 22 2011, 09:00
|||- - MrYuran   Цитата(andrewlekar @ Jun 22 2011, 13:00) ...   Jun 22 2011, 09:32
|||- - shreck   Цитата(andrewlekar @ Jun 22 2011, 16:00) ...   Jun 22 2011, 10:34
|||- - SergeyDDD   Цитата(andrewlekar @ Jun 22 2011, 12:00) ...   Jun 22 2011, 11:22
|||- - haker_fox   QUOTE (andrewlekar @ Jun 22 2011, 18:00) ...   Jun 22 2011, 11:30
|||- - zltigo   QUOTE (haker_fox @ Jun 22 2011, 14:30) Я ...   Jun 22 2011, 12:33
||- - Danis   Цитата(andrewlekar @ Jun 22 2011, 11:38) ...   Jun 22 2011, 08:37
||- - sergeeff   Цитата(andrewlekar @ Jun 22 2011, 10:38) ...   Jun 22 2011, 08:44
|- - Danis   Цитата(andrewlekar @ Jun 22 2011, 08:57) ...   Jun 22 2011, 06:53
|- - haker_fox   QUOTE (andrewlekar @ Jun 22 2011, 13:57) ...   Jun 22 2011, 08:13
- - dxp   .   Jun 22 2011, 06:29
- - dxp   Цитата(haker_fox @ Jun 22 2011, 08:05) Не...   Jun 22 2011, 07:37
- - Dima_G   Цитата(Hellper @ Jun 19 2011, 03:15) Таки...   Jun 22 2011, 08:35
- - zltigo   История моей жизни. Когда-то очень давно, когда ко...   Jun 22 2011, 11:14
- - Danis   Кстати, прорабатывается новая версия стандарта С++...   Jun 22 2011, 11:31
|- - MrYuran   Цитата(Danis @ Jun 22 2011, 15:31) Кстати...   Jun 22 2011, 11:45
- - brag   Пописал немного кода на С++ использованием динамич...   Sep 21 2011, 22:05
- - dxp   Цитата(brag @ Sep 22 2011, 05:05) Про кон...   Sep 22 2011, 07:25
|- - 777777   Цитата(dxp @ Sep 22 2011, 11:25) Правда? ...   Sep 22 2011, 15:40
- - sergeeff   КодПро конструкторы и деструкторы правда пришлось ...   Sep 22 2011, 09:51
- - brag   ЦитатаЧем же так конструкторы не угодили? Это прос...   Sep 22 2011, 12:11
|- - dxp   Цитата(brag @ Sep 22 2011, 19:11) НО. Нек...   Sep 22 2011, 13:03
- - ReAl   Насколько я понимаю, вот тут конструктор object бу...   Sep 22 2011, 12:32
- - brag   ЦитатаНасколько я понимаю, вот тут конструктор obj...   Sep 22 2011, 12:47
- - brag   ЦитатаObject& GetObject() { static Object ...   Sep 22 2011, 13:13
|- - dxp   Цитата(brag @ Sep 22 2011, 20:13) Хе, еще...   Sep 22 2011, 13:19
- - brag   ЦитатаБольшинство объектов в программе, как правил...   Sep 22 2011, 13:32
|- - sergeeff   Цитата(brag @ Sep 22 2011, 16:32) init ни...   Sep 22 2011, 13:37
- - brag   ЦитатаЕстественно, это стандартная реализация иниц...   Sep 22 2011, 13:41
|- - Dima_G   Компилятор ничего не знает о потоках, процессах и ...   Sep 22 2011, 14:38
- - brag   ЦитатаКомпилятор ничего не знает о потоках, процес...   Sep 22 2011, 15:05
|- - Dima_G   Цитата(brag @ Sep 22 2011, 22:05) Qt+gcc ...   Sep 22 2011, 15:16
|- - sergeeff   Цитата(brag @ Sep 22 2011, 18:05) Qt+gcc ...   Sep 22 2011, 15:21
- - brag   ЦитатаЛично налетал на гонки в синглтоне. Компилят...   Sep 22 2011, 16:09
|- - Dima_G   Цитата(brag @ Sep 22 2011, 23:09) а реали...   Sep 23 2011, 04:30
- - brag   еще вопрос по поводу реюза кода. Как, на пример, в...   Sep 22 2011, 17:45
|- - AHTOXA   Цитата(brag @ Sep 22 2011, 23:45) Нужно, ...   Sep 22 2011, 18:32
- - brag   а код? -ffunction-sections , а потом это все вручн...   Sep 22 2011, 18:44
- - brag   Реализовал через манипуляцию ld -r, линкер-скрипты...   Sep 22 2011, 22:54
- - dxp   Цитата(777777 @ Sep 22 2011, 22:40) Что з...   Sep 23 2011, 04:50
- - brag   Цитатаочитайте про "Placement new". Это ...   Sep 23 2011, 10:15
- - MALLOY2   Ссылка в тему С++ & Cortex   Sep 23 2011, 11:35
- - brag   Хe, и множественному наследованию (по крайней мере...   Sep 23 2011, 16:25
- - andrewlekar   Множественное наследование от интерфейсов разумеет...   Sep 23 2011, 17:22
- - BlackHead   Вот набрёл на библиотеку С++ http://xpcc.sourcefor...   Oct 5 2011, 10:21
- - kikos   Лет 20 назад один из заказчиков (пожилой американс...   Oct 31 2011, 13:32
|- - Сергей Борщ   QUOTE (kikos @ Oct 31 2011, 16:32) На воп...   Oct 31 2011, 13:49
||- - Forger   Цитата(Сергей Борщ @ Oct 31 2011, 17:49) ...   Oct 31 2011, 18:14
|- - ReAl   Цитата(kikos @ Oct 31 2011, 15:32) Более ...   Nov 1 2011, 06:27
- - IgorKossak   Господа критикующие, напоминаю, тема звучит Как пи...   Nov 1 2011, 08:32
- - brag   Как можно реализовать такую вещ без кривоты, rtti,...   Dec 10 2011, 02:55
|- - Forger   Цитата(brag @ Dec 10 2011, 06:55) Как мож...   Dec 10 2011, 07:09
|- - alx2   Цитата(brag @ Dec 10 2011, 07:55) Как мож...   Dec 11 2011, 10:37
- - neiver   Массив указателей на объекты базового класса - это...   Dec 10 2011, 07:29
- - brag   ЦитатаДля полноты картины, расскажите, для чего ва...   Dec 10 2011, 15:37
|- - dxp   Цитата(brag @ Dec 10 2011, 22:37) массив ...   Dec 10 2011, 17:39
- - brag   ЦитатаЕсли я правильно понял, что требуется работа...   Dec 10 2011, 18:11
|- - dxp   Цитата(brag @ Dec 11 2011, 01:11) stl не ...   Dec 10 2011, 21:44
- - brag   да просто проект такой, что проще свое написать, ч...   Dec 10 2011, 22:59
- - kan35   Писать на С++ под ARM точно так же как на любую др...   Dec 11 2011, 09:52
- - brag   Спасибо. но это тоже не то, массив указателей все ...   Dec 11 2011, 13:32
2 страниц V   1 2 >


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

 


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


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