- PVSM.RU - https://www.pvsm.ru -
Продолжаем цикл статей, посвященных системе сборки .Net Micro Framework [1]. Понятие "Система сборки проектов" всегда появляется в проектах, масштаб и сложность которых перерастает стандартные типы, имеющиеся в составе IDE [2]. А если подразумевается, что проект будет создаваться в нескольких средах или вообще не привязан к какой бы то ни было среде разработки, то без системы сборки проекта обойтись будет просто невозможно. Ярким примером таких проектов является .Net Micro Framework — реализация платформы Microsoft .NET для микроконтроллеров.
В прошлой статье [3] был обзор его системы сборки и особенностей ее реализации. Прежде чем двигаться дальше и изучать составные части дистрибутива, нужно познакомиться с инструментами, позволяющими это сделать. В этой статье будет сделан обзор программы PKStudio, которая позволяет удобно исследовать компоненты и связи внутри дистрибутива .Net Micro Framework, а также обладает другими интересными возможностями.
PKStuio [4] — это результат исследований .NetMF длиной боле года. Программа была написана моим коллегой Игорем Киселевым [5] и мной [6] в процессе изучения внутреннего устройства дистрибутива. Целью было научиться создавать "порты" .NetMF для разных плат. Документация для этого существует [7], но она не очень то и помогала.
Сначала PKStudio умела только визуализировать MSBuild компоненты и их связи. Но со временем она развивалась и превратилась в IDE [8], которая позволяет компилировать "порты", исследовать содержимое дистрибутива, преобразовывать "порты" в проекты для uVisuon Keil и многое другое. Программа была написана в далеком 2011 году [9] для версии .NetMF 4.2, но и сейчас не потеряла своей актуальности для версии 4.4 [10]
Любой, кто пытался выяснить, что находится внутри .Net Micro Framework, знает, что это не для слабонервных. Интересная и перспективная технология имеет множество сложных внутренних взаимосвязей. В процессе анализа репозитория родилась IDE, способная существенно упростить процесс изучения. Она умеет наглядно отображать компоненты и позволяет собирать "порты" из совокупности этих компонент.
В общем виде отображение компонент выглядит так:
Изучая составные части репозитория, можно двигаться от такх абстрактных понятий, как Features и Library Categories к библиотекам (Library) и исходным файлам:
Есть возможность построить "порт" и найти ошибки в коде, в случае их наличия:
Одной из самых важный функций является построение графов зависимостей компонент:
Она позволяет увидеть, каким образом собирается воедино разрозненный код.
Ну и еще одной важной функцией является конвертер в проекты Keil uVision. Он позволяет создать файл проекта для этой IDE, который будет содержать все необходимые исходники:
Скриншоты всех функций PKStudio можно посмотреть тут [11].
PKStudio имеет множество ссылок на .Net Micro Framework Interpreter. Поэтому, перед тем, как ей воспользоваться, нужно выполнить несколько шагов.
Внимательно прочитайте все пункты перед тем, как их выполнять.
Далее вам нужно собрать часть репозитория .Net Micro Framework Interpreter, чтобы получить несколько необходимых DLL-файлов.
Если все было сделано правильно, то сборка будет успешно завершена и вы сможете найти файл Microsoft.SPOT.Tasks.Internal.dll в папке BuildOutputpublicDebugServerdll.
Теперь можно открыть проект PKStudio. Но сделать это нужно с теми же переменными окружения, которые устанавливаются для .Net Micro Framework Interpreter.
Для этого в той же командной строке, где были установлены переменные окружения, нужно запустить Visual Studio 2015, выполнив devenv.exe (например, так "C:Program Files (x86)Microsoft Visual Studio 14.0Common7IDEdevenv.exe" вместе с кавычками)
Когда Visua Studio 2015 будет запущена, вы сможете открыть, собрать и запустить PKStudio.
Для дальнейшей работы уже не обязательно повторять все шаги. Важно понимать только, что для компиляции или запуска PKStudio нужно установить переменные окружения. Поэтому, если вы захотите что-то поменять в исходном коде, то нужно будет запустить из командной строки с установленными переменными окружения (как указано выше) Visual Studio. А, если нужно просто запустить PKStudio, то из командной строки можно сразу запускать pkstudio.exe.
Итак, репозитоий .NetMF состоит из нескольких типов компонент. В первую очередь это Features — компоненты, объединяющие основные функции "порта". Features "зависят" от Library Caterories — наборов библиотек, реализующих те или иные части Feature. Library Category могут быть реализованы одной или несколькими Library — библиотеками, содержащими сам исходный код. Причем, по идее, Library выполняют один и тот же функционал, но для разных случаев. Например, для разных процессоров. Вроде все просто и логично, но по каким-то причинам такие связи не всегда соблюдаются для всех компонентов.
PKStudio позволяет генерировать диаграммы, помогающие понять нюансы отношений между компонентами.
На диаграмме ниже видно раскрытие связей для Featue Debugger:
Тут все хорошо, кроме того, что две Library Category не имеют реализаций в виде Library.
А вот диаграмма связей для Features Hardware и Core
Видно, что Core реализуется напрямую несколькими Libraries без Library Category.
Кроме генерации диаграмм, PKStudio умеет отображать компоненты репозитория в виде древовидной структуры и их свойства.
Features:
Library Categories:
Libraries:
Кроме того, репозиторий содержит и другие типы компонент.
Assemblies:
Processors:
Ну и конечно "порты" именуемые Solutions. Они представляют собой объединение вышеуказанных компонент:
Кроме того, что описано выше, PKStudio еще имеет поиск по компонентам, верификацию связей между ними, конвертер проектов в Keil uVision, возможность компиляции Solution и т.д. Но о них будет рассказано в другой раз.
PKStudio — отличный инструмент для знакомства с репозиторием .NetMF. Однако он далек от совершенства. Поэтому, если вы столкнулись с какими-либо проблемами при работе с ним, пишите комментарии и создавайте issues [16] на GitHub.
Будем разбираться с .NetMF [1] и совершенствовать PKStudio [4] вместе!
Автор: AlexandrSurkov
Источник [17]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/150289
Ссылки в тексте:
[1] .Net Micro Framework: https://github.com/NETMF/netmf-interpreter
[2] IDE: https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8
[3] прошлой статье: https://geektimes.ru/post/274094/
[4] PKStuio: https://github.com/AlexandrSurkov/PKStudio
[5] Игорем Киселевым: https://github.com/igvas
[6] мной: https://github.com/AlexandrSurkov
[7] существует: https://netmf.codeplex.com/releases/view/56879
[8] IDE: https://github.com/AlexandrSurkov/PKStudio/wiki/What-is-PKStudio
[9] 2011 году: https://blogs.msdn.microsoft.com/netmfteam/2011/06/20/netmf-4-2-porting-kit-studio/
[10] актуальности для версии 4.4: https://github.com/AlexandrSurkov/PKStudio/wiki/How-to-build-PKStudio-with-.Net-Micro-Framework-interpreter-4.4
[11] тут: https://github.com/AlexandrSurkov/PKStudio/wiki/Screenshots
[12] этим: https://github.com/NETMF/netmf-interpreter/wiki/Getting%20Started
[13] здесь: https://geektimes.ru/post/266612/
[14] здесь: https://geektimes.ru/post/265986/
[15] binary tools: http://netmf.github.io/downloads/build-tools.zip
[16] issues: https://github.com/AlexandrSurkov/PKStudio/issues
[17] Источник: https://geektimes.ru/post/278042/
Нажмите здесь для печати.