Windows Embedded CE 6.0 R2. Практическое руководство

1,926 190 30MB

Russian Pages 337

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Windows Embedded CE 6.0 R2. Практическое руководство

  • Commentary
  • decrypted from DC89D2AF73B074EAD59ED6374AE8F0B7 source file
Citation preview

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Павел Белевский

Станислав Павлов - технический директор компании «Кварта Технологии», к.ф.м.н., авторизованный тренер по Windows Embedded CE и Windows XP Embedded, обладатель «черного пояса» по Windows Embedded. С 2005 года имеет почетный статус Microsoft Most Valuable Professional в области Windows Embedded. В 2009 году его работа по продвижению технологий Microsoft была оценена званием Microsoft Regional Director.

При работе над книгой «Введение в Windows Embedded CE 6.0» мы понимали, что разработчикам также необходима книга, которая будет рассказывать об операционной системе Embedded CE с практической стороны, позволяя на примерах выполнения практических задач и разработки реальных прототипов устройств увидеть операционную систему в действии. Еще тогда у нас сформировался план содержания новой книги и мы решили обязательно включить в книгу разработку на реальном «железе». В новой книге я выступил как вдохновитель, технический консультант и редактор. Павел, как автор, взял на себя всю тяжелую работу по реализации нашего представления об идеальном практическом руководстве для разработчика, и, хочу сказать, что ему это удалось. Итак, вы держите в руках результат – книгу «Windows Embedded CE 6.0. Практическое руководство». Успешной разработки! Станислав Павлов В 2008 году вышла книга «Введение в Windows Embedded CE 6.0» Авторы книги: Станислав Павлов, Павел Белевский. Книга освещает технологические аспекты разработки образов операционной системы для встраиваемых применений и содержит широкий спектр практической информации. Данная книга адресована всем, кто разрабатывает или планирует разработку устройств на основе Windows Embedded CE.

Интернет-магазин: www. alians-kniga.ru Книга - почтой: Россия, 123242, Москва, а/я 20 e-mail: [email protected] Оптовая продажа: «Альянс-книга». Тел./факс (495)258-91-95 e-mail: [email protected]

Практическое руководство

Павел Белевский - системный инженер по встраиваемым решениям компании «Кварта Технологии». Авторизированный тренер по Windows Embedded CE и Windows XP Embedded, обладатель «черного» пояса и почетного звания Microsoft MVP в области Windows Embedded. Окончил МГТУ им. Н.Э.Баумана по специальности инженер-разработчик приборов и систем стабилизации, навигации и ориентации. Последние пять лет работы в ИТ-сфере посвятил встраиваемым технологиям.

Павел Белевский

Практическое руководство

Windows Embedded CE 6.0

Windows Embedded CE 6.0

Windows Embedded CE 6.0 Практическое руководство

версия

R2 Поставляется с CD

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

П. В. Белевский

WINDOWS EMBEDDED CE 6.0 R2 ПРАКТИЧЕСКОЕ РУКОВОДСТВО

Москва

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

УДК ББК Б43

004.4 32.973.26-018.2

Белевский П. В. Б43

Windows Embedded CE 6.0 R2. Практическое руководство – М.: ДМК Пресс. – 336 с., ил. ISBN 978-5-94074-571-6 Книга является практическим руководством по разработке образов ОС и приложений для Windows Embedded CE и содержит упражнения для выполнения на эмуляторе или аппаратной платформе. Книга создана в помощь разработчикам встраиваемых систем Windows и нацелена на ознакомление со средой разработки, понимание архитектуры системы и решение задач при разработке устройств на базе Windows Embedded CE. Для получения цельного представления о Windows Embedded CE рекомендуется также прочесть книгу «Введение в Windows Embedded CE 6.0 R2», авторов Станислава Павлова и Павла Белевского, вышедшую в 2008 году. УДК 004.4 ББК 32.973.26-018.2 Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги.

Белевский Павел Викторович Windows Embedded CE 6.0 R2 Практическое руководство Главный редактор Мовчан Д. А. [email protected] Корректор Половиченко Т. И. Верстка Старцевой Е. М. Дизайн обложки Коларькова Н. Ю. Гарнитура «Петербург». Печать офсетная. Усл. печ. л. 12. Тираж 1000 экз. № Web-сайт издательства: www.dmk-press.ru Internet-магазин: www.alians-kniga.ru

ISBN 978-5-94074-571-6

© Кварта Технологии © Оформление, издание, ДМК Пресс

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Содержание Рецензии .............................................................................. 6 От автора .............................................................................. 8 Введение ............................................................................ 10 Терминология .................................................................... 12 Структура книги ................................................................. 12 Описание аппаратных платформ .......................................... 15 Freescale i.MX31 PDK ......................................................... 15 Advantech ARK-1370 .......................................................... 17 Знакомство со средой разработки .................................. 19 Установка средств разработки ............................................. 19 Установка BSP Freescale i.MX31 PDK ...................................... 20 Установка BSP Advantech ARK-1370 ....................................... 23 Интерфейс средств разработки............................................ 24 Главное меню .................................................................. 25 Панели инструментов ........................................................ 25 Панели с иерархическими представлениями ............................ 26 Редактор файлов .............................................................. 27 Окно Output..................................................................... 27 Создание образа операционной системы .............................. 27 Клонирование BSP ............................................................ 28 Создание проекта ............................................................. 31 Добавление компонентов.................................................... 35 Настройка параметров проекта ............................................ 37 Сборка .......................................................................... 38 Запуск образа операционной системы .................................. 39 Настройка соединения с эмулятором ..................................... 40 Настройка соединения с Freescale i.MX31 PDK .......................... 41 Настройка соединения с Advantech ARK-1370 ........................... 49 Запуск образа на целевом устройстве .................................... 54 Создание подпроектов ........................................................ 54 Создание подпроекта приложения......................................... 54 Настройки подпроекта ....................................................... 56 Сборка и запуск приложения ................................................ 57 Основы отладки ................................................................. 58 Точки останова ................................................................ 60 Call Stack и другие окна отладки ............................................ 61 Remote Tools ................................................................... 62 Установка cредств разработки ............................................. 21 Интерфейс cредств разработки............................................ 23 3

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Содержание

Архитектура системы в примерах .................................... 69 Виртуальная память ............................................................ 70 Структура виртуальной памяти процесса ................................. 71 Куча .............................................................................. 74 Отображаемые в память файлы ............................................ 88 Планировщик ..................................................................... 93 Квант исполнения и приоритет ............................................. 93 Инверсия приоритетов ..................................................... 100 Объекты синхронизации .................................................... 104 Защищенные функции ..................................................... 104 Дескриптор потока .......................................................... 105 Критическая секция......................................................... 107 События....................................................................... 111 Мьютексы ..................................................................... 119 Семафоры .................................................................... 123 Очередь сообщений точка-точка ......................................... 127 Прерывания ..................................................................... 131 Разработка кода платформы .......................................... 134 Структура BSP ................................................................. 134 BSP Freescale i.MX31 PDK.................................................. 136 BSP Advantech ARK-1370................................................... 140 Создание потокового драйвера .......................................... 141 Создание шаблона .......................................................... 141 Отладочные зоны............................................................ 151 Реализация функционала .................................................. 152 Управление питанием ...................................................... 159 Взаимодействие с устройством .......................................... 162 Интеграция драйвера в BSP ............................................... 165 Доработка BSP Freescale i.MX31 PDK .................................. 171 Реализация поддержки утилиты ILTiming ............................... 172 Доработка BSP Advantech ARK-1370.................................... 177 Поддержка сетевого контроллера в KITL ................................ 177 Загрузка образа с локального накопителя .............................. 182 Разработка устройств ..................................................... 186 Тонкий клиент .................................................................. 186 Создание дизайна тонкого клиента ...................................... 187 Настройка параметров дисплея ......................................... 191 Подготовка загрузочного диска .......................................... 198 Определение типа лицензии .............................................. 199 Дополнительные требования ............................................. 200 Навигационное устройство ................................................ 200 Компоновка образа навигатора .......................................... 201 Размещение образа на устройстве ...................................... 207 4

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Содержание Определение типа лицензии .............................................. Экспорт SDK ................................................................. Компонентизация приложения ...........................................

210 210 215 VoIP-телефон..................................................................218 Создание дизайна .......................................................... 219 Модификация пользовательского интерфейса ........................ 220 Тестирование работы телефона .......................................... 228 Контроллер ..................................................................... 234 Компоновка образа ......................................................... 235 Добавление компонентов ADOCE ........................................ 239 Создание подпроекта на управляемом коде ........................... 241 Тестовый запуск образа контроллера ................................... 245 Разработка и внедрение приложений ............................ 249 Настройка соединения с устройством ................................. 251 Соединение с устройством по ActiveSync............................... 251 Соединение с устройством без поддержки ActiveSync ............... 254 Разработка приложений на «native»-коде ............................. 257 Установка SDK навигатора ................................................ 257 Создание проекта приложения ........................................... 262 Использование GPS ID API ................................................. 266 Location Framework API ..................................................... 273 Разработка приложений на управляемом коде ..................... 279 Создание проекта приложения и его реализация ..................... 279 Проверка работы приложения ............................................ 286 Разработка Web-приложений ............................................. 287 Создание Web-приложения ............................................... 288 Запуск Web-приложения на устройстве ................................. 291 Внедрение приложений ..................................................... 294 Решение проблем, связанных с функциональностью системы ..... 295 Тестирование устройств ................................................. 302 Тестирование реального времени....................................... 302 Утилита ILTiming ............................................................. 302 Утилита OSBench ............................................................ 307 Возможности по расширению пакета тестирования CETK ...... 311 Добавление теста в инфраструктуру пакета CETK .................... 312 Запуск теста для соединения по последовательному порту ......... 315 Разработка библиотеки тестирования .................................. 319 Дополнения ...................................................................... 327 Установка и настройка эмулятора последовательного порта .... 327 Глоссарий ......................................................................... 332 Литература и информационные ресурсы ...................... 336 5

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Рецензии Учитывая стремительный рост популярности встраиваемых решений Microsoft в России и СНГ, все большее число разработчиков нуждаются в качественной литературе по относительно новым для нашего рынка технологиям. Выпуск «Windows Embedded CE 6.0. Практическое руководство» является ожидаемым продолжением уникальной книги «Введение в Windows Embedded CE 6.0», изданной также Microsoft Press за рубежом. Данное продолжение будет полезно тем, кому уже сейчас необходимо приступить к практической реализации знаний полученных из первой части. Дмитрий Халин, Директор департамента стратегических технологий, Майкрософт Россия

Книга «Windows Embedded CE 6.0. Практическое руководство» является первым русскоязычным трудом, где в простой форме, на жизненных примерах рассказывается о работе с этой операционной системой. Несмотря на небольшой объем, книга охватывает широкий спектр вопросов, – от среды разработки и основных понятий до технологии создания функционально законченных устройств на основе Windows CE 6.0. В ходе повествования упоминаются многие неочевидные, приходящие с опытом, «хитрости», позволяющие значительно ускорить процесс разработки. В книге огромное количество «упражнений», которые помогают читателю не только увидеть изнутри устройство этой операционной системы, но и приобрести ценные навыки. По нашему мнению, задачу по начальному знакомству читателя с Windows CE 6.0 книга выполняет на «отлично», а необычный формат изложения материала делает ее полезной не только для новичков, но и для искушенных разработчиков как системного, так и прикладного программного обеспечения. Кругляк Константин Начальник технического отдела ПРОСОФТ

6

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Рецензии

Данная книга является второй по счету в цикле книг на русском языке от компании «Кварта Технологии», посвященных новой версии операционной системы Windows CE 6.0. Обе книги, как единый методический материал, не только отвечают на наиболее часто встречающиеся вопросы при начале работы с ОС, но также дают возможность освоить весь инструментарий, методы работы с программными модулями ОС, драйверами процессорных платформ и базовые навыки программирования собственных приложений. Особая ценность книги «Windows Embedded CE 6.0. Практические работы» состоит в том, что все упражнения выполнены на реальном «железе» и учитывает все особенности и нюансы, которые могут возникнуть при разработке образа. Использование платформ Freescale при работе с данной книгой не случайно. Компании являются давними партнерами и преследуют одну и ту же цель, а именно – сделать работу со встраиваемыми системами максимально простой и удобной. Новая книга это плод данного партнерства, который и призван ответить на такие вопросы как: с чего начать при работы с новой аппаратной платформой, что такое BSP и что в него входит, как работать с BSP и модифицировать его, портировать драйвера и приложения, как собирать и запускать образы ОС и т.п. Михаил Соколов Field Application Engineer, Freescale Semiconductor

7

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

От автора Мое знакомство со встраиваемыми технологиями произошло в 2004 году – это был проект по разработке тонкого клиента в компании «Клондайк Компьютерс». Причем параллельно рассматривались решения как на Linux, так и на Windows Embedded. Прототип тонкого клиента на Windows Embedded, тогда еще Windows CE 4.2 .NET, был создан с нуля в достаточно короткие сроки, благодаря чему предпочтение было отдано системе на базе CE. В рамках этого проекта состоялось несколько встреч с техническими специалистами компании «Кварта Технологии», подстегнувших интерес к встраиваемым технологиям, который впоследствии перерос в плодотворную работу в области Windows Embedded уже в качестве сотрудника компании. Весь накопленный за эти годы опыт в области Windows Embedded, и не только, нашел свое отражение книге. Тем не менее, было бы несправедливо умолчать о людях, благодаря которым эта книга вышла в свет. Возвращаясь к истокам моего профессионального пути в области ИТ, хочу выразить свою признательность, за полученный в ходе совместной работы ценный опыт, Сергею Рюжину, являвшемуся на момент моего знакомства со встраиваемыми технологиями техническим директором компании «Клондайк Компьютерс». Ключевую роль в дальнейшей карьере на поприще Windows Embedded сыграл Тарас Демьянков – генеральный директор компании «Кварта Технологии». В свое время Тарас Валерьевич проявил доверие и принял в ряды компании практически начинающего на тот момент разработчика, а также, что немаловажно, создал все необходимые условия для дальнейшего профессионального роста. К сожалению, по воле судьбы, мое знакомство с Тарасом Валерьевичем длилось недолго – в 2008 году жизнь этого выдающегося человека внезапно оборвалась. Говоря о собственном опыте в области Windows Embedded, в первую очередь выражаю благодарность коллеге и, де-факто, гуру в области ИТ, которая ограничивается далеко не только Windows Embedded и Windows Mobile – Станиславу Павлову. 8

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

От автора

