Pasha 111 0 Posted May 4, 2012 · Report post Всем привет! Вопрос такой: можно ли к IAR'у прикрутить IntelliSense? Мне по работе 80% времени нужно писать в IAR'е, а 20% - в MS Visual Studio. Так вот после последней переключаться опять на IAR становится очень грустно из-за интерфейса и всех примочек студии. Хочеться хотя бы иметь что-то вроде этого, с остальным можно смириться: Есть ли альтернатива IAR'у? Без ущерба для возможностей отладки через JLink? Топик наверное не совсем в тему, но наболело уже, и гугл мне не помог (наверное не то спрашивал). Quote Ответить с цитированием Share this post Link to post Share on other sites
KRS 0 Posted May 4, 2012 · Report post для ARM у IAR есть плагин к eclipse здесь есть топик про него. Quote Ответить с цитированием Share this post Link to post Share on other sites
Артём__ 0 Posted May 4, 2012 · Report post Вопрос такой: можно ли к IAR'у прикрутить IntelliSense? Мне по работе 80% времени нужно писать в IAR'е, а 20% - в MS Visual Studio. Так вот после последней переключаться опять на IAR становится очень грустно из-за интерфейса и всех примочек студии. Может лучше создавать и редактировать проект в VS Studio? Прописать все пути к IAR вместо путей на VC++. А отлаживаться в IAR или Keil или Eclipse - в чём удобней. Вот ещё такая штука есть - ссылка Quote Ответить с цитированием Share this post Link to post Share on other sites
Pasha 111 0 Posted May 4, 2012 · Report post для ARM у IAR есть плагин к eclipse здесь есть топик про него. Сейчас посмотрю, хотя eclipse использовал очень мало, но он всё равно лучше IAR'а выглядит :) Может лучше создавать и редактировать проект в VS Studio? Прописать все пути к IAR вместо путей на VC++. А отлаживаться в IAR или Keil или Eclipse - в чём удобней. Вот ещё такая штука есть - ссылка Помню я когда-то давно делал тоже самое, когда мне жутко не нравился старый Code Composer от TI, так вот намучился я тогда проект настраивать в студии, может сейчас всё лучше пойдёт :) Попробую сначала этот способ. Блин, неужели так сложно сделать IAR'овцам нативный IntelliSense? У них же есть, скажем, "Go to Definition", т.е. база данных по проекту всё равно строится, почему никак не могут допилить... Quote Ответить с цитированием Share this post Link to post Share on other sites
Артём__ 0 Posted May 4, 2012 · Report post Помню я когда-то давно делал тоже самое, когда мне жутко не нравился старый Code Composer от TI, так вот намучился я тогда проект настраивать в студии, может сейчас всё лучше пойдёт :) Попробую сначала этот способ. Тот ещё гемор - но результат того стоит. Но Eclipse проще настроить. Блин, неужели так сложно сделать IAR'овцам нативный IntelliSense? У них же есть, скажем, "Go to Definition", т.е. база данных по проекту всё равно строится, почему никак не могут допилить... Ну, они сделали автоподсказку, лучше бы не делали: пару раз такого подсказывала, что полдня искать приходилось. Quote Ответить с цитированием Share this post Link to post Share on other sites
_стас_ 0 Posted May 4, 2012 · Report post А еще есть Slickedit, который прекрасно прикручивается к IAR. С MS Visual Studio я думаю тоже можно подружить. Quote Ответить с цитированием Share this post Link to post Share on other sites
borman11 0 Posted May 4, 2012 · Report post Я пишу код в Эклипсе, а отлаживаю в IAR. Плагин для эклипса есть, поддерживающий 6-ю версию IAR'а. Пробовал отладку в самом Эклипсе - вроде работает, но как-то не легла душа. Да и конфигурировать проект в IAR'е удобнее. Quote Ответить с цитированием Share this post Link to post Share on other sites
Pasha 111 0 Posted May 5, 2012 · Report post Вчера поставил с дуру Eclipse 64-битный, поставил на него плагин от IAR'а (eclipse-arm-6.21-latest.zip, у меня IAR версии 6.21.1). В окнах создания и импорта проекта появились соответствующие строки, но при их выборе возникала какая-то ошибка в java-исходниках. Потом решил поставить 32-хразрядный эклипс, снёс старый поставил вот этот вот: eclipse-cpp-indigo-SR2-incubation-win32.zip. Потом поставил тот же плагин от IAR'а. И ничего. В списке установленных в эклипсе он числиться, а вот никаких упоминаний о нём в среде больше нет, ни в создании нового проекта, ни в импорте существующего. Пробовал сносить и ставить эклипс несколько раз. Весь день промучился, а толку 0. :( Да и вообще мне эклипс с его странным 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? Quote Ответить с цитированием Share this post Link to post Share on other sites
borman11 0 Posted May 5, 2012 · Report post У меня Eclipse сборка Helios. eclipse-arm-6.30-latest ставится "одним кликом". Ничего допиливать не надо. Quote Ответить с цитированием Share this post Link to post Share on other sites
Pasha 111 0 Posted May 6, 2012 · Report post borman11, я тоже думал, что не придётся :) Помучился, но разобрался и сделал проект в MS Visual C++ Express (makefile project), прописал все пути до IarBuild. Всё компилируется, IntelliSense работает, лог построения в окне вывода отчёта появляется, при кликах на ошибках и предупреждениях на файлы исходного кода на нужные строки переходит. Пока доволен. Было бы неплохо ещё, чтобы ошибки сразу в Error List студии добавлялись, а не в Output Window, но и так тоже не плохо. Исправил даже баг с кривым отображением русских букв в логе. А отлаживаться буду в IAR'е значит, но это всё равно лучше, чем в IAR'овском редакторе писать. Quote Ответить с цитированием Share this post Link to post Share on other sites
Артём__ 0 Posted May 6, 2012 · Report post borman11, я тоже думал, что не придётся :) Помучился, но разобрался и сделал проект в MS Visual C++ Express (makefile project), прописал все пути до IarBuild. А что МК-специфичное в Preprocessor Definition прописывали? Периферия подсказывается? Quote Ответить с цитированием Share this post Link to post Share on other sites
Pasha 111 0 Posted May 6, 2012 · Report post _Артём_ Ничего не прописывал :) Создал "Проект, использующий файл 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.zip В файле IarBuild.bat нужно только на 9-й строке заменить путь до IarBuild.exe на ваш. Тогда в настройках путей в NMake в студии нужно указать всё тоже самое, только вместо "[путь до IarBuild.exe]\IarBuild.exe" писать "[путь до IarBuild.bat]\IarBuild.bat", сам IarBuild.bat можно положить куда угодно. Периферия подсказывается: правда я уже очень давно вот так напрямую к ней не обращался :) Quote Ответить с цитированием Share this post Link to post Share on other sites
VslavX 0 Posted May 6, 2012 · Report post borman11, я тоже думал, что не придётся :) Было бы неплохо ещё, чтобы ошибки сразу в Error List студии добавлялись, а не в Output Window, но и так тоже не плохо. Легко - пропускаете Output компилятора через Perl со скриптом - скрипт конвертирует сообщения об ошибках формата IAR-а в формат студии. Запускать компилятор из студии так: <путь и имя исполняемого файла компилятора> <параметры компилятора> 2>&1 | <исполняемый файл интерпретатора Perl> <имя файла скрипта> (угловые скобки, ессно, не пишем - ограничивают имена в примере) "2>&1" нужно чтобы перенаправить stderr компилятора в stdout, который поступит на вход Perl-а с указанным скриптом. Скрипт для MSVC2005 и IAR (пробовал от 3.x до 6.41) в приложении (переименуйте .txt в .pl - форум не дает аттачить скрипты с таким расширением) iar2vc.txt Quote Ответить с цитированием Share this post Link to post Share on other sites
Pasha 111 0 Posted May 6, 2012 · Report post VslavX Спасибо за скрипт! Никогда не понимал людей, пишущих на перле :) "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 ошибки :) Quote Ответить с цитированием Share this post Link to post Share on other sites
VslavX 0 Posted May 6, 2012 · Report post VslavX Спасибо за скрипт! Никогда не понимал людей, пишущих на перле :) Берется книжка типа "Перл за 24 часа" и такой скрипт пишется за 10 минут :). Очень уж мощная штука Perl для обработки всяких текстов. Если я правильно понял, то делает он не совсем это. IarBuild (только сейчас проверил) вообще ничего в stderr не выводит. А вот IarBuild может быть и не выводит, а компилятор который он запускает - вроде бы ругается исключительно в stderr. По крайней мере версии 4.x точно так делали, а в stdout был молчок - никаких ошибок. То же самое касается GCC - ругается об ошибках исключительно в stderr. Поэтому без перенаправления - ошибки фильтрующим скриптом не хаваются. если в качестве компилятора для студии прописать какой-нибудь .bat-файл, а в нём написать: Я использую сразу gmake - он многопоточную компиляцию поддерживает (ключик -j), на многоядерном процессоре выигрыш значительный - почти кратный числу ядер. то тогда в студии добавиться ошибка в Error List (строчка делает echo в stderr). Так что студия добавляет ошибки в Error List только если они пишутся в stderr. А строка "2>&1 | " копирует в stdout, то, что IarBuild выводит в свой stderr (чисто на всякий случай, как я понял), а потом результат всего вывода (оператор "|" считывает выходные данные одной команды и записывает их на вход другой команды) перенаправляется в перл скрипт (т.е. и выводы stdout и stderr). Хм, странно, вроде бы мой скрипт выводит именно в stdout, а не в stderr. Может быть в Студии-2010 что-то поменяли. У меня нет интерпретатора перл, и ставить его лень, щас на c# по быстрому парсер напишу и выведу в stderr ошибки :) Ну идею Вы поняли. Кстати, впервые такой фильтр-конвертор сообщений об ошибках еще в BC3.1 был прикручен - там были примеры проектов для таких фильтров и как их вкрутить в среду. Quote Ответить с цитированием Share this post Link to post Share on other sites