Введение 4
1. Постановка задачи 6
2. Обзор предметной области 7
2.1. Способы взаимодействия веб-приложения с системными
интерфейсами 7
2.1.1. Универсальные технологии 7
2.1.2. Google Chrome и Chromium 8
2.1.3. Mozilla Firefox 8
2.1.4. Microsoft IE 9
2.1.5. Вывод 9
2.2. Системы автоматической трансляции 9
2.2.1. CrossBridge 9
2.2.2. Mandreel 10
2.2.3. Emscripten 10
2.2.4. Cheerp 10
2.2.5. Вывод 11
2.3. Использование libusb прикладными
Linux-приложениями 12
2.4. Существующие решения 13
3. Описание решения 14
3.1. Портирование libusb для работы в браузере 14
3.2. Внедрение libusb в Emscripten 18
3.3. Демонстрационное приложение на базе mspdebug .... 19
Заключение 20
Список литературы 21
По мнению аналитического агентства Gartner [7], к 2020 году интернет вещей объединит 26 миллиардов устройств, а доход поставщиков продуктов и услуг рынка интернета вещей составит к этому времени 300 миллиардов долларов. При таком росте отрасли требуется все больше квалифицированных специалистов [4] для разработки решений, объединяющих программные комплексы высокого уровня и программное обеспечение встраиваемых систем.
Одна из основных сложностей с привлечением молодых специалистов в эту область - это высокий порог входа. Даже для самых элементарных экспериментов требуется как аппаратная, так и программная части. Если в последние годы аппаратные решения, позволяющими создавать достаточно сложные робототехнические системы или решения для интернета вещей без специализированных знаний и умений, активно развивались и получили достаточно широкое распространение. То в области программного обеспечения, для работы со встраиваемыми системами, принципиальных изменений нет. Это по прежнему отдельные прикладные приложения, требующие установки на компьютер. Что не всегда возможно, в силу ограничений прав пользователя, это часто встречается в образовательных учреждениях, либо ограничений операционных систем таких как Chrome OS [19].
С современным развитием веб-технологий становится возможным создавать удобные и простые веб-приложения для разработки программного обеспечения для встраиваемых систем, доступ к котором осуществляется с помощью браузера. Но задача доставки программного обеспечения до аппаратной платформы остается актуальной, так как веб-приложения не могут напрямую взаимодействовать с системными интерфейсами (такими как USB и последовательный порт), так как это запрещено политиками безопасности практически всех браузеров. Пользователю требуется скачать на компьютер прошивку и затем используя специализированное программное обеспечение загрузить ее на аппаратную платформу. При такой системе все преимущества веб-приложения не актуальны, так как все равно требуется установка каких-либо специальных приложений-загрузчиков. Таким образом возникает задача в реализации возможности доступа веб-приложения к системному интерфейсу USB, для автоматической загрузки прошивки на аппаратную платформу.
В рамках данной работы была реализована возможность автоматической трансляции прикладных Linux-приложений, использующих только системные вызовы USB, в веб-приложения. Были выполнены следующие задачи:
• портирована libusb для работы в браузере через Chrome USB API;
• внедрена портированная версия libusb в систему автоматической трансляции Emscripten;
• разработано демонстрационное веб-приложение на базе mspdebug.