|
Помогите выбрать среду для разработки на С++ |
|
|
|
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 устройств слишком тяжеловесны. Не могу придумать ни одного примера, где бы их использование было наиболее удобным/рациональным/правильным/...
|
|
|
|
|
Jun 8 2010, 14:08
|

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

|
jack_avengerЦитата Сам я и буду обрабатывать исключения, поэтому не соглашусь с Вами. Приведу пример. Пишу парсер входного буфера из которого я должен ловить пакеты переменной длины с попутной проверкой правильности определенных полей в заголовке. Есть несколько ситуаций когда нужно сгенерировать исключение (нужный байт еще не получен / по полученным байтам понятно что пакет "битый" / пакет адресуется не мне(неверный адрес устройства) / не совпала контрольная сумма заголовка / и т.д.) Если не лень, гляньте исходные тексты протокола wake. Большое сходство с Вашим случаем.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Jun 11 2010, 13:36
|
Частый гость
 
Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426

|
Цитата(mdmitry @ Jun 8 2010, 17:08)  Если не лень, гляньте исходные тексты протокола Спасибо, посмотрел. У меня посложнее будет. Нужно одновременно держать несколько сеансов связи с разными опрашивающими станциями на каждом из нескольких каналов связи. Решил отказаться от исключений в пользу setjmp / longjmp.
|
|
|
|
|
Jun 13 2010, 21:06
|
Частый гость
 
Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426

|
Цитата(sergeeff @ Jun 11 2010, 17:55)  Как говорил Жванецкий:"Может в консерватории чего надо подправить?" Сдается, что вы переходите в embedded мир с PC и над вами давлеют те методы и приемы, которые там вовсю применяются. Вон уже людям 4 Gb RAM на борту не хватает.
Еще раз - всякие исключения, setjmp / longjmp - не лучшие варианты проектирования software. На PC я не написал ничего стоящего, а для embedded сделал несколько прошивок для устройств, коих выпущено уже слава Богу более 200 000 штук и работают они круглосуточно без нареканий (тьфу-тьфу). "В консерватории чего надо подправить", это да. Опыта написания на С++ для embedded у меня действительно нет, но деваться некуда, поэтому и полез на форум. Спасибо всем, кто откликнулся!
|
|
|
|
|
Jun 14 2010, 03:28
|
Местный
  
Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699

|
Цитата(dch @ Jun 14 2010, 07:14)  GCC на многих платформах идёть, вообщето не имеет смысл использовать C++, разве только что из за расширенной проверки синтаксиса C. Только за более безопасную работу с типами уже стоит использовать С++. А там еще много вкусного есть.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|