Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR Embedded Workbench и IntelliSense
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Pasha 111
Всем привет!

Вопрос такой: можно ли к IAR'у прикрутить IntelliSense? Мне по работе 80% времени нужно писать в IAR'е, а 20% - в MS Visual Studio. Так вот после последней переключаться опять на IAR становится очень грустно из-за интерфейса и всех примочек студии.

Хочеться хотя бы иметь что-то вроде этого, с остальным можно смириться:


Есть ли альтернатива IAR'у? Без ущерба для возможностей отладки через JLink?

Топик наверное не совсем в тему, но наболело уже, и гугл мне не помог (наверное не то спрашивал).
KRS
для ARM у IAR есть плагин к eclipse здесь есть топик про него.
_Артём_
Цитата(Pasha 111 @ May 4 2012, 17:09) *
Вопрос такой: можно ли к IAR'у прикрутить IntelliSense? Мне по работе 80% времени нужно писать в IAR'е, а 20% - в MS Visual Studio. Так вот после последней переключаться опять на IAR становится очень грустно из-за интерфейса и всех примочек студии.

Может лучше создавать и редактировать проект в VS Studio?
Прописать все пути к IAR вместо путей на VC++.
А отлаживаться в IAR или Keil или Eclipse - в чём удобней.

Вот ещё такая штука есть - ссылка

Pasha 111
Цитата
для ARM у IAR есть плагин к eclipse здесь есть топик про него.

Сейчас посмотрю, хотя eclipse использовал очень мало, но он всё равно лучше IAR'а выглядит sm.gif

Цитата
Может лучше создавать и редактировать проект в VS Studio?
Прописать все пути к IAR вместо путей на VC++.
А отлаживаться в IAR или Keil или Eclipse - в чём удобней.

Вот ещё такая штука есть - ссылка

Помню я когда-то давно делал тоже самое, когда мне жутко не нравился старый Code Composer от TI, так вот намучился я тогда проект настраивать в студии, может сейчас всё лучше пойдёт sm.gif Попробую сначала этот способ.

Блин, неужели так сложно сделать IAR'овцам нативный IntelliSense? У них же есть, скажем, "Go to Definition", т.е. база данных по проекту всё равно строится, почему никак не могут допилить...
_Артём_
Цитата(Pasha 111 @ May 4 2012, 17:40) *
Помню я когда-то давно делал тоже самое, когда мне жутко не нравился старый Code Composer от TI, так вот намучился я тогда проект настраивать в студии, может сейчас всё лучше пойдёт sm.gif Попробую сначала этот способ.

Тот ещё гемор - но результат того стоит.
Но Eclipse проще настроить.


Цитата(Pasha 111 @ May 4 2012, 17:40) *
Блин, неужели так сложно сделать IAR'овцам нативный IntelliSense? У них же есть, скажем, "Go to Definition", т.е. база данных по проекту всё равно строится, почему никак не могут допилить...

Ну, они сделали автоподсказку, лучше бы не делали: пару раз такого подсказывала, что полдня искать приходилось.
_Стас_
А еще есть Slickedit, который прекрасно прикручивается к IAR. С MS Visual Studio я думаю тоже можно подружить.
borman11
Я пишу код в Эклипсе, а отлаживаю в IAR. Плагин для эклипса есть, поддерживающий 6-ю версию IAR'а.
Пробовал отладку в самом Эклипсе - вроде работает, но как-то не легла душа. Да и конфигурировать проект в IAR'е удобнее.
Pasha 111
Вчера поставил с дуру Eclipse 64-битный, поставил на него плагин от IAR'а (eclipse-arm-6.21-latest.zip, у меня IAR версии 6.21.1). В окнах создания и импорта проекта появились соответствующие строки, но при их выборе возникала какая-то ошибка в java-исходниках.

Потом решил поставить 32-хразрядный эклипс, снёс старый поставил вот этот вот: eclipse-cpp-indigo-SR2-incubation-win32.zip. Потом поставил тот же плагин от IAR'а. И ничего. В списке установленных в эклипсе он числиться, а вот никаких упоминаний о нём в среде больше нет, ни в создании нового проекта, ни в импорте существующего. Пробовал сносить и ставить эклипс несколько раз. Весь день промучился, а толку 0. sad.gif Да и вообще мне эклипс с его странным workspac'ом как-то не очень понятен.