Именно Станислав всячески способствовал моему становлению как разработчика Windows Embedded. Ему же принадлежит первоначальная идея книги, которую вы держите в руках, а его советы в процессе написания книги оказались просто незаменимы. Также хочу отметить вклад Арсена Погосяна, Натальи Коларьковой и всех коллег по работе в компании «Кварта Технологии», которые тем или иным образом приняли участие в подготовке книги. Арсен выступил отличным «тыловиком», взяв на себя вопросы по взаимодействию с производителями используемых аппаратных платформ и издательством, а Наталья разработала дизайн книги и диска с материалами. Отдельное «спасибо» Михаилу Соколову из компании Freescale и представителям компании Advantech, Наталье Виноградовой и Тони Лин (Tony Lin), за оказанную техническую поддержку по используемым в книге аппаратным платформам. Не могу не поблагодарить участников интернет-форума по встраиваемым ОС, а также различных встреч и конференций за высказанные в ходе общения интересные идеи, которые были полезны при работе над книгой. Более того, книга создавалась с учетом пожеланий и интересов этих людей, по сути, являющихся потенциальными читателями. От себя лишь хочу выразить надежду, что книга будет полезна разработчикам и поможет решить поставленные задачи. Спасибо! Павел Белевский. апрель 2009 г.

9

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Введение В мире в целом и в России в частности идет непрерывная экспансия цифровых технологий в различные отрасли и сферы деятельности. Причем в большинстве задач не требуется универсальность настольной системы. С другой стороны, устройства становятся все более компактными, функциональными и интеллектуальными. Одной из последних тенденций в развитии устройств является их ориентированность на предоставление услуг не только пользователю, но и другим устройствам. Например, представим магазин с широким ассортиментом товаров и обширными торговыми площадями. Все товары или группы товаров снабжены радиометками (RFID). В каждом отделе установлены контроллеры, считывающие показания с RFID и обменивающиеся информацией о наличии и расположении товара. В торговом зале установлены панели, с помощью которых покупатель может выполнить запрос к контроллерам и определить цену, количество в наличии и местоположение интересующего товара. Кроме того, покупателям могут предоставляться персональные устройства в формате КПК, которые используются не только для поиска товара, но и, например, для оценки полной стоимости приобретенных товаров, наиболее свободной кассы для оплаты покупок и пр. Сюда еще можно добавить систему для определения несоответствия расположения товара и отдела, в котором он находится в данный момент и много других интересных и полезных решений. Для любого из приведенных в примере устройств не требуется функциональность настольной операционной системы, более того, для некоторых из них это просто не удастся в виду ограниченных ресурсов и производительности. С другой стороны, это достаточно функциональные устройства, в которых задействованы широкие возможности по коммуникациям (RFID, WiFi) и предоставлению информации (Web, сенсорный экран). В свою очередь реализация подобных устройств без готовой системы, которая предоставляла бы базовые возможности по работе с WiFi, Web и т.д., является сложной задачей, требующей значительных затрат на разработку. Данную проблему 10

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Введение

усугубляет наличие широкого спектра аппаратных платформ на базе разнообразных процессорных архитектур. Таким образом, для эффективного цикла разработки подобных устройств необходима компактная операционная система с широкими коммуникативными возможностями, обеспечивающая поддержку различных процессорных архитектур и, в ряде случаев, реального времени. Одной таких систем является Windows Embedded CE 6.0, практическому знакомству с которой посвящена данная книга. Книга в первую очередь будет интересна разработчикам, осваивающим разработку устройств на базе Windows Embedded CE 6.0, разработчикам, уже достигшим успехов на данном поприще и желающим повысить свой профессиональный уровень, а также разработчикам приложений для устройств под управлением Windows Embedded CE 6.0. Поскольку материал книги затрагивает широкий класс вопросов, порой выходящих за рамки исключительно CE, то книга может оказаться полезной не только применительно к Windows Embedded CE 6.0, но также и в отношении других версий данного продукта или даже, в общем для систем, решающих подобные задачи. Данную книгу можно рассматривать как средство для практического закрепления материала книги «Введение в Windows Embedded CE 6.0 R2», так и независимо, в качестве руководства по решению различных задач, возникающих в ходе разработки устройств и приложений. Причем для начинающих разработчиков рекомендуется использовать совместно обе книги. Поскольку исходные файлы операционной системы Windows Embedded CE в подавляющем большинстве состоят из C/C++ кода, а также приведенные в ходе выполнения упражнений исходные тексты используют C/C++ и C# код, предполагается, что читатель знаком с данными языками программирования как минимум на уровне чтения исходного кода. Практические работы разработаны максимально универсальными, чтобы их можно было выполнить на любом оборудовании, в том числе и на эмуляторе из поставки Visual Studio. Прежде чем продолжить вводную часть, следует ознакомиться с основными понятиями, которые используются в книге. Полный перечень терминов приведен в Глоссарии, расположенном в конце книги.

11

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Введение

Терминология Станция разработки – ПК с установленными средствами разработки, на котором выполняется разработка образов ОС. Целевая платформа – устройство, для которого разрабатывается образ ОС. В частном случае это может быть эмулятор. Пакет аппаратной поддержки (BSP) – набор драйверов и библиотек, необходимых для запуска образа на целевой платформе. Образ времени исполнения – файл, являющийся конечным результатом сборки ОС и предназначенный для размещения на носителе целевой платформы. SDK – пакет для разработки ПО. Позволяет разрабатывать приложения для целевой платформы в Visual Studio 2005/2008 без использования средства для создания образа ОС – Platform Builder. Дерево сборки – иерархия директорий, обрабатываемая в процессе сборки образа системы. По умолчанию корнем дерева сборки является папка C:\WINCE600.

Структура книги Книга состоит из трех тематических частей. Первая часть посвящена знакомству со средой разработки Windows Embedded CE 6.0, которая представляет собой Visual Studio 2005 с установленным дополнением, Platform Builder. В ней приведены упражнения, связанные с выполнением типичных задач при разработке образа системы. Вторая часть содержит набор упражнений, позволяющих получить практическое представление об особенностях архитектуры системы. В рамках архитектуры системы рассмотрены организация и использование виртуальной памяти процесса, работа планировщика, возможности синхронизации работы процессов применительно к различным сценариям взаимодействия, а также наглядно рассмотрена обработка прерываний. Заключительная и самая большая часть книги, состоящая из четырех глав, посвящена разработке устройств. В общем случае цикл разработки устройства может быть представлен в виде схемы, приведенной ниже. Рассмотрение этапов, связанных с разработкой аппаратной платформы и производством конечных устройств, выходит за рамки данной 12

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Введение

книги. Решение остальных задач, таких как: доработка BSP (см. раздел «Терминология»), разработка образа операционной системы, сторонняя разработка ПО и тестирование, подробно освещено в соответствующих главах. Тем не менее, затрагивая проблему выбора аппаратной платформы для будущего устройства или демонстрационного образца, следует упомянуть об основном требовании, которое определяет успешность разработки. Это требование касается наличия соответствующей аппаратной поддержки для Windows 13

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Введение

Embedded CE 6.0, начиная с загрузчика образа системы на устройство и заканчивая драйверами и вспомогательными утилитами надлежащего качества. Таким образом, в первую очередь следует рассматривать аппаратные решения, для которых вся необходимая поддержка для разработки под Windows Embedded CE уже реализована производителем платформы или сторонним разработчиком. Подробнее о пакете аппаратной поддержки, его составе, особенностях реализации для конкретной платформы, а также примерах доработки BSP речь пойдет в главе «Разработка кода платформы». В главе «Разработка устройств» описаны этапы по созданию образа системы для четырех устройств: тонкого клиента, портативного навигационного устройства, VoIP-телефона и контроллера. Выбор типа устройств обусловлен позиционированием приведенных в книге аппаратных платформ и тенденциями на рынке встраиваемых устройств. В частности, новые возможности для построения встраиваемых устройств возникают в связи с запуском отечественной спутниковой системы позиционирования ГЛОНАСС. Также в главе по разработке устройств уделено внимание развертыванию образов на каждую из рассматриваемых аппаратных платформ. В следующей главе, посвященной разработке приложений для Windows Embedded CE 6.0, рассматриваются особенности подключения устройства к Visual Studio для отладки приложений и примеры разработки приложений с использованием «native»-кода и управляемого кода, а также Web-приложения для Web-сервера с поддержкой ASP. При разработке «native»-приложения раскрываются широкие возможности Windows Embedded CE 6.0 по использованию информации о местоположении, в качестве источников которой могут выступать не только GPS-приемники, но и Wi-Fi точки доступа. В упражнениях по разработке приложения на управляемом коде рассмотрено взаимодействие с SQL-сервером, запущенном на устройстве под управлением Windows Embedded CE 6.0. В главе «Тестирование устройств» приведены возможности по оценке характеристик работы устройства в режиме реального времени и примеры использования пакета CETK для запуска тестов, не входящих в стандартный набор, в том числе собственной разработки. Большинство приведенных в книге упражнений может быть выполнено на любой аппаратной платформе, при условии наличия BSP, или на эмуляторе. Тем не менее, ввиду особенностей каждой 14

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Введение

конкретной платформы, реализации BSP для нее и т.п., часть упражнений не представляется возможным выполнить без соответствующей адаптации. Поэтому некоторые упражнения были написаны специально для одной из рассматриваемых платформ, описание которых приведено далее.

Описание аппаратных платформ В книге рассмотрено использование эмулятора из поставки средств разработки и две аппаратные платформы: Freescale i.MX31 PDK и Advantech ARK-1370.

Freescale i.MX31 PDK Платформа Freescale i.MX31 PDK представляет собой комплект из трех плат: процессорного модуля, интерфейсного модуля и платы с отладочными портами, а также набора интерфейсных кабелей и блока питания. Процессорный модуль содержит собственно процессор, микросхемы оперативной памяти и микросхемы энергонезависимой памяти NAND-флеш. В интерфейсном модуле расположены следующие компоненты: сенсорный экран, 9-клавишная клавиатура, совмещенный Wi-Fi/Bluetooth модуль, два мини-USB разъема с поддержкой хоста и клиента, видео- и аудио-выход, проприетарный разъем для подключения GPS-модуля, камера, ZIFразъем для подключения жесткого диска производства компании Toshiba, 44-штырьковый разъем для подключения жестких дисков, разъем для SD-карт и разъем для подключения питания. Отладочная плата содержит следующие элементы: тумблер включения, разъем для подключения питания, набор светодиодов для индикации работы платы, разъем JTAG, набор DIP-переключателей для конфигурирования платы, последовательный порт, разъем RJ-45 для подключения к локальной сети. С подробным описанием компонентов платформы можно ознакомиться в сопроводительной документации. Конструкция плат позволяет комбинировать их двумя способами. 15

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Введение

Для демонстрации устройства с прошитым в NAND-флеш образом времени исполнения достаточно использовать процессорный и интерфейсный модуль. Для отладки образа необходимо соединить вместе все три модуля. Сводные характеристики платформы Freescale i.MX31 PDK приведены в таблице: Процессор

Ядро ARM1136 532 МГц

ОЗУ

128 МБ

ПЗУ

NAND-флеш 256МБ

Видео

Поддержка аппаратного ускорения Поддержка аппаратного кодирования видео

Экран

2,7" TFT, сенсорный

Камера

Цветная, с разрешением 2 Мп

Порты ввода/вывода

2 UART (распаян только один)

Поддержка устройств хранения данных

Контроллер SD-карт Контроллер IDE

USB

1 порт в режиме хоста 1 порт в режиме клиента

Сеть

100/10 Мб/с Ethernet-контроллер

Дополнительные возможности

FM-радио, акселерометр, клавиатура, JTAG, видео и аудиовыход и пр.

Благодаря производительному процессору и широким возможностям по работе с графикой и видео, Freescale i.MX31 PDK может 16

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Введение

быть использован для построения разнообразных мультимедийных устройств.

Advantech ARK-1370 Advantech ARK-1370 представляет собой законченное решение – безвентиляторный встраиваемый компьютер в ультракомпактном защищенном корпусе повышенной прочности. Он предназначен для задач, критичных к размерам оборудования и требующих низкого уровня энергопотребления. Электронная начинка компьютера находится в прочном защищенном корпусе, и поэтому ARK-1370 отлично подходит для работы в составе обособленных/автономных систем. Для его функционирования не требуется внешнего охлаждения. Наличие таких интерфейсов как: 24-битный LVDS, AC’97 аудио, сетевой, а также четырех USB-портов и двух последовательных и PC Card-слота позволяет компьютеру выполнять мультимедийные, контролирующие и коммуникативные функции, которые востребованы для решения широкого спектра задач. На передней панели выведены разъем питания, аналоговый и цифровой видеовыходы, аудиовыход, PCMCIA-слот, индикаторы и кнопка включения.

На задней панели расположены последовательные и USB-порты, разъем для подключения к локальной сети и разъем клавиатуры. Спецификация платформы Advantech ARK-1370: 17

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Введение

Процессор

Интегрированный AMD Geode LX800, 500 МГц

ОЗУ

1× 200-конт. SODIMM разъем, поддержка DDR-памяти объемом до 1 Гбайт

Графическая подсистема

Интегрированный в процессор контроллер Оптимизированная архитектура разделяемой памяти, поддержка кадрового буфера объемом до 64 Мбайт за счет системной памяти ЭЛТ режим: 1024 × 768 при 22 бит/пикс. (85 Гц), 1600 × 1200 при 16 бит/пикс ЖК/синхронный режим: 1024 × 768 при 16 бит/пикс (60 Гц)

Аудиоподсистема

Интегрированный в AMD Geode™ CS5536 аудио контроллер, стерео кодек AC’97 Усилитель с двойным выходом 2,2 Вт

Интерфейс Ethernet

Intel 82551QM, 10/100Base-T Ethernet

Поддержка PC Card

Интегрированный Ricon® R5C485 PC Card контроллер 1× внешний слот для PC Card, поддержка CardBus (Card-32) карт и 16-битных (PCMCIA 2.1/JEIDA4.2) карт, поддерживаемое питание +5 В и +3,3 В

USB

Интегрированный в AMD Geode CS5536 USB 2.0 контроллер 4 порта USB 2.0

Порты ввода/вывода

Интегрированный Winbond® W83627HF LPC Super I/O контроллер 2× RS-232/422/485 порта, настраиваемых в BIOS

Дисковая подсистема

1× внутренний разъем для карт CompactFlash® type I/II

18

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Знакомство со средой разработки Данная глава предназначена в первую очередь для начинающих разработчиков, тех, кто еще не знаком со средой разработки Windows Embedded CE, и позволяет получить общее представление о процессе создания образа операционной системы. Благодаря тому, что интерфейс средств разработки не претерпел концептуальных изменений, пользователи, знакомые с предыдущей версией Windows Embedded CE 5.0, смогут легко освоить новую версию. В главе приведены упражнения с пошаговым выполнением типичных действий, связанных с разработкой образа ОС.

Установка средств разработки Прежде чем приступить к установке средств разработки, убедитесь, что система соответствует некоторым подкрепленным на практике рекомендациям. Во-первых, в качестве операционной системы на станции разработки следует использовать английскую версию Windows XP Professional SP2 и Windows Vista Business. Второе важное замечание: не рекомендуется в одной системе использовать средства разработки Windows Embedded CE разных версий, иначе возможны проблемы с подключением к разрабатываемому устройству и эмулятору. Следование указанным рекомендациям позволит избежать некоторых проблем и сэкономить драгоценное время. Подробная инструкция по установке средств разработки находится в первой книге, в начале главы «Средства разработки операционной системы и приложений». Вкратце порядок установки следующий: • Microsoft Visual Studio 2005; • В случае Custom (настраиваемой) установки убедитесь, что выбран пункт «Smart Device Programmability» для языка Visual C++ и Visual C#. Данный пункт необходим для разработки приложений под Windows Embedded CE. • Документация MSDN; • Исправление .NET Compact Framework 2.0 SP1 для Microsoft Visual Studio 2005; 19

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Знакомство со средой разработки

• Windows Embedded CE 6.0 Platform Builder Plugin; • Выбрать пункт «Shared Sources», если необходимо иметь

исходный код ядра и системных компонентов, которые размещается в папке PRIVATE дерева сборки; • В дополнение к выбранному по умолчанию пункту «ARMV4I» выбрать архитектуры устройств, под которые планируется разработка. Например, в случае использования платформы Advantech ARK-1370 выбрать x86-платформу; • Пакет обновления SP1 для Microsoft Visual Studio 2005; • Пакет обновления SP1 для Platform Builder; • Пакет обновления Windows Embedded CE 6.0 R2 для Platform Builder; • Обновления для Platform Builder, вышедшие начиная с ноября 2007 года. Кроме того, для каждого устройства, под которое планируется разработка, необходимо установить пакет аппаратной поддержки – BSP. Назначение, структура, а также другие моменты, касающиеся BSP, рассмотрены в главе «Разработка кода платформы». Файлы установки BSP расположены на прилагаемом к книге диске в папке «02-Platforms\BSP».

Установка BSP Freescale i.MX31 PDK Запустить мастер установки BSP. В окне приветствия мастера нажать Next.

20

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Установка cредств разработки

В следующем окне мастера принять лицензионное соглашение и нажать кнопку Next.

На странице «Select Installation Folder», при необходимости изменить путь установки BSP и нажать Next.

21

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Знакомство со средой разработки

В завершающем окне мастера нажать Install.

По окончании процесса установки BSP нажать Finish.

22

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Установка cредств разработки

Установка BSP Advantech ARK-1370 Запустить мастер установки BSP. В окне приветствия мастера нажать Next.

На странице «Select Installation Folder», при необходимости изменить путь установки BSP и нажать Next.

23

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Знакомство со средой разработки

В следующем окне нажать Next для запуска процесса установки BSP.

По окончании процесса установки BSP нажать Close.

Интерфейс средств разработки Средства разработки Windows Embedded CE 6.0, в отличие от предыдущей версии, представляют собой дополнение (плагин) для Visual Studio 2005. Поскольку подробное описание интерфейса 24

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Интерфейс cредств разработки

Visual Studio 2005 выходит за рамки данной книги, то внимание будет акцентироваться лишь на моментах, касающихся непосредственно разработки для Windows Embedded CE. Интерфейс Visual Studio включает следующие элементы: главное меню, панели инструментов, панели с иерархическими представлениями, окно редактора файлов, окно вывода информации и другие вспомогательные окна и виды. Содержание главного меню, набор панелей и окон меняется в зависимости от текущего состояния среды разработки. Сразу после загрузки Visual Studio имеет ограниченный интерфейс и следует учесть, что некоторые из рассматриваемых ниже пунктов меню, панелей и окон доступны только после создания проекта операционной системы.

Главное меню Главное меню располагается в самой верхней части окна Visual Studio и включает несколько подменю. Подробнее остановимся на 8-ми из них, которые являются основными при разработке Windows Embedded CE. Подменю «File» содержит пункты для создания, открытия и сохранения проектов и отдельных файлов. В подменю «Edit» располагаются пункты, связанные с редактированием файлов, различными вариантами поиска по файлам и директориям и управлением закладками. Подменю «View» служит для показа окон и видов Visual Studio, а также перехода по закладкам. В подменю «Project» находятся пункты для создания подпроектов, SDK и настройки параметров проекта. В подменю «Build» сосредоточен инструментарий сборки образа и приложений. Подменю «Debug» содержит пункты, которые используются для отладки системы и приложений. В подменю «Target» выполняется настройка и запуск соединения с разрабатываемым устройством. Подменю «Tools» включает подменю «Platform Builder for CE 6.0», в котором расположены пункты для вызова дополнительных мастеров и утилит.

Панели инструментов Панели инструментов по умолчанию находятся в верхней части окна Visual Studio, под главным меню. Панели инструментов 25

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Знакомство со средой разработки

функционально повторяют часть пунктов главного меню и позволяют выполнять аналогичные действия одним щелчком мыши. Рассмотрим основные панели инструментов, которые могут оказаться удобными в процессе разработки. Standard Содержит кнопки для создания, открытия и сохранения файлов, выбора конфигурации, поиска текста в файле и отображения других панелей и окон. Target Данная панель дублирует вызов некоторых пунктов в подменю «Target» главного меню и предназначена для настройки и запуска образа времени исполнения на устройстве (эмуляторе или реальном целевом устройстве). Debug Панель содержит кнопки для вызова действий по отладке разрабатываемого образа и приложений.

Панели с иерархическими представлениями Панели с иерархическими представлениями по умолчанию сгруппированы в одну панель и находятся в левой части окна Visual Studio. Переключение между сгруппированными представлениями выполняется при помощи закладок в нижней части панели. Solution Explorer Панель Solution Explorer содержит иерархическое дерево исходных и конфигурационных файлов операционной системы и добавленных подпроектов. Корневой элемент дерева представляет дизайн системы в целом и включает следующие элементы: • :\WINCE600 – содержит дерево сборки в соответствии с содержимым одноименной директории; • Parameter Files – конфигурационные файлы проекта ОС; • SDKs – содержит пакеты для разработчиков ПО; • Subprojects – содержит подпроекты, добавленные в дизайн операционной системы. 26

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Создание образа операционной системы

Catalog Items View Указанная панель содержит дерево компонентов операционной системы. Компоненты, включенные в состав операционной системы, отмечаются квадратом либо галочкой. Квадратом отмечаются компоненты, которые были добавлены при разрешении зависимостей и не могут быть удалены до тех пор, пока включены от них зависящие компоненты. В верхней части панели Catalog Items расположены элементы интерфейса для фильтрации и поиска компонентов. Class View Стандартная панель Visual Studio для навигации и редактирования исходного кода подпроектов, добавленных в дизайн операционной системы. В панели Solution Explorer представлены файлы, составляющие подпроект, в Class View представлены элементы языка программирования: классы, процедуры, переменные и т.д.

Редактор файлов Редактор файлов занимает центральную часть окна Visual Studio. Вид редактора файлов меняется в зависимости от типа редактируемого файла. Например, для исходных и заголовочных файлов это текстовый редактор с выделением ключевых слов языка C и типов данных. Для файлов реестра существует два варианта отображения: в виде иерархического дерева (аналогично стандартному редактору реестра Windows) либо простого текста.

Окно Output Диагностическая информация в процессе сборки и отладки образа операционной системы выводится в окно Output, расположенное по умолчанию в нижней части окна Visual Studio.

Создание образа операционной системы В процессе разработки образа операционной системы отправной точкой является создание дизайна операционной системы. Во время создания дизайна ОС разработчик указывает аппаратную 27

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Знакомство со средой разработки

платформу, для которой будет вестись разработка, а также тип разрабатываемого устройства. Аппаратные платформы представлены соответствующими BSP. В случае, если используется BSP из поставки и планируется его модификация, рекомендуется перед созданием проекта выполнить клонирование BSP. Эта дополнительная процедура позволит сохранить внесенные в BSP изменения после установки очередных обновлений для средств разработки.

Клонирование BSP Под клонированием BSP подразумевается создание копии BSP с соответствующей настройкой конфигурационных файлов. Клонирование можно выполнить вручную, но быстрее, а значит, удобнее это делать при помощи мастера. В следующем упражнении выполняется клонирование BSP эмулятора. Для других BSP, в том числе установленных дополнительно, процедура аналогична. В случае использования платформы Freescale i.MX31 PDK и доступных на момент публикации книги версий BSP (R13 и R14), для успешного клонирования BSP необходимо предварительно откорректировать файл каталога (подробнее использование файла каталога рассматривается в главе «Разработка кода платформы» в разделе «Создание потокового драйвера» и разделе «Навигационное устройство» главы «Разработка устройств»). Упражнение 1.1. Подготовка BSP Freescale i.MX31 Редактирование файла можно выполнить в любом текстовом редакторе. Например, при помощи Visual Studio, где реализованы поиск и замена с использованием регулярных выражений. Модифицированный файл каталога для BSP версии R14 расположен на диске с материалами в папке BSP\Freescale\Catalog. 1. Открыть файл каталога, расположенный в директории

\WINCE600\PLATFORM\iMX313DS\CATALOG, выбрав в главном меню Visual Studio пункт File, затем Open и далее пункт File. В диалоговом окне Open File выбрать файл каталога и изменить редактор по умолчанию, нажав кнопку со стрелкой справа от кнопки Open и выбрав пункт Open 28

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Создание образа операционной системы

With. Далее в появившемся диалоговом окне выбрать XML Editor. 2. Открыть окно поиска и замены, выбрав в главном меню Edit, затем подменю Find and Replace и далее пункт Quick Replace или нажав комбинацию клавиш . В окне Find and Replace раскрыть раздел Find Options, поставить галочку Use выбрать в списке ниже пункт Regular Expressions. Далее в поле Find What ввести регулярное выражение: \:{:z["= ucPCIMaxDeviceNumber) ? 0 : PCIWriteBusData (BusNumber, slotNumber.u.bits.DeviceNumber, slotNumber.u.bits.FunctionNumber,

Buffer,

Offset,

Length);

}

181

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка кода платформы

9. Скопировать в папку «\WINCE600\PLATFORM\\SRC\KITL» файл «\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\EDBGFRMT\format.c». 10. Скопировать папку с сетевой библиотекой из обновления «\PLATFORM\COMMON\LIB» в директорию «\WINCE600\PLATFORM\\SRC\ KITL». 11. Открыть sources-файл библиотеки KITL, выполнив двойной щелчок мыши в панели Solution Explorer на папке «PLATFORM\\SRC\KITL». 12. В sources-файле добавить в список исходных файлов SOURCES файл format.c: SOURCES=\ format.c \ globals.c \

Добавить в список статических библиотек сетевую библиотеку с поддержкой адаптера, установленного на устройстве: TARGETLIBS = \ lib\$(_CPUDEPPATH)\825xxdbg.lib \

и указать сборку с модифицированной библиотекой oal_kitl_x86.lib, исправив путь с «$(_PLATCOMMONLIB)» на «$(_TARGETPLATROOT)\lib»: $(_TARGETPLATROOT)\LIB\$(_CPUDEPPATH)\oal_kitl_x86.lib \

13. Открыть добавленный исходный файл format.c и удалить функции inet_ntoa и inet_addr, NKDbgPrintfW, OutputDebugStringW которые находятся к конце. 14. На этом модификация завершена. Чтобы изменения вступили в силу, необходимо заново собрать BSP.

Загрузка образа с локального накопителя В поставке Windows Embedded CE 6.0 идет загрузчик образа, использующий лишь функции BIOS, в отличие от loadcepc, для запуска которого необходимо наличие установленной MS-DOS. BIOSзагрузчик поддерживает следующие файловые системы: FAT12, 182

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Доработка BSP Advantech ARK-1370

FAT16, FAT32 и ExFAT. Предсобранная версия загрузчика, расположенная в папке «\WINCE600\PLATFORM\CEPC\SRC\ BOOTLOADER\BIOSLOADER\DISKIMAGES\SETUPDISK» является устаревшей и в ряде случае не работает. Для сборки BIOS-загрузчика необходимо внести некоторые изменения в конфигурационные файлы, поэтому скопируем код загрузчика в папку BSP. Упражнение 3.2 1. Скопировать директорию «\WINCE600\PLATFORM\ CEPC\SRC\BOOTLOADER\BIOSLOADER» в папку «\WINCE600\PLATFORM\\SRC». Далее модификации производить в скопированной папке. 2. Удалить или переименовать файл sources в папке «\WINCE600\PLATFORM\\SRC\BIOSLOADER\ LOADER». В данной директории одновременно находятся dirs- и sources- файлы, что приводит к ошибке.

3. Добавить в sources.cmn файл, расположенный в папке BSP (\WINCE600\PLATFORM\), установку переменной _PLATLIB, указывающую на размещение библиотек, полученных в ходе сборки BSP: _PLATLIB=$(_TARGETPLATROOT)\lib

4. Модифицировать конфигурационный файл boot.bib загрузчика для FAT16, расположенный в папке «\WINCE600\ PLATFORM\\SRC\BIOSLOADER\LOADER\ FIXED\FAT16», исправив в самом конце путь до файла bldr_fat16.exe: nk.exe $(_TARGETPLATROOT)\target\$(_TGTCPU)\$(WINCEDEBUG)\ bldr_fat16.exe

183

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка кода платформы

5. Также исправить пакетный файл makebldr.bat, находящийся в той же директории: romimage boot.bib del bldr copy %_TARGETPLATROOT%\target\%_TGTCPU%\%WINCEDEBUG%\bldr.nb0 bldr debug bldr < fixjmp.scr copy bldr %_FLATRELEASEDIR%\bldr_fat16

6. Повторить шаги 5, 6 для загрузчиков ExFAT и FAT32. 7. Не стоит включать папку BIOSLOADER в процесс сборки BSP, поскольку полученные при ее сборки файлы не используются в образе системы. Для сборки загрузчика следует в панели Solution Explorer щелкнуть правой кнопкой мыши на папке «BIOSLOADER (excluded from build)» и выбрать в контекстном меню пункт Build:

8. Чтобы получить окончательную версию загрузчика, готовую к размещению на диске, необходимо из командной строки запустить пакетный файл makebldr.bat, расположенный в папке загрузчика соответствующей файловой системы. Результат выполнения пакетного файла – файл bldr_xxxx, расположенный в плоской директории сборки дизайна ОС (\WINCE600\ OSDesign\\\RelDir\), 184

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Доработка BSP Advantech ARK-1370

где xxxx соответствует файловой системе, для которой предназначен загрузчик. 9. Для подготовки дисков с использованием BIOS-загрузчика понадобится загрузочная дискета. Готовый образ дискеты setupdisk.144 лежит в папке «\WINCE600\PLATFORM\ \SRC\BIOSLOADER\DISKIMAGES». Либо, если уже есть загрузочная дискета, нужно скопировать на нее содержимое папки «\WINCE600\PLATFORM\\ SRC\BIOSLOADER\SETUPDISK». 10. Заменить файл загрузчика bldr на файл, полученный в шаге 8, в соответствии с файловой системой, под которую будет отформатирован целевой диск. Установка и практическое использование BIOS-загрузчика будут рассмотрены в главе «Разработка устройств» в разделе, посвященном построению тонкого клиента.

185

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка устройств В главе описаны этапы разработки четырех устройств: тонкого клиента, портативного навигационного устройства, VoIP-телефона контроллера. Каждое из устройств обладает характерными особенностями, позволяющими сориентироваться при выборе платформы для разработки. В случае тонкого клиента, как правило, необходимо обеспечить максимальную совместимость с доступной ериферией, дисплеями и устройствами ввода/вывода. Данным требованиям наилучшим образом отвечают устройства, построенные на x86 архитектуре. Портативные устройства типа навигатора или IP-телефона должны обеспечивать продолжительную работу от автономных источников питания в сочетании с малыми габаритамии весом, чему в большей степени соответствуют платформы с использованием процессоров ARM. Контроллер в плане выбора платформы является наиболее универсальным устройством. Основным требованием в данном случае является наличие необходимых для подключения датчиков портов ввода/вывода и шин данных. Таким образом, для построения тонкого клиента и контроллера будет использована платформа Advantech ARK-1370, а для навигатора и VoIP-телефона – Freescale i.MX31 PDK. Для разработки устройств можно использовать эмулятор, за исключением шагов, в которых выполняются специфичные для конкретных платформ действия. Например, для тонкого клиента выполняется настройка разрешения экрана и загрузка с использованием BIOS-загрузчика.

Тонкий клиент Тонкий клиент – это устройство, основной задачей которого является создание терминальной сессии на сервере. При этом исполнение приложений происходит на сервере, тонкий клиент отвечает лишь за ввод и вывод информации. Поскольку приложения исполняются на сервере, то у данного класса устройств невысокие аппаратные требования. Наращивание производительности в системе терминального доступа выполняется на стороне сервера. При принятии решения об использовании терминального доступа следует учитывать, что не все приложения позволяют исполняться в терминальном режиме. В основном это задачи, 186

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тонкий клиент

в которых используются возможности графических ускорителей – моделирование, 3х-мерные компьютерные игры. Для большинства офисных задач, таких как: работа с почтой, электронный документооборот, интернет-серфинг и т.п., вместо обычного ПК можно использовать дешевые, энергоэкономичные, безвентиляторные и, следовательно, бесшумные, компактные устройства. Тонкие клиенты практически не нуждаются в администрировании, включающем установку ПО, настройку и восстановление после сбоев. Вся необходимая настройка выполняется централизовано – на сервере. В средствах разработки Windows Embedded CE 6.0 есть готовые шаблоны для быстрого создания тонкого клиента. Это шаблон «Windows Thin Client» и «Enterprise Terminal». Для построения устройств, которые служат исключительно для запуска терминальных сессий, достаточно воспользоваться шаблоном «Windows Thin Client». В шаблоне «Windows Thin Client» используется специальная оболочка, которая включает только набор функций для настройки и запуска терминальной сессии. Если необходимо предоставить пользователю стандартную Windows-оболочку с расширенными возможностями, такими как, например, просмотр документов локально, следует использовать шаблон «Enterprise Terminal». Рассмотрим построение тонкого клиента на базе Advantech ARK-1370, предназначенного исключительно для запуска терминальных сессий.

Создание дизайна тонкого клиента Упражнение 1.1 1. Запустить мастер создания нового проекта для Platform Builder CE 6.0. Выбрать BSP для Advantech ARK1370. 2. В окне «Design Templates» мастера создания дизайна ОС выбрать группу шаблонов Thin Client и нажать Next. 187

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка устройств

3. В окне «Design Template Variants» выбрать шаблон «Windows Thin Client»:

4. В следующем окне мастера снять галочку с пункта .NET Compact Framework 2.0. По умолчанию, в шаблон не включен веб-браузер. При необходимости можно добавить его непосредственно в мастере создания проекта, установив галочку напротив Internet Browser.

188

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тонкий клиент

5. В окне «Networking Communication» можно выбрать такие возможности по подключению, как поддержка проводной и беспроводной сети, средства удаленного доступа (Dialup, VPN) и функциональность RDP соединений:

6. В завершающем окне мастера нажать кнопку Finish. 7. Компоненты RDP расположены в папке «Core OS\CEBASE\ Remote Desktop Connection» каталога компонентов.

189

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка устройств

8. Добавим в дизайн компонент настройки сетевого соединения «Network User Interface»:

9. Добавим оформление в стиле Windows XP, выбрав в каталоге компонент «Windows XP-like Sample Skin». 10. Включим в образ поддержку русского языка с локализацией интерфейса. Для этого в настройках проекта следует добавить русскую локаль и установить ее в качестве используемой по умолчанию:

190

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тонкий клиент

Настройка параметров дисплея В оболочке тонкого клиента реализован пример для настройки разрешения и цветности дисплея, который необходимо доработать под конкретную аппаратную платформу. Настройка дисплея выполняется на следующих этапах: при первоначальном запуске устройства в одном из окон мастера настройки тонкого клиента; при последующем использовании в окне свойств тонкого клиента на закладке Display:

Настройка параметров в драйвере дисплея Advantech ARK-1370 выполняется исключительно из реестра, без поддержки динамической смены настроек, минуя перезагрузку системы. Таким образом, в ходе выполнения упражнения будет реализована запись настроек в реестр в соответствии с выбранным видеорежимом и проверка корректности настроек при старте системы. Для интеграции в интерфейс тонкого клиента настроек дисплея необходимо править исходные файлы в дереве PUBLIC. Редактировать файлы непосредственно в дереве PUBLIC не рекомендуется. Чтобы модифицировать исходный код из дерева PUBLIC, следует сначала скопировать код в папку разрабатываемого дизайна. Задача модификации – исправить библиотеки, используемые только в данном дизайне. Если же редактировать напрямую в директории PUBLIC, то все последующие проекты будут работать с измененными файлами. Основной же причиной клонирования исходного 191

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка устройств

кода является то, что при редактировании исходных файлов непосредственно в дереве PUBLIC возможны проблемы с развертыванием обновлений и потеря внесенных изменений после установки обновлений. Упражнение 1.2 1. Определим модули, использующие библиотеку, которую планируется модифицировать – WBTCMNPRPG.lib. Для этого откроем makefile в папке «\WINCE600\PUBLIC\RDP\ CESYSGEN» и найдем строки, в которых библиотека упоминается в качестве TARGETLIBS или SOURCELIBS: atlprop:: @set TARGETLIBS=$(OWNLIB_RES)

\

$(SG_OUTPUT_SDKLIB)\commctrl.lib

\

$(SG_INPUT_LIB)\WbtTsCmn.lib

\

$(SG_INPUT_LIB)\wbtcmnprpg.lib

\

$(SG_INPUT_LIB)\wbttscmn.res

\

$(SG_OUTPUT_SDKLIB)\toolhelp.lib

и atlwbtwiz:: @set TARGETLIBS=$(OWNLIB_RES)

\

$(SG_OUTPUT_SDKLIB)\commctrl.lib

\

$(SG_INPUT_LIB)\WbtTsCmn.lib

\

$(SG_INPUT_LIB)\wbtcmnprpg.lib

\

$(SG_INPUT_LIB)\wbttscmn.res

\

$(SG_OUTPUT_SDKLIB)\iphlpapi.lib

\

$(SG_OUTPUT_SDKLIB)\toolhelp.lib

Таким образом, данную библиотеку используют модули atlprop и atlwbtwiz. 2. Создадим в папке дизайна ОС «\WINCE600\\ » директорию RDP_MOD. Скопируем в папку RDP_MOD папку с исходными файлами модифицируемой библиотеки «\WINCE600\PUBLIC\RDP\OAK\UIT\ WBTCMNPG». В директории RDP_MOD создадим папки 192

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тонкий клиент

ATLPROP и ATLWBTWIZ, а также файл dirs c указанием папок для сборки: dirs=\ WBTCMNPRPG\ atlprop\ atlwbtwiz

3. Сгенерируем sources-файлы для сборки модулей. Для этого откроем окно командного процессора, выбрав в главном меню Visual Studio пункт Build и далее пункт Open Release Directory in Build Window. В окне командного процессора перейдем в директорию «\WINCE600\OSDesign\ \\RDP_MOD\ATLPROP» и выполним следующую команду: sysgen_capture –p rdp atlprop

В результате выполнения команды будет создан файл sources.atlprop для сборки модуля atlprop. Переименуем sources.atlprop в файл sources (без расширения). Повторим указанные в данном шаге действия для второй папки – ATLWBTWIZ, изменив соответствующим образом последний параметр команды. 4. Добавим подпроект RDP_MOD в разрабатываемый дизайн. Для этого в главном меню нужно выбрать пункт Project, далее пункт Add Existing Project… В появившемся диалоговом окне выбрать фильтр «Sourced/Dirs Files» и открыть dirsфайл, расположенный в созданной ранее папке RDP_MOD. 5. Откроем sources-файл для модуля atlprop. Изменим значение переменной RELEASETYPE на OAK и добавим установку переменной окружения: __PROJROOT=$(_PROJECTROOT)

Сохраним и закроем sources-файл. 6. Повторим указанные действия для модуля atlwbtwiz.

193

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка устройств

7. Откроем sources-файл библиотеки wbtcmnprpg. Добавим установку переменных: __PROJROOT=$(_PROJECTROOT) _ISVINCPATH=$(_WINCEROOT)\public\common\sdk\inc; _OEMINCPATH=$(_WINCEROOT)\public\common\oak\inc; $(_WINCEROOT)\public\common\sdk\inc; RELEASETYPE=OAK

и отредактируем пути в директиве INCLUDES, заменив .. на «$(_WINCEROOT)\public\rdp\oak\uit»: INCLUDES=$(_WINCEROOT)\public\rdp\oak\uit\inc;$(_WINCEROOT)\ public\rdp\oak\uit\wbttscmn;$(_WINCEROOT)\public\rdp\oak\uit\ cetsc\inc;

Сохраним и закроем файл. 8. Отредактируем исходный файл DisplayProperties.cpp библиотеки wbtcmnprpg. Поскольку по кнопке Test (см. рисунок в начале упражнения) будет выполнятся установка видеорежима без тестирования, переименуем кнопку в «Set», добавив в методе CDisplayPropPage::OnInitDialog() следующий код: m_test.Attach (GetDlgItem(IDC_TEST_BTN)); // Rename button m_test.SetWindowText(L"Set"); //disabling in the beginning m_test.EnableWindow(FALSE);

Перепишем метод CDisplayPropPage::OnDisplayTest(), вызываемый при нажатии кнопки Test (Set): LRESULT CDisplayPropPage::OnDisplayTest(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled) { HKEY hKey; TCHAR *pCurSettings; TCHAR szSettings[128]; TCHAR szBuf[128]; int i,j; i = m_displayChoices.SendMessage(CB_GETCURSEL);

194

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тонкий клиент if ( i == CB_ERR ) return 0; m_displayChoices.SendMessage(CB_GETLBTEXT, i, (LPARAM)szBuf); // Parse display settings string for ( i = 0, j = 0; szBuf[i]; i++ ) if ( iswdigit(szBuf[i]) || iswspace(szBuf[i]) ) szSettings[j++] = szBuf[i]; szSettings[j] = szBuf[i]; // Setup registry hKey = OpenRegistryKey(HKLM, L"Software\\Geode", KEY_WRITE); if ( !hKey ) return 0; // Backup working display settings if ( !GetRegistryKeyString(hKey, L"CurrentResolution") ) { pCurSettings = GetRegistryKeyString(hKey, L"Resolution"); if ( pCurSettings ) { SetRegistryKeyString(hKey, L"CurrentResolution", pCurSettings); free(pCurSettings); } } // Set display settings

to test

SetRegistryKeyString(hKey, L"Resolution", szSettings); CloseRegistryKey(hKey); return 1; }

9. Можно также привести функцию считывания текущих настроек дисплея CDisplayPropPage::GetCurrentDisplay Setting() в соответствие с реальными настройками в видеодрайвере (см. исходные файлы на диске). 10. Добавим новый подпроект приложения, которое позволит после перезагрузки устройства вернуть настройки дисплея в исходное состояние. В качестве шаблона при создании подпроекта следует выбрать WCE Application и далее A simple Windows Embedded CE Application. В основной функции приложения создадим отдельный поток, в контексте кото195

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка устройств

