Ни для кого не секрет, что в последнее время борьба за покупателя на рынке бытовой и портативной компьютерной техники заставляет производителей устройств изобретать все новые и новые дополнительные возможности, качественные характеристики устройств постоянно совершенствуются. В целом можно сказать, что системы все больше усложняются, и требования к их вычислительным ресурсам возрастают. Изменяются стандарты графического интерфейса: необходимо отображать информацию в более понятном для пользователя представлении, с большим разрешением, с лучшим цветом, чем раньше. Увеличиваются требования и к скорости передачи данных, надежности и безопасности сетевых протоколов. Этому способствует непрерывный рост объема информации, получаемой из Internet, уверенное продвижение стандартов GPRS и Blue Tooth. Для функционирования таких устройств требуется соответствующая поддержка на аппаратном и программном уровнях: электронная схема с процессором, памятью, портами, контроллерами и компактная, надежная и функциональная операционная система, которая управляет многочисленными ресурсами современных переносных устройств. Далее я буду называть этот комплекс (электронные компоненты + операционная система) встраиваемым устройством (embedded device).

SmartMedia
Новые требования к портативным устройствам заставляют решать проблему обработки и хранения больших объемов данных. Поэтому основное внимание уделяется, прежде всего, организации этих данных (использованию устройств хранения информации). Возможности применения устройств хранения информации в embedded devices несколько шире, чем может показаться на первый взгляд. Это и системы, непосредственно работающие с цифровыми данными (фотоаппараты, видеокамеры, карманные записные книжки, MP3-проигрыватели, мобильные телефоны и т. п.), и накопители, позволяющие операционной системе загружать часть микрокода с карт памяти или сохранять журналы.

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

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

Компоненты доступа к накопителю

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

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

  • API верхнего уровня позволяет разработчикам прикладных программ для встраиваемых устройств абстрагироваться от тонкостей реализации нижележащих драйверов, в том числе используемого аппаратного обеспечения. Это может быть, например, стандартный набор функций языка C для доступа к файлам.
  • Драйверы устройств — модули, которые используют специфические для данного устройства хранения информации команды и протоколы, обеспечивающие стандартизированный интерфейс доступа к данным. Обычно они предоставляют в качестве интерфейса набор функций чтения/записи блоков (секторов) данных и получения информации о параметрах устройства. Эти функции используются системными загрузчиками и драйверами файловых систем. В одной системе может быть установлено несколько драйверов устройств, для каждого из используемых типов накопителей.
  • Драйверы файловых систем предоставляют библиотекам API верхнего уровня набор стандартных функций для работы с файлами. Драйверы файловой системы используют для доступа к устройствам хранения информации функции, предоставляемые драйверами устройств (напрямую или через модуль кэширования).
  • Модуль кэширования — очень важный для производительности системы компонент. Он может кэшировать как запросы на чтение, так и запросы на запись данных. Но поскольку в случае использования отложенной записи мы можем потерять последние данные (например, при неожиданном для файловой системы отключении сменного носителя информации), в некоторых системах используется только кэширование считываемых данных. Эффективность чтения возрастает за счет большой разницы в скорости доступа к данным физического носителя и скорости обращения к оперативной памяти, где хранится кэш, а также за счет частого обращения к служебным областям и данным каталогов, которые при последовательном обращении нередко находятся в одних и тех же блоках данных.
  • Аппаратное обеспечение — само устройство хранения информации, в том числе аппаратный интерфейс для подсоединения либо напрямую к портам управляющего процессора, либо к специализированному контроллеру данного устройства.

Ниже приведен пример из реального проекта — схема доступа к накопителю.

Устройства хранения информации

SD memory card
Отдельно стоит поговорить о носителях информации, используемых в рассматриваемом классе устройств. Главным требованием в большинстве случаев считается компактность при достаточной емкости. Поэтому основными используемыми носителями информации являются карты памяти. Это компактные устройства хранения данных весом несколько граммов и площадью в несколько квадратных сантиметров. Роль непосредственного носителя играет флэш-память (flash memory).

