|
Помогите выбрать среду для разработки на С++ |
|
|
|
Jun 7 2010, 14:41
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648

|
Может сначала выбрать контроллер, оценить необходимую производительность, а потом выбирать язык программирования и среду. Для размышления: Код fd = open(SERIALDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK); как будете реализовывать?
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Jun 7 2010, 14:43
|

Гуру
     
Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230

|
Цитата(mdmitry @ Jun 7 2010, 17:41)  Может сначала выбрать контроллер, оценить необходимую производительность, а потом выбирать язык программирования и среду. Для размышления: Код fd = open(SERIALDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK); как будете реализовывать? Переопределением функции open в libc.
|
|
|
|
|
Jun 7 2010, 14:53
|
Частый гость
 
Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426

|
Цитата(Methane @ Jun 7 2010, 17:33)  AVR32 + GCC. Забыл сказать что не хотелось бы связываться с "экзотическими" или дорогими (>$5) контроллерами, но всеравно спасибо за ответ. Значит кроме GCC исключения никто не умеет обрабатывать? Цитата(mdmitry @ Jun 7 2010, 17:41)  Может сначала выбрать контроллер, оценить необходимую производительность, а потом выбирать язык программирования и среду. Для размышления: Код fd = open(SERIALDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK); как будете реализовывать? Производительность не особенно критична при скорости обмена 9600 / 19200 бод. А работа с устройствами через дескрипторы мне не нужна, код работающий с регистрами UART напишу отдельно. Насчет того что сначала нужно выбрать контроллер, то Вы правы. Но я кроме AVR, 8051, PIC ничего не знаю, а им эта задача не по зубам, так что всеравно что изучать.
|
|
|
|
|
Jun 7 2010, 14:55
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648

|
Цитата(Methane @ Jun 7 2010, 18:43)  Переопределением функции open в libc. Уже linux на 8051 поставили?! Или всю libc править для работы с потоками? А это как править: Код hCom = CreateFile(P, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); Ставить winCE на контроллер? У автора непонятно что на PC Цитата Чтоб не париться с отладкой, многократной заливкой прошивок в контроллер и т.д. было решено писать под обычную персоналку. Есть ОС, нет ОС наука не в курсе?
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Jun 7 2010, 16:21
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(jack_avenger @ Jun 7 2010, 17:19)  Посоветуйте, пожалуйста, среду разработки под контроллеры для программирования в С++ с поддержкой STL и exceptions. Или все придется переписывать без исключений? 1. Исключение - аварийный вариант поведения программы. На PC обработка исключений оправдывается более-менее быстрой локализацией ошибок. Кто и как будет реагировать на исключения в embedded системе? 2. Исключения - сильный тормоз. 3. Выкинуть обработку исключений. Это займет максимум день.
|
|
|
|
|
Jun 7 2010, 20:04
|
Частый гость
 
Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426

|
Цитата(sergeeff @ Jun 7 2010, 19:21)  1. Исключение - аварийный вариант поведения программы. На PC обработка исключений оправдывается более-менее быстрой локализацией ошибок. Кто и как будет реагировать на исключения в embedded системе? Сам я и буду обрабатывать исключения, поэтому не соглашусь с Вами. Приведу пример. Пишу парсер входного буфера из которого я должен ловить пакеты переменной длины с попутной проверкой правильности определенных полей в заголовке. Есть несколько ситуаций когда нужно сгенерировать исключение (нужный байт еще не получен / по полученным байтам понятно что пакет "битый" / пакет адресуется не мне(неверный адрес устройства) / не совпала контрольная сумма заголовка / и т.д.) Цитата(sergeeff @ Jun 7 2010, 19:21)  2. Исключения - сильный тормоз. Обоснуйте, пожалуйста. Если есть опыт то приветсвуется кусок дизассемблированной программы как реально происходит обработка исключений Цитата(sergeeff @ Jun 7 2010, 19:21)  3. Выкинуть обработку исключений. Это займет максимум день. Выкину, если убедите меня вторым пунктом. Пока я считаю что исключения позволят мне написать более компактный код.
|
|
|
|
|
Jun 7 2010, 20:14
|

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

|
Цитата(jack_avenger @ Jun 7 2010, 23:04)  Выкину, если убедите меня вторым пунктом. Боюсь, что только завал Вами сией простой работы, только и сможет убедить Вас в том, что через анус, с помянутыми Вами припарками, на 51 ее делать не надо  . Вперед.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 7 2010, 20:26
|
Частый гость
 
Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426

|
Цитата(zltigo @ Jun 7 2010, 23:14)  Боюсь, что только завал Вами сией простой работы, только и сможет убедить Вас в том, что через анус, с помянутыми Вами припарками, на 51 ее делать не надо  . Вперед. 51-й я уже "похоронил" после того как сравнил объем кода сгенерированный IAR-ом для 51 и для MSP430 (2.5 : 1 в пользу MSP). Смотрю в сторону МSP430 или ARM7
|
|
|
|
|
Jun 8 2010, 02:03
|

Местный
  
Группа: Свой
Сообщений: 327
Регистрация: 24-06-06
Из: Томск
Пользователь №: 18 328

|
Цитата(jack_avenger @ Jun 8 2010, 03:04)  Приведу пример. Пишу парсер входного буфера из которого я должен ловить пакеты переменной длины с попутной проверкой правильности определенных полей в заголовке. Есть несколько ситуаций когда нужно сгенерировать исключение (нужный байт еще не получен / по полученным байтам понятно что пакет "битый" / пакет адресуется не мне(неверный адрес устройства) / не совпала контрольная сумма заголовка / и т.д.) Ситуации из вашего примера - это НЕ исключительные ситуации, а нормальная работа парсера. Прислушайтесь к мнениям гуру (Страуструп, Майер, Саттер) об использовании исключений и правильном подходе к написанию программ в этом случае. Думаю после этого, вы пересмотрите свой подход к написанию embedded приложений на C++. IAR сделал абсолютно верно, что выкинул из своего компилятора поддержку исключений. Т.к. они для embedded устройств слишком тяжеловесны. Не могу придумать ни одного примера, где бы их использование было наиболее удобным/рациональным/правильным/...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|