Нашёл тут свою старую ветку от сентября 2006 года:
Замена IAR'а, какие есть среды разработки с более приятным интерфейсом
столько времени прошло уже, а воз и ныне там.

У меня стоит MS Visual C++ Express 2010, попробую прикрутить к нему проект тогда, а отлаживаться в IAR'е, с эклипсом, видимо, не получится у меня (прочитал соседнюю ветку про плагин к нему - решение своей проблемы не нашёл).

Ставить External Editor в IAR на тот же Notepad++ как-то грустно, ибо в последнем всё равно нет IntelliSense (или всё-таки есть с помощью плагина?)

Если подытожить, то вариантов, как я понял, 4:
1) перейти с IAR'а на что-то другое (хорошая IDE + компилятор);
2) прикрутить всё-таки плагин от IAR'а к Eclipse;
3) прикрутить внешний редактор к IAR'у;
4) прикрутить компилятор IAR к другой IDE.

Может у кого был спешный опыт с пунктом 3?
borman11
У меня Eclipse сборка Helios. eclipse-arm-6.30-latest ставится "одним кликом". Ничего допиливать не надо.
Pasha 111
borman11, я тоже думал, что не придётся sm.gif

Помучился, но разобрался и сделал проект в MS Visual C++ Express (makefile project), прописал все пути до IarBuild.

Всё компилируется, IntelliSense работает, лог построения в окне вывода отчёта появляется, при кликах на ошибках и предупреждениях на файлы исходного кода на нужные строки переходит. Пока доволен. Было бы неплохо ещё, чтобы ошибки сразу в Error List студии добавлялись, а не в Output Window, но и так тоже не плохо. Исправил даже баг с кривым отображением русских букв в логе.

А отлаживаться буду в IAR'е значит, но это всё равно лучше, чем в IAR'овском редакторе писать.
_Артём_
Цитата(Pasha 111 @ May 6 2012, 15:20) *
borman11, я тоже думал, что не придётся sm.gif
Помучился, но разобрался и сделал проект в MS Visual C++ Express (makefile project), прописал все пути до IarBuild.

А что МК-специфичное в Preprocessor Definition прописывали?
Периферия подсказывается?
Pasha 111
_Артём_
Ничего не прописывал sm.gif Создал "Проект, использующий файл makefile", потом добавил в проект все исходники (можно, кстати, и не все - студия сама-то ничего не компилирует, она только ради редактора и IntelliSense'а нужна). Сам проект и решение не обязательно создавать в тех же папках, где проект и воркспейс от IAR'а, но так удобнее, потому что при настройке проекта в студии можно юзать макросы.

Дальше настройка в разделе "Свойства конфигурации" проекта:
Вкладка "Общие" - без изменений, вкладка "Отладка" - без изменений (собственно отлаживаться из студии и не получится), вкладка "Каталоги C++" - без изменений, но можно заменить на каталоги заголовочных файлов IAR'а (так, наверное, и нужно сделать, чтобы, к примеру, подсказка для printf() всплывала из заголовочных файлов IAR'а).

Все настройки нужно произвести во вкладке "NMake". В группе "IntelliSense":
"Определения препроцессора" - там нужно вставить определённые для каждого файла символы, я туда, как и в IAR'е, пишу "FLASH" и "AT91SAM7X128" (куда помещать код и тип процессора), чтобы при компиляции подхватить нужный .h-ник для процессора;
"Путь поиска включаемых файлов" - тут прописать дополнительные пути для поиска .h-ников, сюда я прописывал те же пути, что и в проекте в IAR';
"Обязательно включаемые файлы" - какие .h-ники обязательно подключать ко всем исходным файлам, у меня ничего нет, но нужно прописать то же, что и в проекте IAR'а.
Дальше в группе "Общие" (пишу настройки в расчёте, то проект студии лежит в той же папке, что и проект IAR):

"Командная строка для построения" =
"[путь до IarBuild.exe]\IarBuild.exe" "$(ProjectDir)имя_вашего_проекта_в_iar.ewp" -make $(Configuration) -log warnings