Флэш-память — энергонезависимая полупроводниковая перезаписываемая память с произвольным доступом. Генетически она произошла от «памяти только для чтения» — Read Only Memory (ROM) — и является продолжением линейки ROM-PROM-EPROM-EEPROM. Предшественницей флэш-памяти была технология Electronically Erasable Programmable Read Only Memory (EEPROM), т. е. память только для чтения с возможностью электронного стирания и «прожигания» информации. К сожалению, EEPROM не обеспечивала приемлемую для накопителей скорость доступа к данным. Эта проблема была решена за счет архитектуры флэш-памяти, позволяющей работать с данными параллельно, целыми блоками.

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

Memory Stick
Среди наиболее популярных карт памяти стоит выделить Compact Flash (Type I/II), Smart Media, MMC (Multi Media Card)/SD (Secure Digital) и уверенно завоевывающий популярность стандарт от Sony — Sony Memory Stick. Подробную информацию об этих стандартах можно найти на http://www.compactflash.org, http://www.ssfdc.or.jp, www.mmca.org и www.memorystick.org. Что касается предлагаемых в настоящее время объемов хранимых данных, наибольшее количество решений находится в диапазоне 16-128 Mбайт, значительно меньше предложений на 256-512 Mбайт, только начинают появляться гигабайтные карточки. Если верить заявлениям производителей, не за горами объемы и в несколько гигабайт. Характеристики устройств хранения показаны в Таблице 1.

Memory Stick Duo
Конечно, использование файловой системы не ограничивается только картами памяти. Например, если устройство не имеет энергонезависимого накопителя информации, для удобного хранения данных все же потребуется файловая система. Только в этом случае в роли устройства будет выступать память (RAM-диск). Для процесса обмена данными между устройством и другими типами внешних накопителей (такими, как CD-ROM в случае MP3-проигрывателя или портативный жесткий диск) также необходима соответствующая поддержка файловой системы.

Варианты файловых систем

Теперь поговорим о логической структуре сохраняемой информации, т. е. непосредственно о типе файловой системы. Если рассматривать наиболее распространенные файловые системы, можно выделить классы систем DOS/Windows и Unix. Они отличаются по целому ряду аспектов: именованию файлов и путей, зарезервированным служебным именам, чувствительности к регистру, схеме обеспечения прав доступа и т. д.

Если разработчик вынужден поддерживать несколько файловых систем одновременно, важно очень четко понимать все эти отличия. В практике компании «Астрософт Девелопмент» задача реализации файловой системы усложнялась еще и потому, что доступ и к уже имеющейся у заказчика Unix-ориентированной файловой системе HIFS, и к реализуемому нами семейству файловых систем FAT должен был осуществляться через один и тот же набор функций API верхнего уровня. Помимо перечисленных выше возникали и концептуальные проблемы: например, понятие связей (links) в Unix-совместимых файловых системах не имеет аналогов в файловых системах DOS/Windows.

Почему FAT?

Выбор именно FAT в качестве файловой системы не случаен. В последнее время он принимается производителями карт памяти и оборудования для работы с ними как стандарт de facto. Это неудивительно, поскольку стандарт достаточно простой, позволяет создавать эффективные по скорости работы реализации, большинство операционных систем персональных компьютеров поддерживает его, и проблем с драйверами или интерпретацией имен файлов не возникает. Если реализовать семейство FAT в полном объеме, это будет достаточно мощная универсальная файловая система. Наиболее исчерпывающий набор функций должен включать в себя реализацию FAT12/FAT16/FAT32, что позволит поддерживать все существующие и планируемые объемы носителей информации. Для поддержки концепции длинных имен необходимо иметь подсистему VFAT. В таком варианте система представляет собой мощное средство, позволяющее работать с длинными и короткими именами файлов как в кодировке OEM(ANSI), так и в UNICODE.

Сделай сам

Теперь я расскажу о задачах, которые встают перед разработчиками файловой системы. На этапе планирования и разработки архитектуры необходимо очень четко определить все требования, предъявляемые к будущей системе. Это стандарты, описывающие выбранный тип файловой системы, и ограничения, накладываемые используемой операционной системой и спецификой поддерживаемого аппаратного обеспечения. Существует множество реализаций наиболее популярных файловых систем, и FAT в том числе. Многие из них не совсем четко следуют стандартам. Поэтому придется изучить не только сами спецификации, но и рекомендации по достижению совместимости с максимальным количеством уже существующих систем.

