С каждым днем компьютерные технологии все активнее проникают в нашу жизнь. Уже сегодня многие не мыслят своего существования без мобильного телефона или портативного цифрового музыкального проигрывателя. Никого уже не удивляет установленный на улице или в вестибюле метро банкомат с функцией выдачи наличных по кредитной карте. На стенах домов то и дело мелькают приемники кабельного или спутникового телевидения. Все больше фотолюбителей предпочитают цифровые фотокамеры. Что же объединяет все эти устройства? Ответ достаточно прост — все они содержат микропроцессор. При этом зачастую он достаточно производителен: всего несколько лет назад его вычислительная мощь показалась бы несбыточной мечтой большинству владельцев настольных компьютеров. Для оживления такого микропроцессора и выполнения возложенных на него функций необходимы операционная система и прикладная программа.
10 лет назад, на начальном этапе рынка встраиваемых интеллектуальных устройств, у производителя не было иного выхода, кроме как под каждое новое устройство заново разрабатывать специализированную операционную систему, жестко интегрированную с прикладной задачей, отвечающей за выполнение тех или иных функций. Такой подход, помимо временных затрат, требовал усилий целой команды высококвалифицированных программистов. Все это, в свою очередь, оборачивалось высокой себестоимостью разработки и, следовательно, высокой стоимостью готового продукта, что резко ограничивало число потенциальных потребителей. Несмотря на это, спрос на различные интеллектуальные устройства заметно возрастал. Решить проблемы стоимости и сроков разработки помогло появление специализированных операционных систем, предназначенных для разработки широкого спектра решений. Теперь разработчики смогли сосредоточиться на решении прикладных задач и реализации необходимых потребителям новых функций.
В 1996 г. корпорация Microsoft вышла на рынок со своей первой операционной системой для некомпьютерных интеллектуальных устройств Microsoft Windows CE 1.0. Идея Microsoft состояла в том, чтобы создать операционную систему, пригодную для широкого спектра задач, и при этом обеспечить разработчикам возможность использовать уже накопленные знания в разработке программ для компьютеров, работающих под управлением Microsoft Windows, за счет использования единого интерфейса программирования для всех систем. Таким образом была решена задача создания единой платформы для интеллектуальных устройств, прикладные задачи к которым могли бы разрабатывать программисты, имеющие опыт написания программ для настольных компьютеров. Было выполнено и другое немаловажное требование к платформе: в ней реализованы все новейшие достижения в области информационных технологий, таких как технологии Internet, беспроводные коммуникации, технологии цифровой звукозаписи и видео и многое другое. Все это позволило еще больше сократить стоимость и время разработки и, соответственно, создавать массовый высокотехнологичный продукт, применимый в различных областях.
В 1997 г. система (CE 2.0) стала компонентной, предназначенной для широкого спектра устройств, расширилась поддержка типов процессоров; затем вышло еще два небольших обновления (2.11 и 2.12), дополняющих функциональность операционной системы.
Вышедшая в 2000 г. версия системы (CE 3.0) содержала поддержку работы в реальном времени и современных мультимедийных технологий (DirectDraw, DirectShow, Windows Media Player).
Следующая версия системы (CE 4.0) вышла в 2001 г., в ней была реализована поддержка современных технологий, таких как Direct3D, UDFS, SOAP, расширенное управление питанием, поддержка SQL и т.д. Небольшие релизы (4.1 и 4.2) расширили доступную разработчикам функциональность, добавив поддержку просмотра файлов, профилей Bluetooth, IPv6, а также поддержку VoIP- телефонии, TFAT и .NET Compact Framework 1.0.
В 2005 г. вышла очередная версия системы (CE 5.0), которая предоставила разработчикам поддержку новых технологий (USB 2.0, SDIO, Windows Media 9, Internet Explorer 6), унифицированную систему сборки, драйверы и BSP производственного качества, с выделенной общей инфраструктурой разработки BSP/OAL, доступной разработчику. В ответ на требования современного рынка встраиваемых устройств в 2006 г. был выпущен пакет дополнений для сетевых мультимедиа устройств — Network Multimedia Feature Pack.
В конце прошлого года компания Microsoft выпустила новую версию своей основной операционной системы для встраиваемых применений — Windows Embedded CE 6.0. Это все та же 32-разрядная, многозадачная, многопотоковая, с вытесняющей многозадачностью и поддержкой реального времени, многоплатформенная (ARM, SH4, MIPS, x86) операционная система.
Что же появилось нового? Впервые за 10 лет существования претерпела значительные изменения архитектура операционной системы. Теперь каждый процесс имеет 2 Гбайт виртуальной памяти (раньше было 32 Мбайт), количество возможных одновременно запущенных процессов увеличилось до 32 тыс. (раньше было 32).
Зачем понадобились такие изменения? Несомненно, это ответ компании Microsoft на возрастающую потребность рынка бытовых электронных устройств. Предыдущая архитектура виртуальной памяти, безусловно, позволяла создавать приложения для бытовой и развлекательной электроники, и мы видим подтверждения тому в окружающей жизни, однако в определенных случаях требовалось все искусство разработчика, чтобы, работая с современными объемами мультимедийных данных, уместиться в ограниченном адресном пространстве процесса. Увеличение же максимально возможного количества одновременно запущенных процессов позволяет создавать самые современные многофункциональные устройства.
Была изменена не только архитектура виртуальной памяти, но и архитектура ядра системы. Ядро системы подверглось унификации. Ранее части ядра системы были реализованы в виде набора отдельных процессов, сейчас они загружаются в виде динамических библиотек (DLL) в пространство ядра. Такая архитектура в среднем на 40% повысила производительность системных вызовов. С изменением архитектуры появилась возможность загрузки драйверов непосредственно в адресное пространство ядра, при этом осталась возможность загружать драйверы в специальный пользовательский процесс. Причем таких хост-процессов может быть несколько.
Произошла унификация интерфейсов взаимодействия OAL (абстрагирование ядра от конкретной реализации процессора с его периферией) и ядра. Теперь это отдельные модули: ядро — kernel.dll, OAL — oal.exe (на завершающей стадии переименовывается в nk.exe).
Рассматривая изменения ядра в контексте приложений для бытовых электронных и развлекательных устройств, можно отметить, что возможность загружать драйверы в пространство ядра дает разработчику дополнительный выигрыш в производительности для мультимедиа-приложений. Разделение же частей ядра системы, предоставляемого компанией Microsoft и производителем оборудования, упрощает процедуру сервисного обслуживания устройств, что является не менее важным фактором для производителей бытовой и развлекательной электроники.
В поставку операционной системы включена технология CellCore — поддержка сетей сотовой связи, включая передачу голоса и данных, что расширяет список возможных сценариев использования устройств.
Создавая новую версию операционной системы, компания Microsoft позаботилась и об удобстве разработчиков. Средства разработки образов CE 6.0 теперь интегрированы в Visual Studio 2005. Интеграция с Visual Studio позволяет задействовать одну среду для разработки прикладных и системных программ. В поставке новый ARM- эмулятор устройства, интегрированный в Platform Builder, с доступным исходным кодом. Теперь и разработчикам встраиваемых устройств доступна раскраска синтаксиса исходного кода, интеллектуальное завершение ключевых слов, поиск определений и остальные возможности, знакомые разработчикам Visual Studio, но прежде недоступные в Platfrom Builder. В поставку также входят графический редактор реестра и утилита для просмотра собранных образов. С Visual Stuido на встраиваемых устройствах стали доступны усовершенствованные варианты библиотек CRT, ATL, MFC, WTL, а также новые компиляторы, на основе компиляторов Visual Studio, поддерживающие проверку безопасности времени исполнения. С появлением нового инструментария появилась возможность «посмертной отладки», то есть отладки в офлайновом режиме после сбоев. Менеджеры проектов несомненно оценят новую утилиту, определяющую необходимую лицензию времени исполнения с возможностью экспорта отчетов в HTML.
Часто, когда говорят о встраиваемых операционных системах, возникает вопрос о доступности исходного кода. Кроме того, нередко разработчики упрекают Microsoft в том, что исходный код недоступен. Это не соответствовало действительности и для предыдущей версии CE, но в новой версии компания Microsoft сделала еще один огромный шаг вперед.
В Windows Embedded CE 6.0 разработчики получили доступ к 100% исходного кода ядра. Общее же количество кода, поставляемого с CE 6.0, увеличилось на 56%: теперь доступно 3,9 млн. строчек кода. Например, доступна CE версия оболочки системы Explorer. Все это реализовано и в пробной версии Windows Embedded CE 6.0. Весь код доступен по новой лицензии Shared Source, которая позволяет при определенных условиях модифицировать поставляемый исходный код разработчикам устройств. С текстом лицензии можно ознакомиться на сайте компании Microsoft и/или при установке средств разработки CE 6.0.
Итак, Microsoft Windows Embedded CE позволяет быстро и эффективно разрабатывать инновационные встраиваемые решения, используя всю мощь предоставляемых функций и возможности средств разработки.
Пробные версии Microsoft Windows Embedded CE доступны для загрузки с сайта компании Microsoft и у локальных дистрибьюторов.
Станислав Павлов (stas@quarta.ru) — системный аналитик в компании «Кварта Технологии», к.ф.м.н., имеет сертификат MVP. Авторизованный тренер по Windows CE, Windows XP Embedded, единственный в России обладатель «черного пояса» (Technical Black Belt) по Windows CE и Windows XP Embedded