Наручный компьютер корпорации IBM внешне выглядит как обыкновенные часы, но на нем работает операционная система Linux, реализована графика X11, поддерживается технология ближней беспроводной связи Bluetooth.

Бизнесмен с саквояжем спешит по одной из чикагских улиц и поглядывает на часы. В этом нет ничего необычного за тем исключением, что часы показывают не время, а сообщают о ситуации на дорогах. Обнаружив, что на главной дороге, ведущей в аэропорт, произошла авария, часы показывают альтернативные маршруты, но, увы, их обладатель уже никак не успевает попасть на рейс в 10:30. Коснувшись угла циферблата, он вызывает расписание, движением небольшого колесика переносит запись «авиарейс домой» на 11:30 и отправляет соответствующее сообщение по электронной почте своему секретарю в Сент-Луис.

Пройдя несколько кварталов, прохожий чувствует вибрацию своих часов, свидетельствующую о том, что пришло новое сообщение по электронной почте. Это письмо от сына: «Пап, не забудь привезти мне бейсболку Chicago Cubs». Он также получает сообщение от секретаря, которая заказала ему билет на рейс в 12:20 и перенесла встречу с директором по маркетингу на 16:00. Наговаривая сообщение в встроенный в часы микрофон, он посылает информацию на сотовый телефон жены: «Вылет переносится. Не могу забрать Роба после бейсбола».

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

Бизнесмен и его семья — не шпионы и не актеры, а обычные люди. И такого рода сценарии становятся основой нашего представления о том, каким должно быть устройство связи, способное изменить нашу жизнь. Почти четыре года это представление оформлялось в Linux-часы, полную компьютерную систему, на которой работает Linux, отображается графика X11 и поддерживается беспроводная связь.

Рис. 1. Наручные часы-компьютер IBM с жидкокристаллическим или OLED-дисплеем. Чуть большая по размеру модель с жидкокристаллическим дисплеем имеет дополнительную плату, расположенную под колесиком
На рис. 1 изображены два варианта таких часов, один из которых имеет OLED-дисплей (organic light-emitting diode), а другой — жидкокристаллический. Часы помещены в корпус, который можно принять за несколько необычный хронометр нестандартной формы.

Интерфейс этих часов имеет сенсорный экран, в углах которого расположены символы, обозначающие соответствующие действия. Прикасаясь к левому верхнему углу, пользователь вызывает меню, нижний левый угол — аналог кнопки «назад» в браузерах, верхний правый угол — кнопка быстрого вызова для установки будильника, а нижний правый угол — кнопка быстрого доступа к списку номеров телефонов. С помощью колесика в правом верхнем углу пользователь может перемещаться между приложениями.

Хотя эти часы пока считаются исследовательским прототипом, у нас уже есть несколько офисных приложений для работы с персональной информацией; часы поддерживают беспроводное взаимодействие с другими устройствами, на которых работают специальные приложения. Они также могут взаимодействовать с ПК, PDA и другими устройствами, поддерживающими беспроводную связь, для просмотра сжатых сообщений электронной почты и информации, аналогичной сообщениям с пейджеров. В конечном итоге, пользователи смогут получать доступ к различным Internet-службам, таким как информация о погоде, условиях движения транспорта, котировки акций и спортивные новости.

Формирование концепции

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

Более детально идея начала прорабатываться в июне 1998 года, когда она была представлена на внутрикорпоративной конференции IBM по повсеместным вычислениям. Специалисты стали задумываться: «А что, если мы действительно могли такое создать?» Объявление Seiko о разработке часов-компьютера Ruputer [1] стало для нас отправной точкой.

Вопросы, вопросы, вопросы

В декабре 1998 года эксперты IBM Research по системной архитектуре, операционным системам, компьютерной графике, дисплеям, аккумуляторам, пользовательскому интерфейсу, синхронизации данных и механическому монтажу собрались в Хауторне (шт. Нью-Йорк) на однодневную конференцию. После обмена мнениями во время конференции несколько человек решили немедленно приступить к созданию таких часов.

Понимая, что одно лишь желание не приведет к успеху, мы сначала попытались получить ответы на несколько важных вопросов. Для кого предназначены эти часы? Что они будут с ними делать? Какие потребуются устройства ввода? Кто будет создавать программы? Какие еще устройства должны будут взаимодействовать с этими часами? Все эти вопросы заставили проанализировать соответствующие технологии — дисплей, центральный процессор, соединения, память, операционная система, срок службы батарей и хранение данных.

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

Мы проанализировали несколько многофункциональных часов, пейджеров, PDA и сотовых телефонов, выясняя, какие устройства уже существуют. Ruputer работает с операционной системой DOS, и является примером часов-компьютеров самого общего назначения. Чтобы их создать, была проделана определенная работа, но мы считали, что можем улучшить пользовательский интерфейс, который в этих часах состоял из нескольких кнопок для навигации между функциями устройства, джойстика для ввода и отражающего ЖК-экрана с разрешением 102x64 пиксела. Мы поставили перед собой две важные цели: добиваться эстетичности изделия и повысить интуитивность пользовательского интерфейса.

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

Базовые принципы проектирования

Рис. 2. Три платы, разработанные для часов-компьютера: системная плата (слева) содержит процессор, коммуникационная плата (в середине) с модулем Bluetooth и плата дисплея (справа) с ЖК-дисплеем
Как видно из рис. 2, мы пришли к выводу, что в часах будет три платы: системная плата, коммуникационная плата и плата дисплея.

На системной плате размещается процессор компании Cirrus Logic (EP 7211), который выпускается в бескорпусной компоновке, занимая меньше места, чем процессор в стандартном корпусе. EP 7211 поставляется вместе с постоянной памятью, которая служит для начальной загрузки, встроенным контроллером, контроллером ЖК-дисплея, инфракрасным контроллером, последовательными коммуникациями, звуком и другими интерфейсами, а также двумя последовательными портами для связи с другими устройствами.

Коммуникационная плата была создана после того, как мы решили реализовать не только инфракрасное соединение, но и радиочастотный беспроводный доступ. Реализация инфракрасного доступа трудности не представляла, поскольку EP 7211 снабжен встроенным модулем инфракрасной связи. Мы также хотели обеспечить радиочастотный беспроводный доступ, поскольку его можно применять для организации связи без активного участия пользователя. Поскольку мы не знали точно, позволят ли ограничения на размер и уровень энергопотребления реализовать технологию Bluetooth, мы предпочли разместить соответствующий модуль на отдельной плате.

Мы отдали предпочтение технологии OLED, поскольку эстетизм был важной целью архитектуры. Мы планировали разместить OLED0-дисплей на другой стороне системной платы. К сожалению, многие компоненты, которые планировалось разместить на одной стороне системной платы, пришлось перенести на другую сторону, в силу чего места для микросхемы OLED не осталось.

Поскольку дисплея с необходимым нам уровнем энергопотребления, высокой плотностью пикселов и элементами управления, позволяющими менять яркость за счет экономии питания, не существовало, мы решили создать такой дисплей совместно с компанией eMagin [2]. Нужен был OLED-дисплей, который можно было разместить на микросхеме так, чтобы процессор воспринимал его как статическую память. Таким образом, в отличие от ЖК-дисплеев, этому дисплею не нужна была бы регенерация. OLED-дисплей должен был появиться лишь через несколько месяцев, поэтому мы решили использовать отражающий ЖК-дисплей с разрешением 96 x 120 пикселов в качестве промежуточного решения, так что в результате были созданы две версии — с ЖК-дисплеем и с OLED.

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

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

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

Предстояло определить два важных компонента спецификации: операционную систему и графическую библиотеку. Выбор операционной системы породил напряженные дискуссии, начиная от вопроса о том, «кому нужна операционная система в часах?» и заканчивая утверждением, что «мы должны предоставить самую передовую операционную систему».

Мы проанализировали возможности нескольких встроенных ОС, таких как pSOS, vxWorks, EPOC 32 и QNX, поговорили с другими специалистами, изучавшими этот вопрос при различных ограничениях. Стало ясно, что трудно лицензировать коммерческую операционную систему для исследовательского проекта, не имея четких планов производства и перспектив массового выпуска. Интегрированные среды разработки также оказались довольно дорогими.

В самой IBM большое внимание уделяется Linux, что и послужило причиной для выбора именно этой операционной системы. Еще одним важным доводом была цена. Исходные тексты ОС и инструментарий распространяются бесплатно. К тому же, многим из нас приходилось работать с Unix-станциями. Оставался открытым вопрос о том, сможем ли мы заставить работать Linux на таком маленьком устройстве, но поскольку другим удавалось использовать Linux на устройствах, обладавших памятью меньшей емкости и меньшими вычислительными ресурсами, мы вполне обосновано полагали, что Linux будет работать и в часах. Специалисты, не принимавшие участия в этом проекте, качали головами и говорили, что мы сами роем себе яму.

Примерно в то же время, когда обсуждался вопрос об операционной системе, мы стали изучать ситуацию с графической библиотекой. Учитывая малые размеры дисплея и ограниченный объем ресурсов, использование полнофункциональной графической библиотеки с самого начала выглядело нереальным. Тем не менее, поддержка стандартной графической библиотеки имела свои преимущества, поскольку было в состоянии существенно упростить разработку приложений. Из возможных вариантов X11 оказалась очень стабильной. Хотя эта библиотека была очень большой, также было известно, что ее разработчики стремятся ее уменьшить.

Таблица 1 позволяет проследить эволюцию спецификаций на аппаратное обеспечение, которые были завершены в июне 1999 года. Вот ее окончательный вид: процессор ARM EP 7211, флэш-память на 8 Мбайт, оперативную память емкостью 8 Мбайт, сенсорный экран, вращающееся колесико, инфракрасный интерфейс и интерфейс Bluetooth, графику X11, а также динамик и микрофон. Мы были готовы начать проектирование и создание трех плат.

Координированная разработка

Рис. 3. Жидкокристаллический дисплей с задней подсветкой использовался для создания прототипов приложений и пользовательского интерфейса для часов с OLED-дисплеем
Параллельно с созданием плат мы изучали вопросы пользовательского интерфейса и работали над программными библиотеками и драйверами, которые могли бы помочь в создании необходимого аппаратного обеспечения. Для этого потребовалось несколько прототипных платформ. Первой стал ПК под управлением ОС Linux, который позволил анализировать исходный текст и инструментарий. Чтобы имитировать приложения, которые должны были работать на часах с OLED-дисплеем, мы использовали цветной ЖК-дисплей с подсветкой (27 x 20 мм). Последний имел разрешение 640 x 480 пикселов, но был несколько больше по размеру, чем нужно. Оказалось весьма полезным попробовать несколько экранов-прототипов, чтобы определить, насколько легко смотреть на них, и в каких случаях информация на дисплее лучше читается. Специальный интерфейсный модуль передавал стандартный вывод монитора с мобильного компьютера на ЖК-дисплей (рис. 3).

Рис. 4. Тестовый стенд для отладки аппаратного обеспечения. Стенд имел размеры примерно 10 x 15 см
Чтобы перенести ОС Linux и создать некоторые из драйверов устройств, мы приобрели у компании Cirrus Logic экспериментальные платы с процессором EP 7211 и напрямую подключили их к ЖК-дисплеям. Планировалось сначала смонтировать плату микросхем для часов на тестовых стендах размером 10 x 15 см (рис. 4), чтобы упростить отладку аппаратного обеспечения. После нескольких первых тестов планировалось установить эти платы в часы. Таким образом, первые часы должны были иметь отражающий ЖК-дисплей с низким разрешением.

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

Группа из Токио занималась аппаратной архитектурой, подбирала компоненты и создавала платы. Та же группа занималась промышленным дизайном, принимала участие в механическом дизайне, переносила стек протоколов Bluetooth и создавала приложения, ориентированные на Bluetooth. Группа из Йорктауна работала над программной архитектурой, пользовательскими интерфейсами, прототипными приложениями, архитектурой драйверов и осуществляла общее руководство проектом. Вторая группа из Йорктауна выполняла работу, касающуюся механического монтажа. Еще одна группа из Йорктауна совместно со специалистами из IBM Zurich и из компании eMagin работала над созданием OLED-дисплея. Группа из Бангалора (Индия) также создавала драйверы для Linux, искала пути переноса библиотеки X11 и разрабатывала инструментарий для тестирования аппаратного обеспечения.

Проектирование плат

Проектирование плат оказалось весьма непростым. Сокращение размеров даже на 0,5 мм стоило огромного труда. Потребовались дополнительные регуляторы для переключения напряжения для OLED-дисплеев, пришлось серьезно поработать над тем, чтобы источник тока не воздействовал на модуль Bluetooth. Учитывая все эти ограничения, мы стремились избавиться от проводов к сенсорной панели, вращающемуся колесику, платам расширения и аккумулятору, используя вместо них золоченные контактные группы.

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

Бескорпусный процессор разместили непосредственно на плате, залив его эпоксидной смолой. Использование модуля памяти, поддерживающего вертикальное размещение микросхем для флэш-памяти, позволило использовать память различного размера и типа в одной и той же архитектуре. Чтобы сэкономить место на плате, мы присоединили модуль DRAM к плате методом перевернутого кристалла. Большинство остальных компонентов были очень малы, и их разместили на системной плате на принадлежащей IBM фабрике монтажа в Ясу (Япония). Размер самого маленького резистора был равен 0,3 x 0,6 x 0,3 мм, поэтому понадобились микроскоп и сверхточная технология припоя, чтобы установить его, не говоря уж о превосходных навыках монтажа и твердой руке.

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

Концепция плат расширения была взята за основу, несмотря на то, что при таком подходе система могла бы потреблять больше энергии. Мы решили, что возможность использовать дополнительные функции и радиочастотную связь того стоят.

Эксперименты с прототипами

Хотя мы знали, что часы с ЖК-экраном появятся первыми, мы начали с приложений и архитектуры пользовательского интерфейса для OLED-дисплея [3] с разрешением VGA. Мы даже подготовили слайд-шоу для представления внешнего вида часов и другой графической информации, но очень быстро осознали пределы того, что можем делать с помощью данной технологии. Мы переключились на создание реального кода ОС Linux для моделирования действий пользователя и того, как должен меняться экран в ответ на эти действия. В частности, имитировался сенсорный экран и вращающееся колесико.

Поскольку сенсорного экрана не было, для имитации его работы использовались четыре клавиши на клавиатуре мобильного компьютера. Вращающееся колесико было похоже на ролик для мыши, поэтому для его эмуляции такая мышь подключилась к ноутбуку. Чтобы иметь возможность быстро создавать прототипы и легко вносить в код изменения, для создания такого кода был выбран Tcl/Tk, высокоуровневый язык написания скриптов.

Мы показывали прототип разным людям и выясняли, насколько удобной и простой они считают навигацию между экранами. Большой, тяжелый интерфейсный модуль, который был подключен к ЖК-дисплею с подсветкой на мобильном компьютере, вызывал смех. Нас часто спрашивали, нужно ли носить с собой этот тяжелый ящик, на что мы отвечали: «Нет, конечно, в нем просто батарейки для часов».

Пришло время выбирать, следует ли ориентировать OLED-дисплей по горизонтали или по вертикали. Как правило, наручные часы имеют вертикальную ориентацию, но мы совсем не были уверены в том, что остановимся именно на этом варианте. Чтобы лучше себе представить, как это будет выглядеть, мы вырезали из куска бумаги прямоугольную рамку размером с дисплей и накладывали ее на различный текст и графические изображения. Когда этот прямоугольник поместили на адресную книгу, стало понятно, что горизонтальная ориентация лучше, поскольку меньшее количество строк, содержащее большее число символов, читать легче, чем наоборот. Что касается графики, ориентация, по-видимому, не имеет особого значения.

Чтобы выбрать цвет OLED-дисплея, мы использовали принтер с разрешением 600 точек на дюйм и напечатали пленки, используя текст разного цвета на черном фоне. Чтобы лучше себе представить, как в действительности будет выглядеть дисплей, мы поместили пленки на флуоресцентный экран и подбирали насыщенность цвета так, чтобы добиться равной яркости. Желтый текст оказался более четким, чем голубой или зеленый в силу более высокой контрастности.

После того, как прототипы приложений для OLED-дисплея с разрешением VGA были созданы, мы преобразовали их с тем, чтобы можно было работать с ЖК-дисплеем с разрешением 96 x 120 пикселов. Поскольку код писался на высокоуровневом языке скриптов, преобразование не потребовало большого труда, но обнаружилось, что на ЖК-дисплее часть функций не выполняется. К счастью, размер точки на ЖК-дисплее ноутбука оказался сравним с размером точки для ЖК-дисплея часов. На первом этапе просто мы подготовили прототип, используя окно на экране дисплея размером 96 x 120 пикселов. Затем код был опробован на реальном ЖК-экране, сначала на экспериментальной плате Cirrus Logic, а затем на тестовом стенде, прежде чем, наконец, перенести его на реальные часы.

Рис. 5. Экспериментальная плата Cirrus Logic с жидкокристаллическим дисплеем. ЖК-дисплей сначала апробировался на экспериментальной плате, а затем на тестовом стенде, и только потом код окончательно переносился на реальные часы
Мы запускали код приложения на ноутбуке, а другая программа на мобильном компьютере периодически делала мгновенные снимки окна и пересылала их на плату Cirrus Logic (рис. 5). Для навигации использовались клавиатура мобильного компьютера и мышь. Позже, как только Linux и X11 стали работать на экспериментальной плате и тестовом стенде, запускать этот код стали и на часах.

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

Монтаж

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

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

После нескольких итераций мы разработали компактную конструкцию доковой станции, которая подходила для часов как с ЖК-экраном, так и с OLED. Для подвода индикаторов состояния на плате к верхней части доковой станции использовались оптические кабели и разработали специальную механическую сборку.

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

Реализация ОС Linux

В рамках подготовки к самому серьезному этапу проекта потребовалось создать среду кросс-разработки, в том числе компиляторы, ассемблеры и двоичные утилиты, которые позволили бы писать код для архитектуры ARM на настольных системах с архитектурой x86. Хотя в нашем распоряжении было множество Internet-ресурсов, потребовалось некоторое время для того, чтобы все правильно организовать.

Когда проект начинался, никто еще не пробовал использовать Linux на процессоре EP 7211, но существовали дополнения, которые адаптировали Linux к процессорам предыдущего поколения — CLPS 711x. После того, как в Internet нашлись соответствующие фрагменты кода, мы написали несколько базовых драйверов устройств.

У EP 7211 неплохой механизм начальной загрузки, в котором данные для старта берутся из ROM-памяти, а затем грузится код самой операционной системы. Этот механизм начальной загрузки позволил довольно быстро добиться работы Linux на нашей архитектуре. После нескольких этапов отладки как среды разработки, так и драйверов устройств, ОС начала выполнять последовательность загрузки и запускала ядро, но на первом ветвлении возникал сбой. К апрелю 2000 года все вопросы были решены, и появившийся на экране значок «#» для оболочки свидетельствовал о том, что Linux работает как на экспериментальных платах, так и на тестовом стенде. Чтобы добиться этого, понадобилось запустить на часах ядро ОС, а также базовые библиотеки (libc, libm и libdl), оболочку и некоторые основные команды.

Рис. 6. Демонстрация работы Shell. Демонстрационная программа выполняла базовые команды, показывая, что операционная система действительно работает на часах
Затем мы начали готовить демонстрационную программу, чтобы показать, как Linux работает на часах. Сначала сообщения начальной загрузки перенаправлялись на ЖК-экран. Сообщения мелькали на экране очень быстро, поскольку на загрузку часов требовалось менее 10 секунд. Пришлось замедлить этот процесс, чтобы получить возможность видеть сообщения, появляющиеся на ЖК-экране. После загрузки запускался бесконечный цикл shell, в котором выполнялись базовые команды наподобие echo, ls и mv. Рис. 6 показывает, что мы научились запускать ОС Linux и shell. Сколько же нам пришлось вынести шуточек типа того, что на наших часах приходится набирать команду date, чтобы узнать время!

Реализация графики X11

Хотя мы добились большой победы, заставив работать Linux, нам еще было нужно проделать то же самое с X11. Большинство считало, что мы сошли с ума, но наши предварительные прикидки показали, что первые рабочие станции, на которых работала графика X11, имели меньше памяти и вычислительных ресурсов, чем наши часы. Если X11 работала на этих машинах, то она, безусловно, сможет работать и на наших часах. И у нас были веские основания для такого выбора. X11 работает на Linux. Другие графические библиотеки, такие как NanoX, MicroWindows и FLTK, лишь создаются. Мы могли на новом уровне использовать знакомый, свободно распространяемый графический API-интерфейс на базе свободно распространяемой операционной системы. Наконец, можно было запускать приложения, написанные на Tcl/Tk.

Однако при реализации такого решения выявились серьезные трудности. При запуске сервера простенькая программа могла вызвать сбой всей системы, что, как удалось выяснить, было связано с ошибками в драйвере дисплея и процедурах записи пикселов. Но когда мы впервые увидели, что нарисованная линия появляется на экране в виде нескольких несвязанных фрагментов, мы поняли, что цель близка. После исправления еще нескольких ошибок удалось запустить программу xclock. В июле 2000 года прототип часов мог показывать часовую и минутную стрелку и отслеживать время, и наши коллеги, наконец, перестали спрашивать: «Все замечательно, а будут ли они время показывать?»

Дебют на LinuxWorld

Мы были готовы продемонстрировать свои часы широкой публике, и знали, что это будет сенсацией. После короткого обсуждения было решено, что выставка LinuxWorld Expo самое подходящее для этого место.

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

7 августа 2000 года корпорация IBM выпустила пресс-релиз [4], в котором заявлялось об успешной работе Linux на прототипе наручных часов. Wall Street Journal и IEEE Spectrum, наряду с другими изданиями, посвятили этому событию свои статьи, и реакция была ошеломляющей.

Когда мы появились на LinuxWorld Expo, чтобы установить свою аппаратуру, наш стенд был уже переполнен, и реакция, как правило, была: «Вот здорово!» Это был весьма рискованный опыт. Линус Торвальдс появился на нашем стенде и сказал, что он был бы рад иметь такие часы. Джим Геттис, один из основных авторов X11, и Эрик Раймонд, проповедник свободно распространяемого программного обеспечения, также посетили наш стенд. Родители, которые видели эти часы, приводили на следующий день своих детей, чтобы и им показать это устройство. Группа специалистов Compaq, которые создали Itsy [5], интересовались, как нам удалось смонтировать компоненты, чтобы все уместить в столь маленькое устройство.

От жидких кристаллов к светодиодам

Вскоре после дебюта на LinuxWorld мы получили первые OLED-дисплеи, и они оказались даже лучше, чем ожидалось. По сравнению с ЖК-дисплеем, который использовался при создании прототипов программного обеспечения, OLED-дисплей выглядел ослепительно [6].

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

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

Последняя задача состояла в том, чтобы реализовать Linux и X11 в часах с OLED-экраном, и тут мы столкнулись с еще одной интересной проблемой. OLED имеет 16-разрядную шину данных, и, как предполагалось, будет использовать короткое слово для записи в него данных. При создании серверного кода X11 мы не указывали опции, которые сообщили бы компилятору о необходимости генерировать короткие слова. В результате, компилятор преобразовывал короткие слова таким образом, что изображения искажались. Проанализировав исходный текст, мы не нашли никаких ошибок. Затем взглянули на объектный код и поняли, что необходимо указать соответствующие опции для компилятора.

Добавление Bluetooth

Примерно в то же самое время мы работали над интерфейсом, связывающим OLED-дисплей с системной платой, и сделали еще один важный шаг в разработке: добавили поддержку Bluetooth к часам с ЖК-экраном. Мы еще раз порадовались тому, что предпочли Linux. Другая группа разработчиков в IBM Watson Research уже написала стек протоколов и драйверы Bluetooth для ОС Linux на процессоре Intel. Мы частично изменили их код, который они назвали BlueDrekar, и поборолись с особенностями компилятора gcc, чтобы заставить этот код работать на процессоре ARM. В целом, однако, задача оказалась проще, чем писать код с самого начала.

Поскольку тело человека поглощает и реагирует на волны на частоте 2,4 ГГц, мы особенно тщательно подошли к вопросу о размещении антенны.

В декабре 2000 года мы представили часы с ЖК-дисплеем и поддержкой Bluetooth на конференции Bluetooth Developers Conference, используя их в качестве наглядного материала на презентации, в которой приняло участие около 3 тыс. человек.

Мы убеждены, что можно создать многофункциональные и элегантные наручные часы-компьютер. И хотя пока мы не представили таковых, мы на несколько шагов ближе к этой цели, чем в начале проекта. Сейчас мы сосредоточены на программных компонентах, вопросах управления питанием [7] и других возможностях использования таких часов [8]. Скажем, пользователи могут захотеть применять часы для отображения данных с других своих устройств. Проще посмотреть расписание или карту на часах, нежели копаться в портфеле или перебирать настройки PDA. Мы также разрабатываем прототип служб, учитывающих местонахождение и контекст, и намерены заниматься Internet-службами.

Еще один важный шаг — сотрудничество между IBM Research и компанией Citizen Watch, анонсированное в октябре 2001 года [9], цель которого — возможность предложить такие часы более широкому кругу пользователей, проводить пилотные тесты и совместные исследования с университетами.

Наша работа убедила нас, что множество функций можно «упаковать» в небольшие устройства. Наличие исходных текстов, API-интерфейсов, надежность программного обеспечения и энтузиазм Linux-сообщества позволят этой операционной системе стать популярной и для таких необычных устройств. По мере того, как исследователи будут сочетать многофункциональные миниатюрные аппаратные средства с надежной операционной системой и тщательно разработанными приложениями с интуитивным пользовательским интерфейсом, все больше и больше устройств, о которых мы читали в научной фантастике, люди станут воспринимать как нечто само собой разумеющееся.

Благодарности

Своим успехом этот проект обязан многим людям. Многие специалисты давали нам полезные советы и предложения, а также поделились ценными техническими решениями. Мы благодарны следующим людям и просим прощения у тех, чьи имена были случайно пропущены: Речел Беллами, Тилман Биерлейн, Том Корби, Стив Депп, Мерфи Девараконда, Дерек Дав, Эмбуджи Гоял, Пол Грийер, Эрик Харрис, Ренделл Исаак, Майкл Карасик, Джон Каридис, Кохичиро Кишимото, Джаядеван Куманан, Катрик Кумар, Акихико Мизутани, Роберт Моррис, Алекс Морроу, Майкл Олсен, Боб Олиха, Кард Пауэлл, Уолтер Реисс, Хейке Риел, Тиаа Сахну, Омеш Сахну, Альфред Спектор, Санил Сриинивасан, Виджай Суханкар и Кен Тамагава.

Литература
  1. "Ruputer the Wrist Computer", http://janus.free.fr/ruputee.html
  2. eMagin, "eMagin and IBM to Demonstrate New OLED Display at the Consumer Electronics Show", 2001, 5 Jan., http://www.emagin.com/pressreleases/pribmwatch.htm
  3. C. Narayanaswami, M.T. Raghunath, "Application Design for a Smart Watch with a High Resolution Display", Proc. 4th IEEE Int'l Symp. Wearable Computers, IEEE CS Press, Los Alamitos, Calif., 2000
  4. IBM Research, "Linux on a Wristwatch", Aug. 2000, http://www.research.ibm.com/WearableComputing/factsheet
  5. W.R. Hamburgen et al., "Itsy: Stretching the Bounds of Mobile Computing", Computer, 2001 Apr.
  6. J. Sanford, E. Schlig, "Direct View Active Matrix VGA OLED-on-Silicon Display", Int'l Symp. Soc. for Information Display, Digest of Technical Papers, vol. 32, 2001
  7. N. Kamijoh et al., "Energy Tradeoffs in the IBM Wristwatch Computer", Proc. 5th Int'l Symp. Wearable Computers, IEEE CS Press, Los Alamitos, Calif., 2001
  8. C. Narayanaswami et al., "What Would You Do with a Hundred MIPS on Your Wrist?" tech. report RC 22057, IBM Research, Yorktown Heights, N.Y., 2001, May
  9. IBM Research News, "Citizen Watch and IBM Research Announce Research Collaboration on Linux Watch Technology", http://www.research.ibm.com/ resources/ news/ 20011011_watchpad.shtml

Чандра Нараянасвами (chandras@us.bm.com) — менеджер отдела носимых устройств центра IBM T.J. Watson Research Center, руководитель проекта разработки Linux-часов. Нобору Камиджох, ведущий научный сотрудник лаборатории IBM Tokyo Research Lab, — главный разработчик аппаратного обеспечения для часов. Мандаям Раджхунат — научный сотрудник центра Watson Research Center; он занимался системным программным обеспечением и приложениями. Таданобу Иною — научный сотрудник Tokyo Research Lab, работавший над архитектурой и тестированием аппаратного обеспечения. Томас Киполла — ведущий инженер центра Watson Research Center, занимавшийся механической компоновкой часов. Джим Сенфорд — ведущий инженер центра Watson Research Center, один из проектировщиков OLED-дисплеев. Покойный Юджин Шлиг был научным сотрудником центра Watson Research Center и еще одним проектировщиком OLED. В лаборатории IBM Software Laboratory (Индия) Срикришнан Венкитесваран, программный инженер, помогал реализации Linux. Динакар Гунигантала, программный инженер, занимался реализацией Linux и X11. Вишал Кулкарни, программный инженер, помогал реализации X11 для часов с ЖК-экраном. Все трое работали над созданием драйверов для устройств. Казухико Ямазаки — старший технический сотрудник IBM Japan, отвечал за промышленный дизайн часов.

Chandra Narayanaswami, Noboru Kamijoh, Mandayam Raghunath, Tadanobu Cipolla, Jim Sanfird, Eugene Schlig. IBM?s Linux Watch: The Challenge of Miniaturization. IEEE Computer, January 2002. Copyright IEEE Computer Society, 2002. All rights reserved. Reprinted with permission