| | Новое амплуа Linux
Александр Медведев
По нынешним меркам, Linux - система неприхотливая, не злопамятная (в смысле злоупотребления памятью), шустрая и изрядно популярная. Главное - бесплатная и доступная в исходных кодах, да еще с огромным набором различных программ и программистов-энтузиастов. Все эти качества крайне заманчивы не только для продвинутых пользователей PC, но и для производителей такого оборудования, как различные цифровые помощники и КПК. Итак, ведутся ли боевые действия на этом фронте?
Первое и естественное телодвижение, которое обязательно должно было произвести Linux-сообщество, - портировать систему на существующие КПК, предназначенные для работы с Windows CE. Для этого необходимы прежде всего компилятор (лучше кросс-компилятор, работающий на одной платформе, но компилирующий для другой, например, PC с одной стороны и популярная у производителей КПК архитектура Hitachi SH - с другой) и загрузчик - программа, загружающая в память КПК ядро системы и подготавливающая все необходимое для ее нормальной работы. Кроме того, наверняка придется переписать и отладить драйверы устройств и, возможно, сервер графического интерфейса - с учетом специфического оборудования КПК и присущих ему ограничений (в том числе возможностей по управлению питанием). Наконец, вероятно, потребуется модифицировать некоторое программное обеспечение, дабы оно лучше функционировало в недрах КПК.
Начнем сначала. Компилятор GCC (GNU C compiler), используемый для компиляции различных версий Linux, при желании может быть легко настроен на кросс-компиляцию для процессоров, используемых в КПК. Тем более, как уже неоднократно отмечалось, эти процессоры часто принадлежат популярным архитектурам, имеющим широкий набор средств разработки и отладки. Для создания кросс-компилятора, нацеленного на новую платформу (на основе исходных текстов GCC), достаточно переписать несколько файлов, отвечающих за генерирование окончательного машинного кода, основные и специфические параметры целевой архитектуры. Специалист-энтузиаст способен проделать эту работу за несколько дней, разумеется, если ему будет сопутствовать программистская удача. Так или иначе, в данный момент GCC и стандартные С-библиотеки уже портированы на множество архитектур, в том числе и на две самые популярные среди производителей WinCE-компьютеров - MIPS (в основном серии VR) и SH. Небольшая часть ядра системы, написанная в машинных кодах, также должна быть переписана, но поверьте, это действительно небольшая часть. В основном - переключение, создание и удаление (то есть планирование) задач, управление прерываниями и MMU (модуль управления памятью процессора). Надо отметить, что оные в упомянутых архитектурах достаточно продвинуты и обеспечивают полноценную страничную подкачку.
Теперь необходимо обеспечить возможность загрузки и корректного старта скомпилированного (скажем, на PC) ядра операционной системы. Здесь есть два подхода. Можно перепрограммировать флэш-ПЗУ КПК, поместив туда вместо Windows CE ядро, загрузчик и образ системного диска Linux. Можно написать загрузчик, стартующий под WinCE как приложение и запускающий ядро, расположенное в отдельном файле. (Можно даже попеременно запускать на КПК Linux и Windows CE. Для этого необходимо реализовать в ядре поддержку файловой системы WinCE либо держать образ файловой системы Linux в отдельном CE-файле и обеспечить доступ ядра к нему.) Первый метод неудобен в первую очередь самой процедурой перепрограммирования - индивидуальной для разных моделей КПК, но не столь требователен к памяти, как второй. Впрочем, минимальная система может быть установлена даже на КПК с 2-4 Мбайт памяти (в зависимости от архитектуры процессора). Учитывая, что 16 или 32 Мбайт памяти не редкость в современных КПК, второй метод установки Linux выглядит более разумным. Причем, что интересно, загрузчик (также написанный на C) можно откомпилировать под Windows CE с помощью Microsoft Visual C++. Кстати, на этом этапе уже понадобится возможность удаленной (как правило, производимой через порт RS-232) отладки, предусмотрительно заложенная в ядро. Существенную помощь в отладке может оказать встроенная в ядро поддержка TCP/IP, в том числе и сетевая файловая система NFS. Фактически, во время отладки и экспериментов можно хранить на КПК только ядро и основные системные команды, а все остальное держать на компьютере, подсоединенном к КПК с помощью сетевой карточки или даже последовательного порта.
Далее, необходимо переписать драйверы для специфического оборудования, главным образом для клавиатуры, дополнительных кнопок, системы управления питанием, дисплея. Остальные драйверы (карты памяти, аудио, коммуникационных портов) требуют лишь незначительных изменений, так как c точки зрения программиста зачастую реализованы на стандартный для большинства ПК (да и рабочих станций) манер и не требуют существенной модификации кода.
Самое интересное - пользовательский интерфейс. Традиционные X-windows пока "тяжелы" для КПК (хотя с каждым годом эта фраза становится все менее актуальной, не следует забывать о небольшом размере экрана и прочих ограничениях). Здесь сразу возникает два возможных решения: существенная модификация сервера X-windows, вплоть до реализации непривычной для PC, но часто используемой в КПК схемы: на экране одновременно находятся окна только одного приложения. Второй выход - использование нового оконного интерфейса, нацеленного на подобные КПК-применения. Есть два основных претендента на это звание, базирующихся, впрочем, на одном и том же графическом ядре, но отличающихся подходом к построению API. Это Nano-GUI (www.linuxhacker.org/nanogui) и его соратник Microwindows (microwindows.censoft.com). Первый интерфейс базируется на упрощенном, но очень похожем на X-windows клиент-серверном протоколе Nano X, второй - на библиотеке, соответствующей стандарту ECMA APIW с некоторыми расширениями. Но не следует забывать, что кроме окон (то есть системы вывода) интерфейс включает в себя и систему ввода информации. В случае клавиатурных КПК все просто, но вот для наладонников, несомненно, понадобятся клиентские программы, обеспечивающие рукописный ввод и виртуальную клавиатуру, а возможно - и распознавание речи.
Между тем, работа кипит, и уже существуют пусть не законченные, но успешно запускающиеся и выполняющие основные команды да и прочие символьные приложения версии Linux для процессоров:
- NEC VRxxxx MIPS (linux-vr.org) - например, Casio E-105 и другие;
- Hitachi SH-x (linuxsh3.cjb.net) - например, HP Jornada 680, 430 и другие;
- MIPS Rxxxx (www.cotw.com/projects/nino) - Phillips Nino.
Ведутся работы по портированию Linux на ARM-процессоры (например, на КПК Psion Series 5; см. www.calcaria.net), предпринимаются попытки портировать на КПК другие Unix-подобные системы, например NetBSD. Более подробную информацию вы найдете, воспользовавшись списком ссылок www.linuxce.org/links. Скачайте, подивитесь. Unix на КПК - это как минимум забавно. Если же учесть его непревзойденные сетевые возможности, то и полезно.
Не стоит забывать о КПК, нацеленных на Linux, что называется, "от рождения". Например, корпорация Samsung успешно демонстрировала на "CeBIT 2000" прототип PDA (наладонника - 128,8x83,5x19,9 мм) под управлением Linux с занятным названием Yopy. Судя по всему, он и станет первым промышленным КПК, изначально работающим под управлением Linux. В активе этого устройства:
- производительный процессор архитектуры ARM (200 МГц);
- 3,9-дюймовый цветной (16 бит) активноматричный LCD-дисплей с подсветкой;
- распознавание рукописного ввода;
- Интернет и электронная почта, в том числе через сотовый телефон или беспроводной модем;
- проигрыватель MP3, запись голоса, MPEG-видео, радиоприемник, игры;
- органайзер, словарь, калькулятор, блокнот, будильник и другое программное обеспечение;
- слот CompactFlash, порты IrDA, RS-232, USB.
Впрочем, возможности подробно протестировать все эти заманчивые характеристики пока никто не получил. Ведь пользователям прежде всего интересны качество перьевого ввода и время работы от батарей, а также удобство прилагаемого программного обеспечения, никак не отраженные в скудной технической спецификации.
Интересный Linux-проект затеяли исследовательские лаборатории Compaq. Это Itsy - открытый прототип органайзера будущего, который никогда не будет реализован серийно (по крайней мере, в его нынешнем виде). Он используется для исследований в области PDA, поразительно компактен (значительно меньше и тоньше сегодняшних наладонников), основан на мощном процессоре StrongARM 1100 и притом очень экономичен. Монохромный экран не является недостатком, скорее это дань размерам и низкому энергопотреблению. Что интересно, одним из основных методов управления этим прототипом будет речевой ввод. Схема устройства, дизайн платы, программное обеспечение и документация доступны для энтузиастов, желающих повторить подобное чудо самостоятельно и, возможно, принять участие в его дальнейшем развитии. Множество сведений об Itsy и толковых слайд-шоу находится на исследовательском сайте (research.compaq.com/wrl/projects/itsy) Compaq. | |