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

 
 
> Как писать на С++ при создание приложений под 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
haker_fox
сообщение Jun 22 2011, 08:32
Сообщение #5


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

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



По сравнению с уважаемым dxp, я вообще не программист crying.gif Но, тем не менее, позволю изложить и свою точку зрения.

QUOTE (andrewlekar @ Jun 22 2011, 16:38) *
Адресная арифметика - это также и чисто микроконтроллерная область

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

Не обязательно на Си++ размещать объекты динамически. Я не размещаю. А если размещаете, то нужно делать это корректно.
QUOTE (andrewlekar @ Jun 22 2011, 16:38) *
На С++ голову уж слишком сильно нужно включать.

Ну так это инструмент профессиональный rolleyes.gif
QUOTE (andrewlekar @ Jun 22 2011, 16:38) *
Язык должен ограничивать программиста в его бурных устремлениях, а чрезмерная гибкость С++ позволяет выстрелить себе в ногу и успешно завалить проект. С со статической аллокацией - вот правильный выбор программиста микроконтроллеров.

А почему Вы считаете, что разработчики компилятора знают лучше, что мне можно, а что - нельзя. В этих случая Pascal нужно выбирать. Он ограничивал.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Jun 22 2011, 09:00
Сообщение #6


Знающий
****

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



Цитата(haker_fox @ Jun 22 2011, 14:32) *
А почему Вы считаете, что разработчики компилятора знают лучше, что мне можно, а что - нельзя. В этих случая Pascal нужно выбирать. Он ограничивал.

Потому что разработчики компиляторов умные, а программист только-только Hello World освоил. sm.gif Pascal - это хорошо, но лучше Java или .NET. Вообще во всём мире С++ верно помирает, а вы наоборот в контроллеры его суете.

Цитата(sergeeff @ Jun 22 2011, 14:44) *
Все ваши высказывания от недостаточного знания и опыта работы с С++.

На С++ я успел поработать и мне не понравилось. И шаблоны, и ОО, и перегрузки - основные фичи С++ - разводят страшную грязь в коде. Да, при хорошем опыте программист научается ходить по этим граблям, но новый программист в проекте будет разбираться очень долго. sm.gif

Цитата(sergeeff @ Jun 22 2011, 14:44) *
1. По поводу статической аллокации в С. И что тут такого сильно удобного? А если памяти не хватает все сразу и навсегда разместить? Не сталкивались с таким?

2. В С++ ошибки при работе с динамической памятью как раз резко сократились за счет того, что многие вещи делает компилятор автоматически (конструктор/деструктор).

Один говорит, что статическая аллокация хороша при малом объеме ОЗУ. Другой наоборот. Да, бывает, что без динамической аллокации не обойтись - тогда приходится идти на компромисс.
Что-то я не слыхал, чтобы в С++ где-то резко сократились ошибки памяти. Наоборот, прибавилось ошибок. Утечки памяти - фирменная фича неуправляемого С++. В бусте напихали целую кучу умных указателей для борьбы с утечками и всё равно регулярно где-то подтекает на больших проектах.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 22 2011, 11:30
Сообщение #7


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

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



QUOTE (andrewlekar @ Jun 22 2011, 18:00) *
Потому что разработчики компиляторов умные, а программист только-только Hello World освоил. sm.gif

if(разработчики_компилятор != программисты)
{
мир_в_хаосе_и_я_ничего_не_понимаю_в_нем();
panic_kernel(&мой_мозг);
}

Дайте маленькому ребётенку острый нож, и получите тот же эффект: ребенок будет считать нож злом и говорить всем, что ножом нельзя пользоваться rolleyes.gif
QUOTE (andrewlekar @ Jun 22 2011, 18:00) *
Вообще во всём мире С++ верно помирает, а вы наоборот в контроллеры его суете.

Да? А мужики-то не знают rolleyes.gif Может будем в МК вставлять .NET и Java сразу?
QUOTE (andrewlekar @ Jun 22 2011, 18:00) *
На С++ я успел поработать и мне не понравилось. И шаблоны, и ОО, и перегрузки - основные фичи С++ - разводят страшную грязь в коде. Да, при хорошем опыте программист научается ходить по этим граблям, но новый программист в проекте будет разбираться очень долго. sm.gif

Это все субъективно. Есть люди и с противоположным мнением. Кстати, не каждый новый программист код на чистом Си разберет.


Я бы скромно предложил закрыть тему, как воинствующую)))

QUOTE (zltigo @ Jun 22 2011, 20:14) *
хотя наверное приличный, потому-что BOIS для XT у которой сдохла оная пззушка я таки написал

Мое Вам уважение! Я дальше самописного бутлоадера (на нулевой дорожки дискеты) и попытки написать примитивную миниОС в защищенном режиме IA32 не ушел. Но это было в далеком 2004 году, сейчас я немного взрослее стал))) Хотя, надо признаться, опыт был неплохой получен. Также делал окна в текстовом режиме, кнопочки и т.д. и т.п. Все на ассемблере...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 22 2011, 12:33
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (haker_fox @ Jun 22 2011, 14:30) *
Я дальше ....

Уж больно у меня стимул был велик - в 80-е годы заполучить ПЕРСОНАЛЬНЫЙ!! КОМПЬЮТЕР! дома!!! По этой причине моей первой программой на ASM 8088 стал BIOS sm.gif. Ох, помнится, и попотел я.... А еще он мог, как с родными работать с 800K дискетами sm.gif sm.gif.


--------------------
Feci, quod potui, faciant meliora potentes
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
||- - Danis   Цитата(andrewlekar @ Jun 22 2011, 11:38) ...   Jun 22 2011, 08:28
|||- - 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
||- - 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 - 03:43
Рейтинг@Mail.ru


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