С самого начала необходимо уделить особое внимание методике тестирования. Файловая система представляет собой достаточно сложный программный продукт, и изменения в одном модуле могут оказывать влияние на другие. Поэтому необходимо регулярно проверять ВСЮ реализованную на данный момент функциональность. Если проводить эти тесты вручную, возникает ряд проблем: высокая вероятность ошибки при прогоне большого количества тестов, значительные временные затраты тестера или разработчика (не надо забывать, что скорость доступа, например к картам памяти, значительно ниже, чем к оперативной памяти).

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

Некоторые моменты достаточно сложно проверить автоматически, поэтому иногда все же проще выполнять тестирование вручную. Для FAT — это, например, корректность работы с таблицей размещения файлов (File Allocation Table), корректность и оптимальность заполнения каталогов при операциях создания, удаления и переименования файлов с короткими и длинными именами и т. п.

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

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

Затем нужно выбрать тип файловой системы. В некоторых случаях стандарт накопителя уже определяет, какую файловую систему предпочтительнее задействовать для достижения максимальной совместимости с большинством устройств. Однако существует несколько стандартов, которые тоже могут использоваться: например, FAT, NTFS и HPFS. Выбор того или иного типа файловой системы диктуется приложениями, которые будут работать с накопителем. Если главная задача — обмениваться мультимедийными данными с PC, то идеально подойдет FAT с ее высокой скоростью доступа и совместимостью с большинством используемых операционных систем. В случае применения накопителя для работы в устройствах, поддерживающих сетевые файловые системы (TFTP, rcp, FTP), это должна быть система с поддержкой специальных функций и требований, например Cisco IOS File System (IFS). Также всегда остается возможность написать свою, абсолютно независимую, файловую систему, если вопросы совместимости не являются определяющими.

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

Алексей Уткин работает в компании «Астрософт», имеет сертификат MCP. Специализируется на проектировании и разработке протоколов, низкоуровневых приложений, систем безопасности сетевых приложений. С ним можно связаться по электронной почте по адресу: Alexei.Utkin@nov.astrosoft.ru.


Земля колибри

22 мая в Москве прошла девятая ежегодная научно-техническая конференция-выставка, посвященная документообороту и автоматизации управления DOCFLOW 2003. В рамках этой конференции компания «ТерраЛинк», один из ведущих системных интеграторов и лидеров в области информационных технологий и консалтинга, провела открытый форум, посвященный продуктам и технологиям компании Hummingbird, под названием Hummingbird Day.

Посетители форума могли ознакомиться с решениями в области управления документами и знаниями, с примерами внедрения продуктов Hummingbird в России и странах СНГ, а также с разработками «ТерраЛинк», расширяющими базовую функциональность продуктов Hummingbird.

Канадская компания «ТерраЛинк» является авторизованным дистрибьютором решений и ведущим партнером в России и странах СНГ международной компании Hummingbird — разработчика первой в мире интегрированной системы управления корпоративной информацией и знаниями Hummingbird Enterprise.

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

Примером удачного внедрения технологий Hummingbird за пределами нашей страны, безусловно, можно считать использование компанией Guidant инструмента управления архивными записями Hummingbird RM, входящего в пакет Hummingbird Enterprise. Компания Guidant является производителем медикаментов и медицинского оборудования. В марте 2003 г. стали известны результаты независимого исследования, проведенного фирмой Nuclear Research, специализирующейся на оценке финансовой эффективности ИТ-инструментов, согласно которому Guidant после внедрения технологии Hummingbird получила возврат на инвестиции в размере 318% всего лишь за четыре месяца. Эффект был достигнут за счет уменьшения затрат на персонал и телекоммуникации, а также благодаря повышению производительности труда администраторов архива и других сотрудников.

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

Леонид Линьков, журнал Windows & .NET Magazine/RE