- PVSM.RU - https://www.pvsm.ru -

Visual C++ for IoT Development: Прорыв или разочарование?

enter image description here

Как известно мир не стоит на месте и активно развивается. Особенно в сфере IT и конкретно разработки ПО. Самое трудное в этом деле это уследить за всеми новинками и выхватить наиболее ценные и полезные из них. Вот и я только недавно наткнулся на дополнение к Visual Studio под названием Visual C++ for IoT Development, которое существует уже почти год. Потенциально — очень полезная штука, но пока это больше яркое название, чем настоящее Visual C++ для IoT. Давайте разберемся почему.

Идея использовать Visual Studio при работе с мироконтроллерами посещает меня давно и регулярно. А в последнее время эта идея превратилась в практику. Все мои проекты давно плотно интегрированы с Visual Studio. Первое время я использовал ее просто как средство взаимодействия с системами контроля версий. Потом начал частично писать в ней код, а теперь еще и использую встроенную в нее систему Unit тестов. Но компиляция и отладка всегда оставались где-то за бортом.

Увидев заголовок Visual C++ for IoT Development, я подумал, что век мучений закончился! Хватит писать код в одном месте, а компилироать и отлаживать в другом постоянно переключаясь то туда, то сюда. Появилась надежда все делать в Visual Studio.

enter image description here

Данное расширение появилось еще в марте 2016 года. И отзывы о нем не самые хорошие. Видимо поэтому почти целый год оно оставалось в тени.

Так что же такое Visual C++ for IoT Development? Оказалось что это "побочный" продукт попыток подключить GDB Debugger [1] к Visual Studio.

Эта история началась [2] в 2014 году. Сначала в Visual Studio появилась возможность удаленной отладки С++ кода под Android. Через пол года была анонсирована [3] возможность удаленной отладки С++ кода уже просто под Linux системами. В ноябре 2015 появилась [4] Preview версия. Ну а сейчас дополнение для удаленной отладки кода на Linux из-под Visual Studio уже полностью доступно [5] и активно развивается. Последнее обновление было 22.12.2016. Об этом уже даже писали на хабре [6].

Причем тут IoT? А оказалось, что уже давным-давно существует проект под названием OpenOCD [7]. Полное его название Open On-Chip Debugger Free and Open On-Chip Debugging, In-System Programming and Boundary-Scan Testing. Смысл данного проекта заключается в том, что он является "единым" отладочным интерфейсом практически для любого микроконтроллера. Аппаратная ли система отладки или программная, внешний ли JTAG/SWD адаптер или он "размазан" на отладочной плате — ему все равно. На текущий момент OpenODC имеет конфигурационные файлы практически под все существующие отладочные средства. И унифицирует он все это как раз в GDB.

Выглядит это примерно так:

enter image description here

При этом открывается сокет по адресу localhost:3333. Соответственно это и есть GDB сервер, который позволяет выполнять удаленную отладку. К нему то и подключается Visual Studio.

В общем-то, это все. Больше Visual C++ for IoT Development ничего нового делать толком и не умеет. Да, там можно настроить NMake и все-таки сделать компиляцию в консольном режиме. И еще есть настройки IntelliSense. Но это все и так было в проектах Makefile.

enter image description here

На текущий момент разработчики протестировали все совместно с ARM GCC tools [8]. OpenOCD [7], pyOCD [9] и JTAG отладчиком Segger [10].

Чего бы хотелось от этого дополнения? Полноценной работы с ARM GCC так же как с обычными проектами, а не настраивать NMake. Тогда можно весь проект будет вести в Visual Studio, пользуясь всеми ее удобствами.

Причем технических проблем для этого нет. Мало того, такие попытки уже делались [11]. Даже есть коммерческие проекты — VisualGDB [12]. Почему это не сделает сама Microsoft — остается загадкой.

Подводя итоги, можно сказать, что Visual C++ for IoT Development это здорово и пользоваться им вполне можно. Но неудобно. Есть несколько сценариев и все они предполагают "костыли" в лучшем случае в виде NMake. Надеюсь, что это расширение не будет заброшено и будет так же активно развиваться, как и Visual C++ for Linux Development [6]. Хотя, так как последнее обновление было 31.03.2016, надежды могут быть и напрасны.

Автор: AlexandrSurkov

Источник [13]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/c-3/236396

Ссылки в тексте:

[1] GDB Debugger: https://ru.wikipedia.org/wiki/GNU_Debugger

[2] началась: https://blogs.msdn.microsoft.com/visualstudioalm/2014/11/12/debugging-c-code-on-android-with-visual-studio-2015/

[3] анонсирована: https://blogs.msdn.microsoft.com/vcblog/2015/04/29/debug-c-code-on-linux-from-visual-studio/

[4] появилась: https://blogs.msdn.microsoft.com/vcblog/2015/11/18/announcing-the-vs-gdb-debugger-extension/

[5] доступно: https://marketplace.visualstudio.com/items?itemName=VisualCPPTeam.VisualCforLinuxDevelopment

[6] писали на хабре: https://habrahabr.ru/company/microsoft/blog/319962/

[7] OpenOCD: http://openocd.org/

[8] ARM GCC tools: https://launchpad.net/gcc-arm-embedded

[9] pyOCD: https://github.com/mbedmicro/pyOCD

[10] Segger: https://www.segger.com/

[11] делались: https://habrahabr.ru/post/251795/

[12] VisualGDB: http://visualgdb.com/download/

[13] Источник: https://habrahabr.ru/post/320120/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best