ra3wum 0 8 марта, 2009 Опубликовано 8 марта, 2009 · Жалоба Подскажите, как прикрутить к эклипсу компилятор от iar? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
msalov 0 9 марта, 2009 Опубликовано 9 марта, 2009 · Жалоба Подскажите, как прикрутить к эклипсу компилятор от iar? http://www.iar.com/website1/1.0.1.0/79/1/ http://electronix.ru/forum/index.php?showtopic=34843 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ra3wum 0 10 марта, 2009 Опубликовано 10 марта, 2009 · Жалоба http://www.iar.com/website1/1.0.1.0/79/1/ http://electronix.ru/forum/index.php?showtopic=34843 Ни в одной из ссылок нет ответа на заданный вопрос. Существует eclipse plugin for IAR Embedded Workbench AVR, но его рассылают только тем у кого есть лицензия. Может кто-то поделится? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
msalov 0 10 марта, 2009 Опубликовано 10 марта, 2009 · Жалоба Ни в одной из ссылок нет ответа на заданный вопрос. Существует eclipse plugin for IAR Embedded Workbench AVR, но его рассылают только тем у кого есть лицензия. Может кто-то поделится? Если Вы ожидаете получать ответы по теме, рекомендую Вам научиться задавать вопросы. Если Вы со со мной не согласны - прочитайте свой вопрос и попытайтесь найти там слово AVR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZiB 0 11 марта, 2009 Опубликовано 11 марта, 2009 · Жалоба Всем, привет! Перехожу с IAR-а на связку Eclipse + WinAVR. Пока возникло пару вопросов, может кто подскажет что нибудь. 1) Как в Eclipse установить "ключевые слова пользователя" (в IAR-е user keywords), необходимо для подсветки своих переименованных типов данных. я просто уже привык писать вместо "unsigned char" Byte, Eclipse естественно его не "подсвечивает". 2) Есть обработчик прерываний из обработчика прерываний происходит вызов функции, как сказать компилятору что бы в обработчик прерываний сохранял только те регистры которые действительно используются (как в самом, так и во внешней функции), а не все? (уровень оптимизации менял, не помогло). {Отвечаю сам себе. Вероятнее всего сохранение всех регистров происходит по причине нахождения функции во внешнем файле, который при компиляции собирается отдельно. В связи с чем новый вопрос, я использую плагин AVR-Eclipse и не понял пока как указать ему собрать всё вместе, а не по отдельности. В IAR-е такого не было в пределах проекта проблем не наблюдалось...} Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mdmitry 0 11 марта, 2009 Опубликовано 11 марта, 2009 · Жалоба на форуме бывает aesok, который большой спец по WinAvr. Посмотрите документацию по gcc на предмет __attribute(naked) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 11 марта, 2009 Опубликовано 11 марта, 2009 · Жалоба Посмотрите документацию по gcc на предмет __attribute(naked) Ага, будет Вам и кофе, и какао с чаем. Вот тута обговаривали: http://electronix.ru/forum/index.php?showt...56739&st=-5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
injen-d 0 11 марта, 2009 Опубликовано 11 марта, 2009 · Жалоба Пользуюсь Eclipse ganymede 3.4.0 + WinAVR Проблема в следующем: при использовании в программе константы, объявленной в мейк-файле, например: в мейк-файле: было #F_CPU = 18432000 поменял на F_CPU=10260000 в .cpp-файле: #if F_CPU<15000000UL ... #endif эклипса почти постоянно тупит и при наведении курсора на F_CPU показывает одно из предыдущих значений этой константы на котором она (эклипса) почему-то "зациклилась" (ее особенно любимые значения 8000000 и 18432000, но наверное это случайность), изредка значение по непонятным законам обновляется. Соответственно весь код между #if и #endif затеняется как выключенный. Но, компилится все как надо! Все бы - ничего, но текст программы становится нечитабельным. Может кто подскажет как это побороть? В качестве временной меры переопределяю F_CPU в .cpp-файле тем же значением, что и в мейк-файле, но душа требует красоты... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 13 марта, 2009 Опубликовано 13 марта, 2009 · Жалоба может обновить CDT? Index->rebuild пробовали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aesok 0 13 марта, 2009 Опубликовано 13 марта, 2009 (изменено) · Жалоба 2) Есть обработчик прерываний из обработчика прерываний происходит вызов функции, как сказать компилятору что бы в обработчик прерываний сохранял только те регистры которые действительно используются (как в самом, так и во внешней функции), а не все? (уровень оптимизации менял, не помогло). Компилятор не знает какие регистры используются в вызываемой функции, и поэтому сохраняет все call-used регистры в обработчике прерывания если в нем есть вызов функции. Вызываемая функция может находиться в другом модуле, и компилятор не может про нее ничего знать. Даже если функции находятся в одном файле они компилируются независимо. Вы можете сделать вызываемую функцию инлайн-функцией, и тогда ее код будет вставлен в обработчик и будут сохраняться только необходимые регистры. Есть одна очень простая аксиома: Обработчик прерывания должен выполнять только МИНИМАЛЬНО НЕОБХОДИМЫЕ действия и выполняться за как можно меньшее время. В идеале только работа с портами ввода вывода, обновление буферов с полученными/выведенными данными и установка флагов. Никакой обработки данных в прерывании!! Подготавливаться и обрабытываться данные далжны вне обработчика прерывания. Помните пока работает обработчик прерывания, все другие запросы прерываний обрабатываться не могут, и если обработчик выполняется очень долго, то может возникнуть ситуация когда эти запросы будут пропущены. :bb-offtopic: Книжки по программированию в которых даны примеры программ с нарушением этой аксиомы нужно сразу на костер. Вызываю функцию в обработчике прерывания Вы скорее всего нарушаете эту аксиому. Анатолий. Изменено 13 марта, 2009 пользователем aesok Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 29 13 марта, 2009 Опубликовано 13 марта, 2009 · Жалоба эклипса почти постоянно тупит и при наведении курсора на F_CPU показывает одно из предыдущих значений этой константы на котором она (эклипса) почему-то "зациклилась" Я думаю, она помнит значение с последней компиляции А вот зачем постоянно менять F_CPU я, чесгря, не понимаю :cranky: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Johnny81 0 13 марта, 2009 Опубликовано 13 марта, 2009 · Жалоба 1) Как в Eclipse установить "ключевые слова пользователя" (в IAR-е user keywords), необходимо для подсветки своих переименованных типов данных. я просто уже привык писать вместо "unsigned char" Byte, Eclipse естественно его не "подсвечивает". Preferences \ C/C++ \ Editor \ Syntax coloring - очень широкие возможности по настройке подстветки. Тока, надеюсь, у вас не так: #define Byte unsigned char ? ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZiB 0 13 марта, 2009 Опубликовано 13 марта, 2009 · Жалоба Компилятор не знает какие регистры используются в вызываемой функции, и поэтому сохраняет все call-used регистры в обработчике прерывания если в нем есть вызов функции. Вызываемая функция может находиться в другом модуле, и компилятор не может про нее ничего знать. Даже если функции находятся в одном файле они компилируются независимо. Вы можете сделать вызываемую функцию инлайн-функцией, и тогда ее код будет вставлен в обработчик и будут сохраняться только необходимые регистры. Есть одна очень простая аксиома: Обработчик прерывания должен выполнять только МИНИМАЛЬНО НЕОБХОДИМЫЕ действия и выполняться за как можно меньшее время. В идеале только работа с портами ввода вывода, обновление буферов с полученными/выведенными данными и установка флагов. Никакой обработки данных в прерывании!! Подготавливаться и обрабытываться данные далжны вне обработчика прерывания. Помните пока работает обработчик прерывания, все другие запросы прерываний обрабатываться не могут, и если обработчик выполняется очень долго, то может возникнуть ситуация когда эти запросы будут пропущены. :bb-offtopic: Книжки по программированию в которых даны примеры программ с нарушением этой аксиомы нужно сразу на костер. Вызываю функцию в обработчике прерывания Вы скорее всего нарушаете эту аксиому. Анатолий. Спасибо за совет, но я уже разобрался сам. Насчет аксиомы, не буду спорить, скажу просто что Вы не правы, так как все "эти" аксиомы нужно рассматривать в контексте конкретной задачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aesok 0 13 марта, 2009 Опубликовано 13 марта, 2009 · Жалоба Насчет аксиомы, не буду спорить, скажу просто что Вы не правы, так как все "эти" аксиомы нужно рассматривать в контексте конкретной задачи. Следование этой аксиоме уменьшает количество рассматриваемых контекстов при решении задачи. Анатолий. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 13 марта, 2009 Опубликовано 13 марта, 2009 · Жалоба Никакой обработки данных в прерывании!! Другими словами, обработчик просто должен выполняться максимально быстро. На счет того, что нужно в нем делать, а чего не нужно, вопрос не однозначный, и как заметили выше, зависит от контекста задачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться