РЕЦЕНЗИИ
Агуров П. Интерфейс USB. Практика использования и программирования. - СПб, "БХВ-Петербург", 2005 г. - 576 с.
Устройства, подключаемые к ПК с помощью шины USB, получили самое широкое распространение, однако даже из программистов мало кто толком понимает, как работает этот интерфейс. Внести ясность в данный вопрос постаралось издательство "БХВ-Петербург".
Рецензируемая книга состоит из 19 глав, объединенных в пять частей, и четырех приложений. Первая часть является вводной: в ней рассказывается, что такое USB и для чего эта шина предназначается, какие существуют USB-устройства, по каким принципам организована передача данных.
Во второй части рассматривается внутренняя организация USB. Здесь довольно подробно описываются функционирование шины на аппаратном уровне и протоколы взаимодействия подключенных к ней устройств.
Третья часть озаглавлена "Практика программирования". Значительная ее часть посвящена взаимодействию с USB-устройствами под управлением ОС Windows, в частности созданию драйверов. Отдельная глава повествует о специфических функциях PCI BIOS, применяемых для поиска и настройки устройств, подключенных к шине PCI (в том числе и контроллеров USB). Эта информация может оказаться полезной, если необходимо написать программу взаимодействия с USB-устройством, работающую под управлением MS DOS или вообще без ОС.
Четвертая часть по своей тематике выходит за рамки, очерченные названием книги. В ней автор рассказывает о разработке собственных USB-устройств на базе специализированных микросхем, доступных на российском рынке. Здесь же излагается и процесс написания драйвера своего устройства для Windows.
Заключительная, пятая часть является справочной. В ней речь идет об основных функциях Windows API, применяемых при обращении к внешним устройствам (включая устройства взаимодействия с человеком) из прикладных программ, о регистрах и структуре данных хост-контроллера типа UHC, а также об инструментальных средствах для программирования USB-устройств.
К книге приложен компакт-диск, содержащий исходные тексты всех программ, а также схемы устройств, разработка которых описана в четвертой части.
Книга оказалась весьма познавательной, однако в ней имеется ряд довольно существенных изъянов. Главный из них заключается в недостаточной систематичности изложения и одновременно в попытке охватить множество тем, в результате ни одна из них не освещена с должной полнотой и ясностью. Так, одна из основных тем - создание драйвера USB-устройства - раскрыта очень фрагментарно (конечно, если у читателя хватит терпения разобраться с исходными текстами на прилагаемом диске, он поймет, как этот драйвер работает, но получить целостную картину того, как Windows управляет внешними устройствами, вряд ли сможет). Четвертая часть, посвященная созданию собственных устройств, вообще лишняя, если исходить из названия книги. Она "съела" немало места и при этом оказалась практически непонятной для читателей, не обладающих знаниями инженера-электронщика, но и для последних эта часть является скорее "введением в тему".
Нельзя отнести к достоинствам книги и то, что в пятой части имеется описание хост-контроллера UHC - самого "древнего" (спецификация его интерфейса - UHCI - была опубликована еще в 1996 г.) и требующего для использования больших усилий от программиста, в то время как более удобные и современные интерфейсы OHCI и EHCI лишь упоминаются в первой главе.
Не свободно издание и от более мелких недостатков - грамматических ошибок, опечаток и стилистических погрешностей; правда, справедливости ради надо отметить, что в данной публикации их значительно меньше, чем во многих других книгах компьютерной тематики. Сомнительным выглядит и перевод некоторых английских терминов и аббревиатур; например, WDM (Windows Driver Model) автор перевел как "драйверная модель Windows", хотя корректнее было бы сказать "модель драйверов Windows".
Несмотря на все перечисленные недочеты, книга будет весьма полезной в качестве самоучителя как для профессионалов, приступающих к разработке USB-устройств и ПО для них, так и для любителей низкоуровневого программирования. Необходимо только запастись терпением, а также некоторой дополнительной литературой - скажем, пособием по разработке драйверов Windows и описанием контроллеров USB (в частности, входящих в состав чипсетов Intel, довольно подробная информация о которых опубликована на сайте корпорации).