рого будет отображаться диалоговое окно, затем выполним ожидае завершения работы потока в течении 20-ти секунд и если пользователь не утвердил настройки или вышло время ожидания, то будет вызвана функция сброса настроек RestoreSettings(), в противном случае вызывается функция сохранения настроек SaveSettings(). Таким образом код функции WinMain() выглядит следующим образом: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { HANDLE hThread; DWORD code; HKEY hKey; TCHAR szSettings[128]; DWORD size = sizeof(szSettings); // Check that change of display settings was requested if ( RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\\Geode", 0, 0, &hKey) != ERROR_SUCCESS ) return 0; code = (DWORD)RegQueryValueEx(hKey , L"CurrentResolution", NULL, NULL, (LPBYTE)szSettings, &size); RegCloseKey(hKey); if ( (code != ERROR_SUCCESS) || !szSettings[0] ) return 0; // Create message box thread hThread = CreateThread(NULL, 0, ReplyThread, NULL, 0, NULL); // Wait for reply in message box till 1 minute if ( WaitForSingleObject(hThread, 20*1000) == WAIT_OBJECT_0) GetExitCodeThread(hThread, &code); else code = IDNO; if ( code == IDYES ) SaveSettings(); else RestoreSettings(szSettings); return code; }

196

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тонкий клиент

Процедура дополнительного потока: DWORD ReplyThread(LPVOID lpParam) { return MessageBox(NULL, L"You've requested change of display settings.\ Choose Yes to save current settings.\ Choose No to restore settings and reboot system.\ You have 20 seconds to make choice then settings will be restored automatically", L"Test display settings", MB_YESNO|MB_DEFBUTTON2|MB_TOPMOST); }

Код функции сохранения настроек: void SaveSettings() { HKEY hKey; if ( RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\\Geode", 0, 0, &hKey) == ERROR_SUCCESS ) { RegDeleteValue(hKey , L"CurrentResolution"); RegCloseKey(hKey); } }

И, наконец, код функции сброса настроек: void RestoreSettings(LPCTSTR szSettings) { HKEY hKey; if ( RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\\Geode", 0, 0, &hKey) == ERROR_SUCCESS ) { RegSetValueEx(hKey , L"Resolution", 0, REG_SZ, (LPBYTE)szSettings, (wcslen(szSettings)+1)*sizeof(TCHAR)); RegDeleteValue(hKey, L"CurrentResolution"); // Flush registry settings RegFlushKey(hKey); RegCloseKey(hKey); // Reboot system SetSystemPowerState(NULL, POWER_STATE_RESET, POWER_FORCE); } }

197

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка устройств

11. Добавим загрузку приложения при старте системы. Для этого в файл настроек реестра приложения добавим следующие строки: [HKEY_LOCAL_MACHINE\init] "Launch90"="testdispmode.exe" "Depend90"=hex:3c,00

12. В настройках BSP по умолчанию разрешение дисплея при загрузке видеодрайвера не меняется и определяется настройками загрузчика. Чтобы включить установку разрешения видеодрайвером, необходимо исправить значение параметра BiosInitPanel на 0 в файле настроек реестра видеодрайвера lxvideo.reg, расположенного в папке «\WINCE600\ PLATFORM\\SRC\DRIVERS\LXVIDEO».

Подготовка загрузочного диска Для использования программы loadcepc в качестве загрузчика образа Windows Embedded CE необходимо иметь загрузочный диск с MS-DOS. В свою очередь, для использования ОС MS-DOS необходимо наличие соответствующей лицензии. Рассмотрим один из вариантов загрузчика, который позволяет обойтись без использования MS-DOS – это загрузчик BIOS из поставки средств разработки Windows Embedded CE 6.0. Для подготовки диска понадобится загрузочная дискета MS-DOS с файлами BIOS-загрузчика. Инструкция по подготовке дискеты приведена в главе «Разработка кода платформы» в упражнении 3.2. В качестве целевого диска будет выступать установленный на платформе дисковый модуль. Упражнение 1.3 1. Загрузиться с ранее подготовленной дискеты в MS-DOS. При помощи утилиты fdisk создать на диске основной раздел и пометить его активным. Отформатировать полученный раздел при помощи утилиты format.com, значение для метки раздела отставить пустым. 2. Запустить с дискеты пакетный файл mkdisk.bat, указав в качестве параметра букву целевого диска, например: mkdisk.bat c:

198

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тонкий клиент

3. После успешного создания загрузочного диска скопировать на него образ тонкого клиента и перезагрузить систему с диска. Для тестирования тонкого клиента необходимо наличие ОС Windows с включенной терминальной службой.

Определение типа лицензии Для определения типа лицензии на устройство служит утилита Run-time License Assessment. Упражнение 1.4 1. Для запуска утилиты следует в главном меню Visual Studio открыть подменю Tools, затем подменю Platform Builder for CE 6.0 и выбрать пункт Run-time License Assessment Tool. 2. В окне утилиты открыть полученный файл образа тонкого клиента NK.BIN, расположенный в плоской директории сборки:

В списке «Predicted License» указывается необходимый тип лицензии. В данном случае это лицензия Professional. 199

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка устройств

Дополнительные требования Согласно лицензионным требованиям по использованию терминальной службы Microsoft, необходимо обеспечить уникальный идентификатор устройства. В поставке для x86-платформы идентификатор устройства формируется на основе MAC-адреса и не может быть гарантировано уникальным, поэтому производитель тонкого клиента, обязан реализовать в BSP собственную процедуру генерации идентификатора, записать его в энергонезависимую область памяти устройства, а также обеспечить его сохранность при штатном использовании и сервисном обслуживании.

Навигационное устройство В поставке средств разработки Windows Embedded CE 6.0 нет специального шаблона, предназначенного для построения навигационного устройства. Одним из подходящих шаблонов в случае разработки навигатора является шаблон PDA-устройства, который включает стандартную Windows-оболочку, поддержку ActiveSync и др. Для функций навигации в Windows Embedded CE 6.0 есть специально разработанные API, которые позволяют легко интегрировать в приложения функции определения местоположения. Разработка навигационного устройства может быть разбита на две части: разработку образа устройства и разработку навигационного приложения. На этапе разработки образа необходимо включить весь необходимый функционал для работы приложения. В первую очередь это поддержка GPSID и Location Framework API, использование которых будет продемонстрировано при разработке навигационного приложения и возможность подключения к устройству для отладки приложения средствами Visual Studio, например, с использованием ActiveSync через USB. Также, для разработки приложения необходимо предоставить SDK устройства. Непосредственно разработка навигационного приложения рассматривается в главе «Разработка приложений».

200

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Навигационное устройство

Компоновка образа навигатора Упражнение 2.1 1. Создадим новый дизайн на основе шаблона PDA-устройства. Для этого в мастере создания дизайна после выбора BSP в окне Design Templates нужно выбрать PDA Device и нажать Next:

2. В окне Design Template Variants выбрать Mobile Handheld и нажать Next:

201

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка устройств

3. В окне Application Media убрать компоненты .NET Compact Framework 2.0, Internet Explorer и Quarter VGA Resources – Portrait Mode и нажать Next:

.NET Compact Framework не нужен, поскольку будет использовано приложение навигатора, написанное на native-коде. QVGA ресурсы не используются ввиду VGA экрана.

4. В окне «Networking Communications» убрать галочки со всех пунктов и нажать Next:

202

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Навигационное устройство

5. В завершающем окне мастера создания дизайна ОС нажать Finish. При появлении окна с предупреждением об уязвимости безопасности нажать кнопку Acknowledge:

6. После окончания процесса создания нового дизайна открыть панель каталога и убрать компоненты: Help, Target Control Support (Shell.exe), AYGShell API Set, SIP for Small Screens и добавить следующие компоненты: Название

Описание

GPS Intermediate Driver

Промежуточный драйвер GPS При добавлении компонента возникает предупреждающее сообщение, с которым следует согласиться

Location Framework GPS Plugin Компоненты Location Framework API Location Framework Simulation Plugins USB Host Support

Поддержка USB-хоста.

Hive-based Registry

Сохранение настроек реестра на энергонезависимом накопителе

FAT File System

Поддержка файловой системы FAT

Storage Manager Control Panel Applet

Апплет панели управления для монтирования и форматирования накопителей 203

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка устройств

Название

Описание

Flash MDD

Базовая поддержка Flash-накопителей. Совместно с драйвером NAND-flash из BSP Freescale данный компонент обеспечивает доступ к встроенной NAND-flash памяти.

SIP for Large Screens

Экранная клавиатура для больших экранов

SD Memory

Поддержка SD карт памяти. Драйвер SD-контроллера добавляется автоматически при установке данного компонента

C++ Runtime Support for Exception Обработка исключений. Компонент необходим Handling and Runtime Type Information для запуска утилит удаленной работы USB Function – Serial

Необходим для подключения по ActiveSync

National Language Support (NLS)

Поддержка дополнительных языков

Для быстрого поиска компонентов следует воспользоваться строкой поиска, расположенной в верхней части панели Catalog Items.

7. Выбрать для сборки Releаse-конфигурацию. 8. Открыть окно свойств проекта, выбрав в главном меню пункт Project и далее пункт Properties… 9. В окне свойств в древовидном списке слева раскрыть папку «Configuration Properties» и выбрать пункт Locale. Добавить раскладки для кириллицы:

204

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Навигационное устройство

убрать поддержку KITL:

и установить переменную окружения IMGNAND равной «numGasStations; i++, gs_offset += pGS->size ) { pGS = (GAS_STATION *)(pReport->data+gs_offset); wsprintf(text, L"%s: %.1f руб/л", GetName(pGS), pGS->pricePerGallon); SetInfoLineText(idGS+i, text); } } } return 0; }

Сначала выполняется создание пяти информационных строк для максимально доступного в отчете количества АЗС. Далее происходит ожидание установки события, связанного с появлением нового отчета, и обновление информационных строк в соответствии с полученным отчетом. Для обработки отчета используется вспомогательная функция, которая на основе данных отчета возвращает название АЗС: 276

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка приложений на «native»-коде TCHAR * GetName(GAS_STATION *pGS) { if ( pGS->nameOffset == LOCATION_OFFSET_UNSET ) return (TCHAR *)L"?"; return (TCHAR *)(pGS->data+pGS->nameOffset); }

5. Создать конфигурационный XML-файл для тестовой библиотеки генерации отчетов:









Файл состоит из двух частей. В первой части (provider_report) указываются значения данных используемого источника, при которых происходит создание отчета. Во второй части (resolver_report) определяются значения полей генерируемого отчета. 6. Сохранить файл, например, под именем gs_resolver.xml, и скопировать его на устройство в папку «\NAND Flash». 7. Настроить библиотеку для генерации отчетов о ближайших АЗС на основе GPS-данных. Для этого, используя удаленный редактор реестра, добавить в ключ реестра [HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Location Framework\Resolvers\FakeResolver] строковый параметр «ScriptFile» = «\NAND Flash\gs_resolver.xml» и два 277

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка и внедрение приложений

мультистроковых параметра «SupportedReports» = «{78CE876B-AD03-4bcd-8AE4-CF0011C18FFF}» и «GeneratedReports» = «{BBBBAAAA-BBBB-AAAA-BBBBBBBBAAAABBBB}»:

Параметр SupportedReports применяется только для вторичных источников и содержит список уникальных идентификаторов (GUID) других источников, информация которых используется для генерации отчетов. Параметр GeneratedReports содержит список уникальных идентификаторов отчетов, которые генерируются библиотекой источника.

8. Пересобрать и запустить приложение. Через некоторое время в окне приложения появится информация о АЗС:

278

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка приложений на управляемом коде

Разработка приложений на управляемом коде В качестве примера разработки приложения на управляемом коде рассмотрим разработку консольного приложения для контроллера сбора данных с датчика температуры, подключенного к последовательному порту. Собранные с датчика показания далее записываются в размещенную на устройстве базу данных. Для подключения к устройству из среды Visual Studio необходимо выполнить настройку, приведенную в упражнении 1.2 данной главы. При настройке используется IP-адрес, полученный в результате тестового запуска устройства (см. глава «Разработка устройств», упражнение 4.4).

Создание проекта приложения и его реализация Упражнение 3.1 1. Создать новый проект консольного приложения на C# для Windows Embedded CE устройств. Для Visual Studio 2005:

279

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка и внедрение приложений

Для Visual Studio 2008:

затем в окне мастера Add New Smart Device Project в поле Target platform выбрать пункт Windows Embedded CE, в поле .NET Compact Framework version выбрать версию 2.0:

2. Добавить в проект зависимость для SqlCeCompact. Для этого в панели Solution Explorer щелкнуть правой кнопкой мыши на папке References и выбрать в контекстном меню пункт Add Reference… Для Visual Studio 2005 в окне Add Reference перейти на закладку Browse, открыть папку «\Program 280

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка приложений на управляемом коде

Files\Microsoft SQL Server Compact Edition\v3.5\Devices» и выбрать библиотеку System.Data.SqlServerCe.dll:

Для Visual Studio 2008 в окне Add Reference на закладке .NET выбрать компонент System.Data.SqlServerCe версии 3.5 и нажать OK:

Для разработки приложений под SQL Compact 3.5 в Visual Studio 2005 необходимо установить Microsoft SQL Server Compact 3.5 for Windows Mobile. 281

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка и внедрение приложений

3. Открыть свойства проекта, выполнив двойной щелчок мыши на папке Properties в панели Solution Explorer. На закладке Devices снять галочку Deploy the latest version of the .NET Compact Framework (including Service Packs), поскольку все необходимые библиотеки .NET CF уже включены в образ:

Проверить, что качестве целевого используется CE устройство, т.е. в поле Target Device пункт Windows CE Device. Для того чтобы можно было устанавливать библиотеки .NET Compact Framework на устройство из Visual Studio, необходимо включить в образ компонент CAB Installer.

4. Открыть исходный файл Program.cs. 5. В самом начале файла указать использование пространства имен System.IO.Ports, System.IO, System.Data.SqlServerCe и System.Threading: 282

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка приложений на управляемом коде using System.IO.Ports; using System.IO; using System.Data.SqlServerCe; using System.Threading;

6. В классе Program объявить константу с указанием расположения файла базы данных, в которой будут храниться показания датчика. Далее создать событие и объекты для работы с двумя последовательными портами: первый для вывода диагностических сообщений и второй для считывания данных датчика: class Program { const string DatabasePath = "\\USBDisk\\test.sdf"; AutoResetEvent ev = new AutoResetEvent(false); SerialPort DbgPort = new SerialPort("COM1"); SerialPort DataPort = new SerialPort("COM2");

В приведенном выше коде для хранения базы данных используется съемный USB-накопитель, подключенный к устройству. Также можно воспользоваться встроенным дисковым модулем, указав «Hard Disk» вместо «USBDisk» в значении константы DatabasePath. 7. Затем добавить реализацию функции считывания данных датчика и размещения их в базе данных. В функции сначала выполняется открытие базы данных, затем считывание данных с последовательного порта, к которому подключен датчик и размещение полученных показаний в базе данных при помощи SQL-запроса. Показания датчика температуры передаются в виде 2-х байтного слова с точностью до десятых долей градуса. В случае если с датчика будет считано значение FFFF(65535), то устанавливается событие: private void ReadSensorData(object sender, SerialDataReceivedEventArgs e) { ushort temp; SqlCeConnection conn = new SqlCeConnection("Data Source = " + DatabasePath);

283

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка и внедрение приложений try { conn.Open(); SqlCeCommand cmd = conn.CreateCommand(); for (int i = 0; i < DataPort.BytesToRead / sizeof(short); i++) { temp = (ushort)(((ushort)DataPort.ReadByte() = lower_bound && RS("Temp") "); RS.MoveNext(); } RS.Close(); RS = null; %>

7. Сохранить файл Web-приложения 8. Создать при помощи любого графического редактора, например, Paint или встроенного в среду Visual Studio, два файла в формате BMP и размером 1x1 пиксель. В первом файле закрасить пиксель зеленым цветом и сохранить полученный файл под именем green_dot.bmp. Для второго изображения использовать красный цвет и сохранить файл под именем red_dot.bmp.

Запуск Web-приложения на устройстве Упражнение 4.2 1. Разместим полученные в предыдущем упражнении файлы Web-приложения и двух изображений на устройстве. Для 291

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка и внедрение приложений

этого откроем утилиту Remote FileViewer и загрузим файлы в папку «\Windows\www\wwwpub» устройства:

2. Сделаем файл Web-приложения страницей используемой по умолчанию при обращении к контроллеру через Webбраузер. Для этого откроем удаленный редактор реестра Remote Registry Editor и в ключе [HKEY_LOCAL_MACHINE\ Comm\HTTPD] добавим строковый параметр «DefaultPage» с именем страницы:

3. Чтобы внесенные изменения вступили в силу, необходимо перезагрузить Web-сервер. Для этого на устройстве запустим следующую команду: services refresh HTP0:

используя подключение по Telnet: 292

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка Web-приложений

4. Для проверки работы Web-приложения и устройства в целом следует открыть Web-браузер1, ввести в строке адреса: http://

и перейти по указанному адресу. В окне браузера отобразится информация о температуре. Для получения дополнительной информации можно подвести курсор мыши к интересующему столбцу, в результате чего появится всплывающее окно со значением температуры и датой снятия показания:

1

Корректность отображения страницы Web-приложения проверена в браузерах MS IE 7, Google Chrome 1.0 и Mozilla Firefox 2.0. 293

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка и внедрение приложений

Внедрение приложений Проблемы с внедрением приложений, предоставленных в бинарной виде, как правило, касаются приложений, написанных с использованием «native»-кода. Для запуска приложений на управляемом коде единственным требованием является наличие в образе устройства поддержки .NET Compact Framework, желательно одинаковой или более поздней с приложением версии. При использовании «native»-приложений следуют учитывать следующие моменты: под какую процессорную архитектуру (ARM, x86, MIPS, SH4) собрано приложение, для какой версии CE разработано приложение и какие API используются для работы приложения. В случае если приложение разработано под архитектуру процессора, отличную от используемой на устройстве, запустить такое приложение не удастся. При запуске приложений, разработанных под предыдущие версии CE, возможны проблемы в том случае, если задействованы специфичные для данной версии ОС функции системного API, которые утратили силу в Windows Embedded CE 6.0. Например, прямой доступ к памяти другого процесса с использованием функции SetProcPermissions(). В наибольшей мере проблемы, связанные с изменением архитектуры ОС, относятся к драйверам. Для проверки совместимости приложений и библиотек с Windows Embedded CE 6.0 используется утилита ceappcompat из поставки средств разработки, которая располагается в папке «\WINCE600\ PUBLIC\COMMON\OAK\BIN\I386». Утилита запускается в командной строке с указанием необходимых параметров: CEAppCompat –i -o

В качестве первого параметра (ключ –i) передается путь к папке или исполняемому файлу, который требуется проверить на совместимость; второй параметр указывает имя для результирующих файлов в формате HTML и XML. HTML-файл отчета представляет собой таблицу со списком проверенных модулей и функций API, которые могут вызвать проблемы. Красным цветом выделены функции, которые полностью не поддерживаются; синим – использование функции допускается только в режиме ядра; зеленым – функции, которые поддерживаются 294

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Внедрение приложений

в Windows Embedded CE 6.0, но могут не поддерживаться в следующих версиях ОС и вследствие чего использовать их не рекомендуется.

Кроме проблем совместимости версии ОС и архитектуры процессора, которые разработчик устройства на базе Windows Embedded CE 6.0 может только продиагностировать, существует другой класс проблем, связанных с недостаточной функциональностью образа ОС. В отличие от ранее рассмотренных случаев, проблемы данного типа могут быть решены на этапе разработки образа ОС.

Решение проблем, связанных с функциональностью системы На примере утилиты удаленной работы рассмотрим, каким образом можно решить проблему с запуском модуля (программы или библиотеки), вызванную отсутствием необходимой функциональности в образе системы. В качестве образа целевого устройства будет выступать образ тонкого клиента, разработанный в главе «Разработка устройств». Недостаток функциональности означает, что в образе отсутствуют используемые приложением библиотеки либо 295

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка и внедрение приложений

библиотеки предоставляют недостаточный для запуска приложения набор функций. Чтобы удостовериться, что причина именно в недостатке функциональности и определить, какой конкретно функциональности не хватает, следует воспользоваться утилитой Dependency Walker (Depends.Exe) из поставки Visual Studio, которая для Visual Studio 2005 по умолчанию располагается в папке «C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin». Упражнение 5.1 1. Запустим утилиту Dependency Walker. Используя главное меню или панель инструментов, откроем файл ccfwcli.exe – клиентскую часть утилиты удаленной работы Remote File Viewer, который находится в папке «\Program Files\ CE Remote Tools\5.01\target\wce500\». 2. В появившемся сообщении об ошибках нажмем OK.

Ошибка связана с отсутствием библиотеки COREDLL.DLL. В данном случае это вызвано тем, что по умолчанию для поиска зависимых библиотек используются системные директории настольной системы, в список которых не входит плоская директория сборки образа нашего устройства. Если же ошибка с ненайденным модулем возникает после указания пути до плоской директории сборки, то здесь речь идет об отсутствии функциональности, реализованной в данной библиотеке. 296

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Внедрение приложений

3. Добавим плоскую директорию сборки образа в список директорий для поиска библиотек, предварительно очистив его. В главном меню утилиты Dependency Walker нужно зайти в подменю Options и далее выбрать пункт Configure Module Search Order… В окне Module Search Order сначала очистить список Current Search Order, выделяя каждый пункт и нажимая кнопку > Loading Module 'coredll.dll' (0x8F6FA6CC) at address 0x40010000-0x40111000 in Process 'ccfwcli.exe' (0x8CFA7A08) OSAXST1: >>> Loading Module 'ccfwcli.exe' (0x8CFA7A08) at address 0x00010000-0x00017000 in Process 'ccfwcli.exe' (0x8CFA7A08) ERROR: function @ Ordinal 1580 missing !!! Please Check your SYSGEN variable !!!

Из текста сообщения также следует, что отсутствует функция с порядковым номером 1580. 299

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Разработка и внедрение приложений

6. Следующим этапом после диагностирования ошибки необходимо определить отвечающий за данную функциональность компонент. Поскольку функция должна экспортироваться библиотекой coredll.dll, откроем соответствующий def-файл, который для данной библиотеки находится в папке «\WINCE600\PUBLIC\COMMON\OAK\LIB\ \» и называется coredll.def. Найдем в содержимом библиотечного файла упоминание о функции с порядковым номером 1580: ; @CESYSGEN IF COREDLL_CRT_CPP_EH_AND_RTTI ; C++ Exception Handling functions ……………………………………………………… ??_7type_info@@6B@ @1580 PRIVATE ; @CESYSGEN ENDIF COREDLL_CRT_CPP_EH_AND_RTTI

Согласно полученной информации, искомая функция экспортируется при условии установки переменной «COREDLL_CRT_CPP_EH_AND_RTTI». Выясним название Sysgen-переменной, которая отвечает за установку данной переменной. Вначале необходимо разобрать имя переменной на две части: имя модуля (COREDLL) и название компонента (CRT_CPP_EH_AND_RTTI). Название компонента иногда совпадает с именем соответствующей Sysgen-переменной, которое формируется следующим образом: SYSGEN_. В случае если название компонента не совпадает с именем Sysgenпеременной, следует произвести поиск имени компонента в пакетных файлах, расположенных в папке «\WINCE600\ PUBLIC\CEBASE». В итоге среди найденных в одном из файлов строк с упоминанием названия компонента, будет одна или несколько строк с условным оператором if. Искомая Sysgen-переменная будет указана в логическом выражении условного оператора, а название компонента в операторе установки переменной окружения set: REM Include CPP EH and runtime type information (RTTI) support if "%SYSGEN_CPP_EH_AND_RTTI%"=="1" set _COREDLL_COMPONENTS=%_COREDLL_COMPONENTS% crt_cpp_eh_and_rtti

300

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Внедрение приложений

7. Для поиска компонента каталога, связанного с найденной Sysgen-переменной, можно воспользоваться строкой поиска в верхней части панели Catalog Items:

8. После добавления компонента необходимо заново произвести фильтрацию компонентов и сборку модулей ОС, т.е. выполнить Sysgen или Clean Sysgen.

301

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование устройств Заключительным этапом в процессе разработки устройства является его разностороннее тестирование. Возможности пакета CETK по тестированию драйверов из поставки, а также использование различных утилит, входящих в пакет CETK, подробно рассмотрено в книге [1] в главе «Тестирование образов операционной системы». В данной главе мы рассмотрим средства тестирования устройств на базе Windows Embedded CE 6.0 для оценки характеристик реального времени, а также применение пакета тестирования CETK для запуска дополнительных тестов, которые не входят в стандартный набор библиотек тестирования.

Тестирование реального времени Для тестирования работы устройства на соответствие требованиям реального времени в поставке средств разработки идут две утилиты: ILTiming и OSBench.

Утилита ILTiming Для определения величины задержек при обработке прерываний в системе служит утилита ILTiming, которая поставляется в составе средств разработки Windows Embedded CE 6.0. Утилита ILTiming требует соответствующей поддержки в коде платформы, а именно OAL (OEM Abstraction/Adaptation Layer), которая является частью BSP. Описание функционала, который необходимо реализовать в BSP для работы утилиты, приведено в главе «Разработка кода платформы» в разделе «Доработка BSP Freescale i.MX31 PDK». Как правило, в том числе и в BSP Freescale i.MX31 PDK, поддержка утилиты включается на уровне исходных кодов. Для этого необходимо установить переменную окружения ENABLE_ OAL_ILTIMING и пересобрать код BSP, выполнив пункт «Rebuild Current BSP and Subprojects», который находится в подменю Build и далее «Advanced Build Commands». В BSP для x86 платформы из поставки (CEPC), а также BSP Advantech ARK-1370, которое 302

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование реального времени

использует библиотеки данного BSP, поддержка утилиты включена всегда. При тестировании с помощью утилиты ILTiming может быть задействован один из сценариев, позволяющих оценить влияние различных факторов при работе системы. Также есть возможность установить необходимый интервал следования и количество прерываний. Настройка параметров тестирования выполняется с помощью ключей командной строки: Параметр

Описание

-i0

Не запускать дополнительный(е) поток(и). Настройка по умолчанию. Аналогично параметру –ni

-i1

Запустить дополнительный, постоянно работающий поток

-i2

Запустить дополнительный поток, в котором постоянно устанавливается значение приоритета равное THREAD_PRIORITY_IDLE

-i3

Запускается 2 потока, каждый из которых ожидает в течении 10 секунд установки события в другом потоке

-i4

Как и –i3, только ожидание бесконечно

-i5

Запускается один поток, в котором происходит выделение и свобождение памяти при помощи, соответственно, VitualAlloc() и VirtualFree()

-p

Установка приоритета для IST потока. По умолчанию IST поток имеет наивысший приоритет – 0

-ni

См. параметр –i0

-t

Период генерации прерываний в миллисекундах. По умолчанию период равен 5 мс

-n

Количество прерываний, используемых для измерения задержки. По умолчанию используется 10 прерываний

-all

Вывод всей информации. По умолчанию выводится только итоговая информация

-o

Вывод информации по тестированию в указанный файл. По умолчанию информация выводится в окно отладчика

-h

Вывести описание ключей командной строки 303

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование устройств

Для того чтобы установить для потока IST значение приоритета больше 31 (ключ –p), необходимо внести изменение в исходный код утилиты и заново собрать исполняемый файл.

Исходный код утилиты ILTiming расположен в папке «\WINCE600\PUBLIC\COMMON\OAK\UTILS\ILTIMING». Определим для используемой аппаратной платформы величины задержек при обработке прерываний. Упражнение 1 1. В случае использования BSP Advantech ARK-1370 следует сразу перейти к шагу 3. В случае использования BSP Freescale i.MX31 PDK установить в свойствах проекта переменную окружения ENABLE_OAL_ILTIMING:

2. После установки переменной окружения необходимо заново собрать код BSP. Для этого в главном меню выбрать пункт Build, затем подменю Advanced Build Commands и в нем пункт Rebuild Current BSP and Subprojects. 3. Загрузить образ на устройстве. 4. Запустить утилиту ILTiming с параметрами по умолчанию. Для этого в главном меню выбрать Target, затем Run Programs… 304

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование реального времени

В окне Run Program выбрать исполняемый файл утилиты и нажать OK:

5. В результате запуска утилиты в отладочном окне Output будет создан отчет по тестированию задержек при обработке прерываний. Пример отчета приведен ниже: vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv ============================================================ INTERPRETING THE ILTIMING RESULTS -----------------------------------------------------------ILTiming measures the interrupt service routine (ISR) and interrupt service thread (IST) latencies. ISR latency measured is the time from the physical interrupt asserting (timer wrap) to the start of the OEM ISR code.

-----------------------------------------------------------SYSTEM BUILD INFO

PLATFORM = CEPC PROCESSOR = x86 CONFIG = speech RET/DEBUG = retail BUILD DATE = Sep 6 2006 @ (19:30:26) -----------------------------------------------------------COUNTER INFO

305

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование устройств

Counter Frequency = 1193180 Hz Counter tick interval = 838 ns -----------------------------------------------------------RUNTIME OPTIONS Timing interval = 5 Number of interrupts = 10 ============================================================ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ILTiming GetPFN ILTiming Enable (@ every 5 ticks) ILTiming Disable All times are in microseconds. Summary: ISR starts IST starts min 5.8 11.7 ave 6.9 12.9 max 7.5 14.2 Build,Platform,Processor,Project,Debug,Number of Interrupts,ISR Min,ISR Max,ISR Ave,IST Min,IST Max,IST Ave,Thread Priority,Idle Threads 2217,CEPC,x86,speech,retail,10,5.8,7.5,6.9,11.7,14.2,12.9,0,0

Согласно полученной из отчета информации, счетчик работает на частоте порядка 1 МГц (1193180 Гц). Величины задержек приведены в конце отчета в разделе Summary и в данном примере имеют следующие значения: для ISR в среднем 6.9 мкс, для IST – 12.9 мкс. Суммарная задержка при обработке прерываний вычисляется как сумма ISR и IST задержки и в данном случае равна 19.8 мкс Рассматривая возможности по уменьшению времени отклика системы на прерывания, следует учитывать, что ISR задержка практически не зависит от состояния операционной системы 306

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование реального времени

и определяется аппаратной конфигурацией платформы, например, архитектурой процессора и частотой его работы. Уменьшение времени реакции системы может быть выполнено за счет оптимизации IST, которая в свою очередь сильно зависит от различных параметров системы. Ниже перечислены способы оптимизации задержек: 1. Настройка приоритетов для запущенных в системе потоков. 2. Перемещение части кода по обработке прерывания в ISR. 3. Использование аппаратной буферизации для хранения связанных с прерываниями данных и их последующей обработкой в IST. 4. Увеличение производительности аппаратной платформы (частоты процессора и т.п.).

Утилита OSBench Производительность работы планировщика может быть оценена при помощи утилиты OSBench. Единственным требованием для работы утилиты OSBench является наличие в BSP реализации функций QueryPerformanceCounter() и QueryPerformanceFrequency() для получения показаний со счетчиков высокого разрешения. Утилита OSBench позволяет определить время выполнения типичных системных задач, таких как: захват и освобождение критической секции, ожидание и установка события, создание семафора и мьютекса, переключение потоков, а также вызов системного API. Тип теста, а также дополнительные параметры теста устанавливаются при помощи ключей командной строки: Параметр

Описание

-all

Запустить все доступные тесты

-t

Запустить тест с указанным номером. 0 – критические секции, 1 – события, 2 – семафор, 3 – мьютекс, 4 – переключение потоков, 5 – вызов системного API, 6 – защищенные функции

-list

Вывести список доступных тестов

-v

Включить более детальный вывод. По умолчанию выводится только сводная информация 307

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование устройств

Параметр

Описание

-n

Размер выборки. По умолчанию для получения выборки длительных тестов выполняется однократный запуск. Для остальных тестов используется 100 запусков

-m

Адрес виртуальной памяти для записи

-k

Запустить тестирование в режиме ядра

-s

Размер буфера, используемого при тестировании вызовов системного API

-o

Вывод информации по тестированию в указанный файл. По умолчанию информация выводится в окно отладчика

-h

Вывести описание ключей командной строки

Упражнение 2 1. Загрузить образ операционной системы на устройстве или эмуляторе. 2. Запустить утилиту OSBench для выполнения всех доступных тестов. Для этого в главном меню выбрать пункт Target и затем пункт Run Programs… В окне Run Program в списке Available Programs выбрать osbench.exe, в строке Execution command line добавить через символ пробела ключ «–all» и нажать кнопку OK:

3. Выполнение тестов может занять некоторое время. По завершении тестирования в отладочном окне будет сформирован отчет с результатами по каждому тесту. Ниже в качестве примера приведен фрагмента отчета с результатами одного из тестов для критической секции: 308

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование реального времени ============================================================ | 0.00 | IP = NO | CS = NO | 1 IPS -----------------------------------------------------------EnterCriticalSection traditional (blocking) with priority inversion : Time from a lower priority thread calling LeaveCS to a higher priority thread unblocking from the EnterCS call -----------------------------------------------------------| Max Time = 10.165 us | Min Time = 7.278 us | Avg Time = 7.941 us ============================================================

где N.nn – идентификатор теста; IP – флаг, указывающий выполнялся ли тест в рамках одного процесса (значение NO) или были задействованы несколько процессов (значение YES); CS – флаг, который устанавливается в случае синхронизации кэша; IPS – количество измерений выполненных в данном тесте; Max Time, Min Time и Avg Time – соответсвенно, максимальное, минимальное и среднее время выполнения исследуемой в тесте операции. 4. Сравним производительность при вызове системного API из пользовательского процесса и при вызове в контексте процесса ядра. Для этого запустим утилиту OSBensh, указав в командной строке необходимые ключи для включения режима ядра (-k) и выбора только тестов для вызовов системного API (-t 5):

309

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование устройств

5. Ниже приведены результаты двух тестов для вызова системного API из отчета, полученного на шаге 3 для платформы Freescale i.MX31: ============================================================ | 5.00 | IP = NO | CS = NO | 1000 IPS -----------------------------------------------------------Kernel API call (from Usermode) (roundtrip) to NK.EXE Calls an API function (GetOwnerProcess) in NK.EXE which returns immediately. -----------------------------------------------------------------| Subtracting out base result of 306 ticks | Max Time = 1.707 us | Min Time = 1.618 us | Avg Time = 1.676 us ============================================================ ============================================================ | 5.01 | IP = NO | CS = NO | 1000 IPS -----------------------------------------------------------UserMode PSL API self-call (roundtrip) intra-process Calls an API function with no parameters and returns immediately. -----------------------------------------------------------| Subtracting out base result of 318 ticks | Max Time = 3.393 us | Min Time = 3.370 us | Avg Time = 3.375 us ============================================================

Результаты для этих же тестов в той же аппаратной конфигурации, но запущенных в контексте ядра, имеют следующие значения: ============================================================ | 5.00 | IP = NO | CS = NO | 1000 IPS -----------------------------------------------------------Kernel API self-call (from Kernelmode) (roundtrip) to NK.EXE Calls an API function (GetOwnerProcess) in NK.EXE which returns immediately.

310

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Возможности по расширению пакета тестирования CETK -----------------------------------------------------------| Subtracting out base result of 202 ticks | Max Time = 0.170 us | Min Time = 0.155 us | Avg Time = 0.155 us ============================================================ ============================================================ | 5.01 | IP = NO | CS = NO | 1000 IPS -----------------------------------------------------------KernelMode PSL API self-call (roundtrip) intra-process Calls an API function with no parameters and returns immediately. -----------------------------------------------------------| Subtracting out base result of 406 ticks | Max Time = 1.603 us | Min Time = 1.597 us | Avg Time = 1.597 us ============================================================

Налицо явный выигрыш при вызове функций системного API в контексте ядра Выводы: Вывод функций системного API в контексте ядра происходит в ряде случае до десяти раз быстрее, чем из пользовательского процесса.

Возможности по расширению пакета тестирования CETK Пакет тестирования CETK, предназначенный для тестирования драйверов устройств, имеет расширяемую архитектуру и позволяет добавлять новые тесты, а также разрабатывать собственные. Создание библиотек тестирования для пакета CETK выполняется в виде подпроекта в рамках дизайна операционной системы. Рассмотрим включение дополнительных тестов в инфраструктуру пакета CETK, а также пример разработки библиотеки для данного пакета тестирования. 311

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование устройств

Добавление теста в инфраструктуру пакета CETK В поставке CETK есть набор библиотек для тестирования соединения по последовательному порту, который может быть использован для тестирования соединений с использованием не только реальных последовательных портов, но виртуальных, которые организованы поверх Bluetooth, USB и пр. По умолчанию данный тест не включен в инфраструктуру пакета CETK. На примере теста последовательного соединения рассмотрим процедуру добавления тестов в пакет CETK. Упражнение 2.1 1. Запустить серверную часть пакета CETK, выбрав меню Start, далее Programs, затем Windows Embedded CE 6.0 и далее пункт Windows Embedded CE 6.0 Test Kit. 2. В главном меню приложения серверной части выбрать пункт Tests и затем пункт User Defined… 3. В окне приветствия мастера для управления дополнительными тестами нажать Next:

312

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Возможности по расширению пакета тестирования CETK

4. В окне Operation для добавления теста выбрать пункт Add a New Test и нажать Next:

5. В окне Add, содержащем параметры теста, ввести имя теста (поле Name of Test). Далее указать расположение тестовой библиотеки pserial.dll в соответствии с архитектурой устройства. Затем отредактировать параметры командной строки, указав при помощи ключа «–p» порт устройства, также запуск библиотеки в режиме мастера, используя ключ «–m». В списке Processor выбрать соответствующую архитектуру процессора и нажать Next:

313

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование устройств

6. В следующем окне мастера выбрать пункт Leave the files at current location, указав таким образом, что тестовая библиотека не будет копироваться в отдельную директорию с тестами. Для перехода в следующее окно нажать кнопку Next:

7. В окне со сводной информацией о добавляемом тесте нажать Next:

314

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Возможности по расширению пакета тестирования CETK

8. В завершающем окне мастера дополнительных тестов нажать Finish:

Запуск теста для соединения по последовательному порту Для выполнения тестирования соединения необходимо два устройства. Вторым устройством, взаимодействующим с тестируемым устройством, может выступать либо устройство на базе Windows Embedded CE, либо ПК под управлением настольной Windows ОС, в частности, станция разработки. На втором устройстве с использованием утилиты tux запускается ответная часть теста соединения. При этом для соединения устройств необходим нуль-модемный кабель либо, в случае использования эмулятора, эмулятор последовательного порта. Упражнение 2.2 1. Для тестирования подключимся к устройству. Для этого запустим образ, полученный при выполнении упражнений по разработке потокового драйвера в главе «Разработка кода платформы». После того как образ будет успешного загружен в главном меню серверной части CETK, выбрать пункт Connection и затем Start Client… 315

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование устройств

2. В окне Device Connection нажать кнопку Connect…

Затем в появившемся окне выбрать устройство и нажать OK:

И дождаться завершения подключения к устройству/эмулятору. 316

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Возможности по расширению пакета тестирования CETK

3. В окне серверной части CETK раскрыть список тестов и найти добавленный ранее тест, который расположен в папке «User Tests»:

4. Отредактируем параметры теста. Для этого необходимо открыть окно с настройками командной строки теста, щелкнув правой кнопкой мыши на тесте и выбрав в контекстном меню пункт Edit Command Line… Сузим набор подтестов до одного подтеста с номером 10, добавив в командной строке ключ «–x» со значением 10:

5.

Для сохранения настроек нажать кнопку OK. Перед запуском теста на устройстве запустим на станции разработки ответную часть теста. Для этого следует открыть окно командного процессора (cmd.exe), перейти в консольном окне командного процессора в директорию «\Program Files\ Microsoft Platform Builder\6.00\cepb\wcetk\ddtk\desktop» и выполнить в командной строке:

serial\tux –d pserial.dll –c “-pCOMx: -s” –x 10

317

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование устройств

где COMx: – последовательный порт на станции разработки, реальный или эмулируемый, к которому подключено устройство. 6. После запуска ответной части теста перейти в окно серверной части пакета CETK и запустить тест последовательного соединения на устройстве, щелкнув на тесте правой кнопкой мыши и выбрав в контекстном меню пункт Quick Start. В результате в названии теста добавится строка «[Test in progress]», символизирующая запуск теста:

7. После того как тест будет пройден, строка в названии теста сменится на одну из двух возможных: Passed в случае удачного прохождения теста либо Failed в случае возникновения ошибки при выполнении теста:

8. Для того чтобы ознакомиться с подробными результатами тестирования, следует щелкнуть правой кнопкой мыши на тесте и в контекстном меню выбрать пункт View Results. Также 318

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Возможности по расширению пакета тестирования CETK

для просмотра результатов можно воспользоваться главным меню, выбрав пункт Tests, затем View Results, далее пункт необходимого устройства и в завершении либо пункт View All Results для просмотра результатов всех тестов, выполненных в текущей сессии тестирования, либо → для просмотра отчета для отдельного теста.

Разработка библиотеки тестирования Для разработки библиотеки тестирования в средствах разработки есть специальный шаблон подпроекта. Шаблон содержит все необходимые функции для взаимодействия с пакетом CETK. Разработчику библиотеки остается лишь добавить реализацию теста. Рассмотрим в качестве примера разработку библиотеки для тестирования потокового драйвера. Для выполнения упражнения используется дизайн операционной системы, разработанный в главе «Разработка кода платформы» в разделе, посвященном созданию потокового драйвера. Упражнение 2.3 1. Запустить мастер создания подпроекта, выбрав в главном меню Visual Studio пункт Project и далее Add New Subproject… 319

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование устройств

2. В окне мастера в списке шаблонов выбрать TUX Dynamic-Link Library, ввести имя библиотеки, например, «DemoDriverTux» и нажать Next:

3. В завершающем окне мастера нажать кнопку Finish:

320

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Возможности по расширению пакета тестирования CETK

4. Поскольку тест будет запускаться серверной частью пакета CETK, исключим подпроект TUX-библиотеки из образа операционной системы, используя свойства проекта. 5. Реализуем для созданного в главе «Разработка кода платформы» потокового драйвера тест-отработки запросов подсистемы управления питанием. Для этого сначала откроем откроем исходный файл test.cpp, который был автоматически создан из шаблона. Поскольку тест связан с подсистемой управления питания, добавим включение заголовочного файла pm.h, а также объявим глобальную переменную для хранения имени устройства: #include TCHAR g_DevName[6] = L"DEM1:";

6. Далее в предопределенной функции TestProc() реализуем процедуру тестирования драйвера. В процедуре тестирования выполнятся запрос на перевод устройства в режим полного энергопотребления и затем возврат в исходное состояние при помощи функций SetPowerRequirement() и ReleasePowerRequirement() соответственно. Данные функции использовались в упражнении 1.4 главы «Разработка кода платформы» при разработке приложения для тестирования работы потокового драйвера. Проверка текущего состояния устройства выполняется при помощи функции GetDevicePower() из API подсистемы управления питанием. Отслеживание изменения состояния устройства осуществляется с использованием оповещений подсистемы управления питанием, которые записываются в очередь событий точка-точка. Информация об этапах тестирования и возникших в ходе выполнения теста ошибках отправляется в отчет при помощи метода Log() экземпляра g_pKato класса CKato. В случае возникновения ошибки происходит выход из процедуры с кодом возврата TPR_FAIL. В итоге код процедуры тестирования имеет следующий вид: TESTPROCAPI TestProc(UINT uMsg, TPPARAM tpParam, LPFUNCTION_TABLE_ENTRY lpFTE) {

321

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование устройств // The shell doesn't necessarily want us to execute the test. Make sure // first. if(uMsg != TPM_EXECUTE) { return TPR_NOT_HANDLED; } HANDLE hDev = NULL; HANDLE hPowerNotif = NULL; HANDLE hMsgQueue = NULL; MSGQUEUEOPTIONS Options; CEDEVICE_POWER_STATE InitialState, State; HANDLE hPowerReq = NULL; DWORD res; TCHAR Message[256]; // 1. Get current power state res = GetDevicePower(g_DevName, POWER_NAME, &InitialState); if ( res != ERROR_SUCCESS ) { g_pKato->Log(LOG_FAIL, TEXT("Fail to get device driver power state.")); g_pKato->Log(LOG_COMMENT, TEXT("Check power settings of device driver in registry.")); return TPR_FAIL; } wsprintf(Message, TEXT("Initial power state of device driver %s is D%d."), g_DevName, InitialState); g_pKato->Log(LOG_COMMENT, Message); // Initialize message queue to receive power notifications Options.dwSize = sizeof(Options); Options.dwFlags = MSGQUEUE_ALLOW_BROKEN; Options.cbMaxMessage = 100; Options.dwMaxMessages = 100; Options.bReadAccess = FALSE; hMsgQueue = CreateMsgQueue(L"Demo", &Options); // Request for power notifications

322

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Возможности по расширению пакета тестирования CETK hPowerNotif = RequestPowerNotifications(hMsgQueue, POWER_NOTIFY_ALL); // 2. Set power requirement for driver hPowerReq = SetPowerRequirement(g_DevName, D0, POWER_NAME, NULL, 0); if ( hPowerReq == NULL ) { wsprintf(Message, TEXT("Fail to set power requirement for device driver %s."), g_DevName); g_pKato->Log(LOG_FAIL, Message); g_pKato->Log(LOG_COMMENT, TEXT("Check power settings of device driver in registry.")); StopPowerNotifications(hPowerNotif); CloseHandle(hMsgQueue); return TPR_FAIL; } // Wait for power notification during 10 sec res = WaitForSingleObject(hMsgQueue, 10000); if ( res == WAIT_TIMEOUT ) { g_pKato->Log(LOG_FAIL, TEXT("Fail to receive power notification during 10 sec.)); ReleasePowerRequirement(hPowerReq); StopPowerNotifications(hPowerNotif); CloseHandle(hMsgQueue); return TPR_FAIL; } // Get new power state res = GetDevicePower(g_DevName, POWER_NAME, &State); if ( res != ERROR_SUCCESS ) { g_pKato->Log(LOG_FAIL, TEXT("Fail to get device driver power state.")); g_pKato->Log(LOG_COMMENT, TEXT("Check power settings of device driver in registry.")); ReleasePowerRequirement(hPowerReq); StopPowerNotifications(hPowerNotif); CloseHandle(hMsgQueue);

323

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование устройств return TPR_FAIL; } // 3. Release power requirement ReleasePowerRequirement(hPowerReq); // Check power state if ( State != D0 ) { g_pKato->Log(LOG_FAIL, TEXT("Device driver didn't change power state.")); StopPowerNotifications(hPowerNotif); CloseHandle(hMsgQueue); return TPR_FAIL; } g_pKato->Log(LOG_COMMENT, TEXT("Power state of device driver has been successfully changed to D0.")); // Wait for power notification during 10 sec res = WaitForSingleObject(hMsgQueue, 10000); // Stop power notifications and destroy message queue StopPowerNotifications(hPowerNotif); CloseHandle(hMsgQueue); if ( res == WAIT_TIMEOUT ) { g_pKato->Log(LOG_FAIL, TEXT("Fail to receive power notification during 10 sec.")); return TPR_FAIL; } // Get power state res = GetDevicePower(g_DevName, POWER_NAME, &State); if ( res != ERROR_SUCCESS ) { g_pKato->Log(LOG_FAIL, TEXT("Fail to get device driver power state.")); g_pKato->Log(LOG_COMMENT, TEXT("Check power settings of device driver in registry.")); return TPR_FAIL; } // Check power state if ( State != InitialState )

324

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Возможности по расширению пакета тестирования CETK { g_pKato->Log(LOG_FAIL, TEXT("Device driver didn't restore initial power state.")); return TPR_FAIL; } g_pKato->Log(LOG_COMMENT, TEXT("Power state of device driver has been successfully restored.")); return TPR_PASS; }

7. Название теста, которое фигурирует в отчете, устанавливается в заголовочном файле ft.h внутри макросов BEGIN_FTE и END_FTE. Файл ft.h создается автоматически при добавлении подпроекта. Исправим название теста на следующее: BEGIN_FTE FTH(0, "Demo driver test cases") FTE(1, "Power Management Test", 1, 0, TestProc) END_FTE

8. Выполним сборку TUX-библиотеки, используя панель Solution Explorer. 9. Добавим тест в инфраструктуру пакета CETK, пройдя для полученной библиотеки процедуру, рассмотренную в упражнении 2.1. Для того чтобы тест отобразился в списке доступных тестов, для уже подключенного в окне серверной части CETK устройства, следует щелкнуть правой кнопкой мыши на папке устройства и в контекстном меню выбрать Redetect Peripherals. 10. Перед запуском теста необходимо загрузить драйвер. Загрузку драйвера произведем при помощи приложения для тестирования потокового драйвера. Для этого запустим указанное приложение и загрузим драйвер, нажав кнопку Load (см. глава «Разработка кода платформы», упражнение 1.3, шаги 11,12). 11. Запустим тест, щелкнув правой кнопкой мыши на тесте и выбрав в контекстном меню Quick Start. 325

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Тестирование устройств

12. Просмотрим результаты теста, выбрав в главном меню пункт Test, затем пункт View Results, далее пункт с именем устройства, затем группу тестов User Tests и, наконец, пункт c названием пройденного теста. В результате отобразится окно, содержащее отчет по тестированию с использованием разработанной библиотеки:

326

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Дополнения Установка и настройка эмулятора последовательного порта Для эмуляции соединения по последовательному порту можно воспользоваться программой Com0Com1, распространяемой под GPL лицензией. Ниже приведена пошаговая процедура по установке эмулятора последовательного порта и его настройки для использования в упражнениях книги. 1. Запустить программу установки setup.exe. 2. В окне приветствия мастера установки нажать Next:

3. В License Agreement ознакомиться с содержанием GPL лицензии и нажать I Agree:

1

Например, com0com (http://com0com.sourceforge.net/).

327

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Дополнения

4. В следующем окне оставить настройки по умолчанию и нажать Next:

5. В окне Choose Install Location при необходимости изменить путь для устнавки программы и нажать Next:

328

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Установка и настройка эмулятора последовательного порта

6. Дождаться завершения процедуры установки и нажать Next.

В процессе установки программы запуститься мастер Found New Hardware Wizard, в котором выполняется установка драйвера для эмулятора последовательного порта. Шаги по установке данного драйвера приведены ниже в пункте 8.

7. В завершающем окне программы установки нажать Finish:

8. В результате обнаружения нового устройства, эмулятора последовательного порта, появится сообщение с предложением 329

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Дополнения

установить для него драйвера. В первом окне мастера установки драйвера нужно выбрать пункт No, not this time и нажать Next:

Затем, оставив выбранным пункт Install the software automatically для автоматического поиска драйверов, нажать Next:

330

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Установка и настройка эмулятора последовательного порта

И после установки драйвера нажать Finish:

9. После установки всех драйверов для обоих портов запустить конфигурационную утилиту1, которая после установки находится в меню Start, затем Programs и далее com0com, и исправить названия эмулируемых портов, используя формат COMx и COMy, где: x, y – номера незадействованных в системе портов, например:

10. Для сохранения изменений нажать кнопку Apply и закрыть окно утилиты. 1

Для работы утилита требуется установить в системе .NET Framework 2.0. 331

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Глоссарий В глоссарии приведены наиболее важные термины, их определения и перевод, используемый в книге. Поскольку документация к операционной системе на английском языке, сначала приведен английский термин или понятие, затем его перевод, используемый в данной книге и объяснение/определение данного термина или понятия. Все переводы и пояснения также даны по ходу изложения. Английский термин

Перевод

Значение/определение термина

Component

Компонент

Минимальная единица функциональности ОС, которую можно добавить в дизайн операционной системы

Module

Модуль

Исполняемый в системе код (EXE и DLL), часть образа операционной системы. Модули состоят/ собираются из компонентов

Catalog

Каталог

База возможностей ОС, компонентов и модулей

OEM Abstraction Layer (OAL)

Слой абстракции ядра

Низкоуровневый аппаратно-зависимый код, абстрагирующий ядро системы от специфики аппаратной реализации

Kernel Independent Transport Layer (KITL)

Независимый от ядра транспортный слой

Абстрагирует коммуникационный протокол от аппаратной реализации соединения (обычно, устройства со станцией разработчика)

Board Support Package (BSP)

Пакет поддержки платформы (платы)

Состоит из OAL, драйверов и файлов конфигурации, предоставляет поддержку определенной платформы (платы)

OS Design

Дизайн ОС

Состоит из выбранных элементов каталога, собственных подпроектов, файлов конфигурации и BSP. На основе дизайна ОС собирается образ времени исполнения

OS Design Template Шаблон дизайна ОС

Предопределенный набор компонентов, использующийся в мастере создания новых дизайнов ОС

Run-Time Image

Бинарный файл, содержащий все модули из дизайна ОС и собранный в соответствии с конфигурационными файлами для указанного BSP; обычно, NK.BIN

332

Образ времени исполнения

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Глоссарий

Английский термин

Перевод

Значение/определение термина

Application

Приложение

Логически сгруппированный исполняемый код

Process

Процесс

Экземпляр приложения; статический контекст, в котором исполняются один или более потоков

Thread

Поток

Базовая единица исполнения, управляемая планировщиком; каждый процесс имеет по крайней мере один поток, обычно называемый основным потоком; количество потоков ограничено количеством доступных дескрипторов в процессе

Fiber

Нить

Единица исполнения, управляемая приложением

Scheduler

Планировщик

Основной компонент подсистемы многозадачности Windows Embedded CE; отвечает за планирование исполнения и выставление на исполнение потоков

Synchronization primitive/object

Примитив/объект синхронизации

Объект, позволяющий выполнять задачи синхронизации в многопоточной среде

Interrupt Service Routine (ISR)

Процедура обработки прерывания

Низкоуровневая процедура обработки прерывания, вызываемая из OAL; основная задача – вернуть системный идентификатор прерывания (SYSINTR)

Interrupt Service Thread (IST)

Поток обработки прерывания

Поток обработки прерывания; часть драйвера; выполняет основную часть работы

Product Quality OAL OAL производ(PQOAL) ственного качества

Набор библиотек и архитектура реализации слоя OAL, также как и слой OAL, реализованный в этой архитектуре

Device Manager

Менеджер устройств

Часть ядра системы, отвечающая за работу с потоковыми драйверами

Layered Driver Model

Двухуровневая модель драйверов

Модель драйверов, когда реализация функциональности драйвера разбивается на две части: не зависящую от платформы (MDD) и зависящую от аппаратной реализации (PDD)

Model Device Driver Модельный драйвер (MDD) устройства

Библиотека, реализующая общую часть функционала определенного класса драйверов. Компонуясь с библиотекой PDD, собирается в конечный драйвер 333

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Глоссарий

Английский термин

Перевод

Значение/определение термина

Platform Dependent Driver (PDD) или Platform Device Driver (PDD)

Драйвер, зависящий от платформы Платформенный драйвер устройства

Библиотека, реализующая часть функционала драйвера, относящегося к конкретной аппаратной реализации, предоставляет библиотеке MDD соответствующего класса драйверов требуемую функциональность. Компонуясь с библиотекой MDD для соответствующего класса драйверов, собирается в конечный драйвер

Kernel Mode Driver

Драйвер режима ядра

Драйвер, который загружается в адресное пространство ядра

User Mode Driver

Драйвер пользовательского режима

Драйвер, который загружается в специализированные пользовательские процессы (Udevice.exe)

User Mode Drivers Host

Хост драйверов режима пользователя

Процессы Udevice.exe, в которые загружаются драйвера пользовательского режима

UI Proxy User Interface

Прокси-драйвер пользовательского режима

Драйвер пользовательского режима, используемый драйвером режима ядра для отображения пользовательского интерфейса. Также и название технологии ядра, которая это реализует

User Mode Driver Framework

Фреймворк драйверов режима пользователя

Инфраструктура поддержки драйверов режима пользователя

Reflector Service

Сервис рефлектор

Центральная часть фрейворка драйверов режима пользователя. Предоставляет необходимый сервис драйверам режима пользователя. Скрывает от остальной части системы, разницу между драйверами режима ядра и пользовательского режима

Fixup

Адресная привязка

Адресная привязка – перевод относительных адресов, адресов вызова функций и т.д. в абсолютные значения адресного пространства исполнения. Иногда также, изменение значения переменной ядра в процессе MAKEIMG. При размещении модуля в разделе MODULES файла BIB, адресная привязка происходит на этапе MAKIMG

Stream Interface Driver или Stream Driver

Драйвер потокового интерфейса или Потоковый драйвер

Драйвер, реализующий потоковый интерфейс

334

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Глоссарий

Английский термин

Перевод

Значение/определение термина

Generic Installable Interrupt Service Routine (GIISR)

Инсталлируемая процедура обработки прерывания общего назначения

Настраиваемая инсталлируемая ISR из поставки средств разработки. Может быть использована в большинстве случаев

Native code

«Родной» код

Код, написанный на ASM/C/C++ и использующий Win32 API. Компилируется в бинарный код. Для исполнения не требует никакой среды исполнения

Managed code

Управляемый код

Код, написанный на С#/VB.NET под .NET Compact Framework. Компилируется в промежуточный, аппаратно независимый код. Для исполнения на целевом устройстве коде необходима соответствующая среда исполнения

Access Checking

Проверка доступа

Проверка, что вызывающий процесс имеет достаточно привилегий для доступа к буферу

Pointer Parameter

Указатель-параметр

Указатель, передаваемый в функцию API как параметр

Embedded Pointer

Встроенный указатель

Указатель, передаваемый в функцию API внутри структуры данных или буфера

Secure copy

Безопасная копия

Локальная копия данных переданного буфера

Marshalling

Маршалинг

Отображение. Подготовка данных/указателя к использованию в другом процессе

Synchronous Access

Синхронный доступ

Доступ к буферу во время вызова API

Storage Manager

Менеджер хранилищ

Подсистема операционной системы, отвечающая за работу с носителями, включая, работу с разделами, файловыми системами и фильтрами

Shortcut

Ярлык

Ссылка на программу или команду с параметрами, щелчок по которой приводит к их запуску

335

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Литература и информационные ресурсы Книги 1. Станислав Павлов, Павел Белевский. Введение в Windows Embedded CE 6.0 R2, 2008. 2. Douglas Boling, Programming Windows Embedded CE 6.0 Developer Reference, 4th Edition, Microsoft Press, 2007. 3. James Y. Wilson, Aspi Havewala, Building Powerful Platforms with Windows Embedded CE, Addison-Wesley Professional, 2001 . 4. John Murray, Inside Microsoft Windows Embedded CE, Microsoft Press, 1998.

Учебные курсы 1. Курс «Building Solutions Using Windows Embedded CE 6.0». 2. Курс «2540N: Building Embedded Solutions Using Windows Embedded CE 5.0».

Форумы 1. Русскоязычный форум, посвященный встраиваемым операционным системам Microsoft, http://www.msembedded.ru/forum.

Блоги 1. Блог команды разработчиков Windows Embedded CE, http://blogs.msdn.com/ce_base/ 2. Блог команды разработчиков сетевых технологий в Windows Embedded CE, http://blogs.msdn.com/cenet/ 3. Блог команды разработчиков .NET Compact Framework http://blogs.msdn.com/netcfteam/ 4. Блог HopperX, посвященный разработке для устройств, http://blogs.msdn.com/hopperx/ 5. Блог Майка Холла, посвященный встраиваемым операционным системам Microsoft, http://blogs.msdn.com/mikehall/ 6. Блог команды разработчиков SQL Server Compact Edition, http://blogs.msdn.com/sqlservercompact/

Группы новостей 1. 2. 3. 4. 336

microsoft.public.windowsce.platbuilder microsoft.public.windowsce microsoft.public.pocketpc.developer microsoft.public.windowsce.embedded