Готовим микроконтроллерный GCC-тулчейн под вижуал студией.

Вообще говоря, я испытываю расовую ненависть к проприетарным средствам разработки, в особенности к продуктам MicroSoft. Однако, на просторах рунета нередко доводится встречать фанатов Visual Studio, желающих разрабатывать все в своей любимой среде — от десктопных приложений до прошивок микроконтроллеров.

Не вдаваясь в рассуждения о нетрадиционности ориентации (вот уж воистину скрестить ужа с ежом), попробуем реализовать связку M$V$ + GCC.

Итак, необходимые ингредиенты:

1. Собственно, установленная (надеюсь, честная ;) ) вижуал студия. У меня MSVS-2008.
2. GCC для микроконтроллерной архитектуры. Мой любимый MSPGCC.
3. Набор исходных текстов, готовый проект, шаблон. Необязательно, но желательно для ускорения процесса.

В ходе действа создадим новый проект в MSVS-2008, настроим его для работы с MSPGCC, подключим имеющиеся исходники и соберем.
Есть две неприятности, которые подстерегают нас на этом пути:

1. Проект будет makefile-based. То есть забудем про галочки, рюшечки и автоматические визарды, весь сценарий сборки пишем вручную.
2. Мелкософтовая среда и GCC имеют разные output — форматы компилятора. Что делает невозможным автоматический парсинг ошибок и предупреждений. Эту проблему можно решить с помощью скрипта преобразования.

В общем, если желание ещё не отпало, идем дальше.


А дальше нас ожидает калейдоскоп весёлых картинок.

Создаем новый проект.
«Файл»-«Создать»-«Проект из существующего кода»


Жмем «Далее»:

Указываем путь к нашему будущему проекту и даем ему (проекту) имя.
Далее…

Радиобатон в нижнее положение — ручной режим.

Далее… Идут настройки командных строк итд, сделаем это чуть позже. А пока — «Готово».

Что у нас получилось:

Как-то так.

Передохнули, попили чайку, идем дальше.
Правой кнопкой на названии проекта -> «Свойства».


Нас интересует более всего последний пункт — NMake.
В нем как раз будет самое интересное.

Заполняем поля в соответствии с картинкой.
Первую строку — не трогаем.
Вторая — предопределенные дефайны проекта. Как минимум, обозначение процессора. В AVR обычно туда же частоту кварца. Ну и тд в тжд.

Стоит подробнее остановиться на командных строках построения (или сборки, по православным канонам).
make all 2>&1 | C:\cygwin\bin\sed.exe -e 's/\(\w\+\):\([0-9]\+\):/\1(\2):/'
make rebuild 2>&1 | C:\cygwin\bin\sed.exe -e 's/\(\w\+\):\([0-9]\+\):/\1(\2):/'

Первая строка — команда сборки текущей конфигурации (Release, Debug)
По идее, правильнее было бы make $(ConfigurationName), но уже лень переписывать, пусть будет как есть.

Что здесь что?
make — вызов GNU make (который, естественно, должен быть в пределах видимости или расшарен в системной переменной Path)
all, rebuild (debug, release, etc) — цели, описанные в самописном makefile (который должен лежать в папке проекта)
А вот дальше — наше ноу-хау. Запускается текстовый скриптовой процессор sed, который с помощью скрипта (набор кракозябр в кавычках) будет трансформировать вывод GCC к удобоваримому для студии виду.

C:\cygwin\bin\sed.exe — путь к бинарнику sed.exe, можно взять из цигвина, можно поискать автономную версию.
's/\(\w\+\):\([0-9]\+\):/\1(\2):/' — собственно скрипт преобразования.
Идея скрипта почерпнута отсюда.

В общем-то, пока все. Да, забыл напомнить начальные условия: у нас есть готовый проект (или шаблон) для GCC с готовым файлом сборки makefile.

Ну и напоследок небольшая демка, для стимуляции слюноотделения :)

PS: И таки эта ваша студия — такая шляпа…
  • +2
  • 08 февраля 2012, 11:11
  • MrYuran
  • 1
Файлы в топике: MSVS_Demo.zip

Комментарии (9)

RSS свернуть / развернуть
А intellisense и «go to definition» в такой связке работают? Подозреваю, что да.
0
Конечно, это ж вообще никакого отношения к компилятору не имеет
0
А чем avr studio 5.1 не угодила?
0
  • avatar
  • a9d
  • 08 февраля 2012, 14:17
Тем что это не для AVR, а для всех проектов с использованием GCC.
0
А как с отладкой?
0
  • avatar
  • x893
  • 08 февраля 2012, 20:33
Отладка в GCC идет через GDB-OpenOCD, но прикручивать это хозяйство к студии — увольте.
Можно подсмотреть, наверно, как это в AVR Studio сделано, но это уж пусть студийные почитатели делают.
Лично мне удобнее работать в С:: В (что и делаю) или Eclipse (собираюсь переползать вместе с STM32).
Да и вообще, предпочитаю отладку через терминал.
0
Там это сделано так, как и следует прикручивать тулчейны к студии — плагином.
0
Ну, если у кого-то из апологетов хватит радиуса кривизны рук, чтобы переточить плагин под общий случай, я буду только аплодировать. Я предложил колхозно-рабочий вариант.
Одно из преимуществ которого — независимость от оболочки в принципе.
То есть, я могу в консольке написать make all и собрать проект в голой степи без никаких надстроек и сред вообще. И по желанию подключить проект хоть к студии, хоть к кодеблоксу, хоть к эклипсу за несколько минут.
0
Есть ли в студии возможность добавить папку с исходниками? То есть аналог Linked folder эклипсы.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.