"Командная строка для перестроения всех файлов" =
"[путь до IarBuild.exe]\IarBuild.exe" "$(ProjectDir)имя_вашего_проекта_в_iar.ewp" -build $(Configuration) -log warnings

"Командная строка для очистки" =
"[путь до IarBuild.exe]\IarBuild.exe" "$(ProjectDir)имя_вашего_проекта_в_iar.ewp" -clean $(Configuration) -log all

Здесь $(Configuration) - макрос студии, который вставляет имя текущей конфигурации. Чтобы не путаться, я сделал новую конфигурацию с таким же именем, как и в проекте IAR'а: "at91sam7x128_flash".

IarBuild.exe - консольная утилита для построения существующего проекта IAR. Обычно лежит где-то здесь:
"c:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\common\bin\IarBuild.exe".

Usage: iarbuild <projectfile> [-clean | -build | -make] <config> [-log errors|warnings|info|all]

Есть одна проблема: IarBuild.exe выводит отчёт о построении в кодировке Win-1251, поэтому в консоли все сообщения об ошибках в файлах, которые в своём имени или пути имеют русские буквы, выводятся иероглифами, потому что консольное окно ожидает от программы вывода в unicode или cp866. Так же ведёт себя студия, поэтому когда кликаешь на строку с ошибкой, студия не показывает файл, а пишет, что "Не удаётся натий файл". Так что я написал небольшой скрипт, который:
1) выводит справку об аргументах командной строки;
2) сохраняет отчёт построения проекта в файле [каталог проекта]\IarBuild.txt (ANSI, Win-1251);
3) выводит в стандартный поток вывода отчёт о построении, преобразованный в кодировку CP-866, для корректного отображения русских букв в IDE.

Нажмите для просмотра прикрепленного файла
В файле IarBuild.bat нужно только на 9-й строке заменить путь до IarBuild.exe на ваш.

Тогда в настройках путей в NMake в студии нужно указать всё тоже самое, только вместо "[путь до IarBuild.exe]\IarBuild.exe" писать "[путь до IarBuild.bat]\IarBuild.bat", сам IarBuild.bat можно положить куда угодно.

Периферия подсказывается:
Нажмите для просмотра прикрепленного файла
правда я уже очень давно вот так напрямую к ней не обращался sm.gif
VslavX
Цитата(Pasha 111 @ May 6 2012, 15:20) *
borman11, я тоже думал, что не придётся sm.gif
Было бы неплохо ещё, чтобы ошибки сразу в Error List студии добавлялись, а не в Output Window, но и так тоже не плохо.

Легко - пропускаете Output компилятора через Perl со скриптом - скрипт конвертирует сообщения об ошибках формата IAR-а в формат студии. Запускать компилятор из студии так:

<путь и имя исполняемого файла компилятора> <параметры компилятора> 2>&1 | <исполняемый файл интерпретатора Perl> <имя файла скрипта>

(угловые скобки, ессно, не пишем - ограничивают имена в примере)
"2>&1" нужно чтобы перенаправить stderr компилятора в stdout, который поступит на вход Perl-а с указанным скриптом.
Скрипт для MSVC2005 и IAR (пробовал от 3.x до 6.41) в приложении (переименуйте .txt в .pl - форум не дает аттачить скрипты с таким расширением)




Pasha 111
VslavX
Спасибо за скрипт! Никогда не понимал людей, пишущих на перле sm.gif

Цитата
"2>&1" нужно чтобы перенаправить stderr компилятора в stdout, который поступит на вход Perl-а с указанным скриптом.

Если я правильно понял, то делает он не совсем это. IarBuild (только сейчас проверил) вообще ничего в stderr не выводит. А вот если в качестве компилятора для студии прописать какой-нибудь .bat-файл, а в нём написать:

echo aaa.cpp(1) : Error 1 : error text >&2

то тогда в студии добавиться ошибка в Error List (строчка делает echo в stderr). Так что студия добавляет ошибки в Error List только если они пишутся в stderr.

