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

 
 
 
Closed TopicStart new topic
> Компилятор GNU AVR GCC, использование STL
e-leks
сообщение Dec 23 2011, 17:25
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 12-10-11
Пользователь №: 67 694



Добрый день.
Вопрос по компилятору GNU AVR GCC: Существует ли возможность использования vector и string для 8-ми битных AVR МК(в часности ATMega16)? Рассматриваю использование Code::Block, очень нравится, вот хочу пристреляться. В IAR получилось без проблем, даже удивительно 8-ми битный МК и vector.
Спасибо за внимание, Алексей.
Go to the top of the page
 
+Quote Post
dxp
сообщение Dec 23 2011, 18:29
Сообщение #2


Adept
******

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



QUOTE (e-leks @ Dec 24 2011, 00:25) *
Добрый день.
Вопрос по компилятору GNU AVR GCC: Существует ли возможность использования vector и string для 8-ми битных AVR МК(в часности ATMega16)? Рассматриваю использование Code::Block, очень нравится, вот хочу пристреляться. В IAR получилось без проблем, даже удивительно 8-ми битный МК и vector.
Спасибо за внимание, Алексей.

STL требует аллокации памяти под элементы контейнеров - работу со свободной памятью. Не думаю, что на AVR (да и на других процах без MMU) это хорошая затея - накладные расходы по памяти и быстродействию для AVR будут великоваты, и от фраментации кучи не уйти. sad.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
zhevak
сообщение Dec 23 2011, 20:17
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



dxp говорит дело.

Использование тяжелых библиотек на слабых вычислительных единицах -- это проявление непрофессионализма. Применение на Кортексах и АРМ-ах -- еще куда ни шло, хотя и там лучше все-таки как-нибудь обходится без ООП. Но на АВР-ах... не-е, лучше не надо!

Поиграться для получения опыта, конечно, можно. Но для изделий, которые предполагается использовать на блага себя или общества, код лучше писать на чистом Си. А Си++ -- это все-таки для компов или более мощных МК.

Хотя, опять же! На форуме всегда найдутся спорщики, и начнут доказывать, что это не исключение, а правило. Основной аргумент -- типа принципиально же запускается, работает. А чем это достигается, чем при этом приходится жертвовать -- для них это вопрос второстепенной важности.

Если хочешь растолкать локтями конкурентов на рынке, делай лучше, чем они. Не игнорируй второстепенных вопросов. Конечному пользователю все равно -- на каком языке написан софт. Хоть на Васике! Ему важна надежность оборудования и цена. Если ваш девайс будет периодически сваливаться в синий экран из-за фрагментации памяти, нанося мне убытки, то я приду к вам и... угадайте с одного раза, куда я вам засуну ваше изделие. Более того, я еще всем расскажу, какой есть глюкавый и тормознутый (при такой тактовой частоте на что тратит он свои такты) ваш недо-девайс. А теперь попробуйте сделать свой бизнес и продержаться долго на рынке!


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
e-leks
сообщение Dec 24 2011, 09:24
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 12-10-11
Пользователь №: 67 694



Цитата(zhevak @ Dec 24 2011, 00:17) *
Использование тяжелых библиотек на слабых вычислительных единицах -- это проявление непрофессионализма.
Спасибо за очень исчерпывающие ответы, конечно же Вы правы. Я начинающий, попал под влияние Страуструпа, при чтении его последнего шедевра стали появлятся подобные мысли. Хотя в стандартной библиотеке AVR(WinAVR) существует поддержка vector, list, string и др., но 32 битными AVR МК. Наверное здесь и лежит "граница AVR" на использование STL, до 32 битных не стоит использовать, после 32 битных можно. Конечно если задача требует и без контейнеров получится еще сложнее.
Спасибо, Алексей.
Go to the top of the page
 
+Quote Post
neiver
сообщение Dec 24 2011, 09:39
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123



Если хочется удобных контейнеров для АВРок, то можно самому написать легковесные контейнеры со статическим распределением памяти. Это не сложно. И это очень хорошая учебная задача. Так что дерзайте.
Вот, например, минималистичный, но очень эффективный кольцевой буфер
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 24 2011, 09:53
Сообщение #6


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Пока тема не свалилась в очередную перебранку насчёт допустимости применения C++ на МК, я её от греха подальше закрою.
Но справедливости ради добавлю, что использование STL не является обязательным и ни коим образом не препятствует программированию на C++, даже для мелких МК. И что применение всех этих технологий ни в коем случае не является синонимом синего экрана. Интеллект нужен для любой работы.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:12
Рейтинг@Mail.ru


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