Warning: include(/volume1/web/cyberhost.biz/wp-content/plugins/jaster_cahce/cache/top-cache.php): failed to open stream: No such file or directory in /volume1/web/cyberhost.biz/index.php on line 9 Call Stack: 0.0000 356272 1. {main}() /volume1/web/cyberhost.biz/index.php:0 Warning: include(): Failed opening '/volume1/web/cyberhost.biz/wp-content/plugins/jaster_cahce/cache/top-cache.php' for inclusion (include_path='.:/usr/share/pear') in /volume1/web/cyberhost.biz/index.php on line 9 Call Stack: 0.0000 356272 1. {main}() /volume1/web/cyberhost.biz/index.php:0 Visual C++ for IoT Development: Прорыв или разочарование? | Хостинг за 90 р. от cyberhost.biz — платный хостинг
+7 993 930-19-90 suport@cyberhost.biz

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Warning: include(/volume1/web/cyberhost.biz/wp-content/plugins/jaster_cahce/cache/bottom-cache.php): failed to open stream: No such file or directory in /volume1/web/cyberhost.biz/index.php on line 13 Call Stack: 0.0000 356272 1. {main}() /volume1/web/cyberhost.biz/index.php:0 Warning: include(): Failed opening '/volume1/web/cyberhost.biz/wp-content/plugins/jaster_cahce/cache/bottom-cache.php' for inclusion (include_path='.:/usr/share/pear') in /volume1/web/cyberhost.biz/index.php on line 13 Call Stack: 0.0000 356272 1. {main}() /volume1/web/cyberhost.biz/index.php:0