А строка "2>&1 | " копирует в stdout, то, что IarBuild выводит в свой stderr (чисто на всякий случай, как я понял), а потом результат всего вывода (оператор "|" считывает выходные данные одной команды и записывает их на вход другой команды) перенаправляется в перл скрипт (т.е. и выводы stdout и stderr).

Так что реально должно работать и так:

<путь и имя исполняемого файла компилятора> <параметры компилятора> > <исполняемый файл интерпретатора Perl> <имя файла скрипта>

Просто в этом случае не будут видны возможные сообщения об ошибках самого компилятора.

У меня нет интерпретатора перл, и ставить его лень, щас на c# по быстрому парсер напишу и выведу в stderr ошибки sm.gif
VslavX
Цитата(Pasha 111 @ May 6 2012, 22:09) *
VslavX
Спасибо за скрипт! Никогда не понимал людей, пишущих на перле sm.gif

Берется книжка типа "Перл за 24 часа" и такой скрипт пишется за 10 минут sm.gif. Очень уж мощная штука Perl для обработки всяких текстов.

Цитата(Pasha 111 @ May 6 2012, 22:09) *
Если я правильно понял, то делает он не совсем это. IarBuild (только сейчас проверил) вообще ничего в stderr не выводит. А вот

IarBuild может быть и не выводит, а компилятор который он запускает - вроде бы ругается исключительно в stderr. По крайней мере версии 4.x точно так делали, а в stdout был молчок - никаких ошибок. То же самое касается GCC - ругается об ошибках исключительно в stderr. Поэтому без перенаправления - ошибки фильтрующим скриптом не хаваются.

Цитата(Pasha 111 @ May 6 2012, 22:09) *
если в качестве компилятора для студии прописать какой-нибудь .bat-файл, а в нём написать:

Я использую сразу gmake - он многопоточную компиляцию поддерживает (ключик -j), на многоядерном процессоре выигрыш значительный - почти кратный числу ядер.

Цитата(Pasha 111 @ May 6 2012, 22:09) *
то тогда в студии добавиться ошибка в Error List (строчка делает echo в stderr). Так что студия добавляет ошибки в Error List только если они пишутся в stderr.

А строка "2>&1 | " копирует в stdout, то, что IarBuild выводит в свой stderr (чисто на всякий случай, как я понял), а потом результат всего вывода (оператор "|" считывает выходные данные одной команды и записывает их на вход другой команды) перенаправляется в перл скрипт (т.е. и выводы stdout и stderr).

Хм, странно, вроде бы мой скрипт выводит именно в stdout, а не в stderr. Может быть в Студии-2010 что-то поменяли.

Цитата(Pasha 111 @ May 6 2012, 22:09) *
У меня нет интерпретатора перл, и ставить его лень, щас на c# по быстрому парсер напишу и выведу в stderr ошибки sm.gif

Ну идею Вы поняли. Кстати, впервые такой фильтр-конвертор сообщений об ошибках еще в BC3.1 был прикручен - там были примеры проектов для таких фильтров и как их вкрутить в среду.
Pasha 111
VslavX
Всё, разобрался.

Первое, IarBuild ничего в stderr не выводит, но я всё равно подправил свой скрипт так, чтобы и данные с этого потока шли на обработку.

Второе, студии, как оказалось, всё равно по какому потоку в неё сообщения об ошибках идут - всё выводит и, если соответствует формату, добавляет в Error List.

Третье, понял что делает перловый скрипт sm.gif Дело в том, что у студии и IAR'а формат ошибок отличаются. Студия отказывается добавлять ошибку в ErrorList, если в названии ошибки есть символы '[' и ']' (может быть и ещё есть), а у IAR'а как раз ошибки вроде "[Pe127]". Плюс должен быть пробел между словом "error" или "warning" и номером/скобкой, а у IAR'а его нет. Сам проверял сидел sm.gif

В итоге поменял скрипт и добавил туда парсер, который всё это и делает. Плюс заменяет ключевое слово "Remark" на "warning", ибо студия его не понимает. А сам скрипт теперь выводит ещё аргументы командной строки, с которыми его запустили.

Вообщем вот IarBuild for MSVS script v0.1 sm.gif

Нажмите для просмотра прикрепленного файла
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.