Стандарт PCMCIA предусматривает 16-разрядный интерфейс и одну линию запроса прерывания (IRQ). Система расширения PCMCIA объединяет все — от компьютера и унифицированного гнезда для плат PC Card до программных вызовов, обеспечивающих связь программных средств с системой расширения PCMCIA. Эта система расширения в общем виде представлена на рис. 3.20.
Рис. 3.19. Общий вид модемных PC Card
Рис. 3.20. Система расширения PCMCIA
Устройство, поддерживающее стандарт PCMCIA, может иметь от одного до 255 адаптеров PCMCIA. Каждый адаптер обслуживает до 16 отдельных портов PCMCIA. Таким образом, стандар PCMCIA 2.0 предусматривает возможность объединения в одной системе до 4080 плат PC Card.
Регистры памяти и ввода-вывода каждой платы PC Card отображаются в адресном пространстве компьютера. Компьютер осуществляет доступ к ресурсам PCMCIA-карты через одно или несколько окон, представляющих собой блоки памяти или регистров с прямой адресацией. Вся память платы может быть собрана в одном окне больших размеров (если нужно ее просто расширить), или же к ней обращаются постранично (как к EMS-памяти) через одно или несколько окон. PCMCIA-карта сама устанавливает режим доступа на основании данных о конфигурации, хранящихся в ее собственной памяти.
Для обеспечения логической связи между PCMCIA-картой и персональным компьютером разработан программный интерфейс под названием Socket Services. С помощью набора функциональных вызовов по прерыванию IRQ lAh программа может получить доступ к функциям PC Card. Интерфейс Socket Services делает доступ к плате аппаратно-независимым — примерно так же, как BIOS для PC. В действительности, интерфейс Socket Services разработан так, чтобы его можно было встраивать в BIOS компьютера типа IBM PC. Но интерфейс Socket Services иногда реализуется в виде драйвера устройства, так что возможности существующих компьютеров также можно дополнять функциональными возможностями PCMCIA.
С помощью Socket Services компьютер формирует окна, используемые PCMCIA-картой для доступа. После этого память или регистры могут непосредственно адресоваться компьютером. Отдельные или сгруппированные байты могут считываться или записываться с помощью функциональных вызовов Socket Services.
В 1992 г. был утвержден стандарт Card Services, определяющий программный интерфейс для доступа к PCMCIA-картам. Этот стандарт устанавливает набор программных вызовов, обеспечивающих связь с теми частями интерфейса Socket Services, которые не зависят от операционной системы компьютера. Подобно Socket Services интерфейс Card Services связан с прерыванием lAh и может быть реализован либо в виде драйвера, либо в качестве встроенного блока операционной системы. Для операционных систем, работающих в защищенном режиме необходим последний вариант исполнения интерфейса Card Services.
Система конфигурации PCMCIA, получившая название "Структура идентификации платы" (CIS — Card Identification Structure), или "метаформат" платы, предусматривает обеспечение необходимой связи между PCMCIA-картой и компьютером при помощи нескольких уровней или слоев совместимости. Так же как в случае с аппаратным интерфейсом, каждый следующий слой CIS все в большей степени отражает специфику конкретного устройства.
Только первый слой, так называемый базовый слой совместимости (Basic Compability Layer), является обязательным. Этот слой показывает, как организована память платы. Для этого нужны только два вида информации: структура данных, используемых самим слоем, и такие физические характеристики устройства, как количество головок, цилиндров, а также секторов реального или виртуального диска.
Следующий вышележащий слой называется слоем формата записи данных (Data Recording Format Layer). Он указывает, каким образом организуется запись данных на блочном уровне. Стандарт 2.0 предусматривает четыре формата: непроверяемые блоки, блоки с коррекцией ошибок по контрольной сумме, блоки с контролем ошибок циклическим избыточным кодом и данные вне блоков, организованные не так, как на диске.
Третий слой CIS, слой организации данных (Data Organization Layer), определяет способ логической организации данных на плате, т.е. указывает тот формат операционной системы, которому соответствуют данные. Различают четыре возможных варианта: DOS; файловая система Flash компании Microsoft для флэш-памяти; образ ПЗУ "выполнение на месте" (eXecute In Place, или XI Р); и специфическая прикладная организация.
Четвертый слой CIS предназначен для конкретных системных (system specific) стандартов, которые соответствуют определенным операционным условиям. Например, стандарт XIP определяет, каким образом код программ, записанный в платах ПЗУ, будет считываться и выполняться.
Установочная информация для всех этих слоев хранится в зарезервированной области памяти PCMCIA-карты, называемой памятью атрибутов (Atrib-ute Memory). Эта область изолирована от обычной памяти платы, которая в PCMCIA 2.0 называется общей памятью (Common Memory). Структура данных CIS представляет собой последовательно соединенную цепочку информационных блоков, именуемых кортежами, длина каждого из которых может составлять до 128 байт. Чтобы обеспечить для всех систем общее начало отсчета при поиске данных CIS, первый кортеж метафайла располагается по первому адресу памяти атрибутов. Благодаря этому данные будут находится в пределах адресного пространства даже тех микропроцессоров, которые способны работать только с одним мегабайтом ОЗУ. Поскольку система CIS должна функционировать в любом PC или другом компьютере, предусматривается доступ к памяти только по 8-разрядной шине.
Таблица 3.9. Кортежи конфигурации PCMCIA 2
КОД | Наименование | Описание |
0 | CISPLNULL | Пустой кортеж; игнорируется |
1 | CISPLDEVICE | Кортеж информации об устройстве (общая память) |
2—7 | Резервируется для будущих, совместимых с предыдущими, версий кортежа информации об устройстве | |
8—OFh | Резервируется для будущих, несовместимых версий кортежа информации об устройстве | |
CISPLCHECKSUM | Кортеж проверки контрольной суммы | |
CISPLLONQLINKA | Кортеж управления длинной связью (с памятью атрибутов) | |
10h | CISPLLONGLINKC | Кортеж управления длинной связью (с общей памятью) |
11h | CISPL LINKTARQET | Кортеж управления целевой связью |
12h | CISPLNOLINK | Кортеж управления при отсутствии связи |
13h | CISPLVERSJ | Кортеж информации о версии Уровня 1 (изделии) |
14h | CISPL ALTSTR | Кортеж строки альтернативного языка |
15h | CISPLDEVICEA | Информация об устройстве памяти атрибутов |
16h | CISPLJEDECC | Информация о программировании по стандарту JEDEC для общей памяти |
17h | CISPLJEDECA | Информация о программировании по стандарту JEDEC для атрибутов памяти |
18h | CISPLCFIG | Кортеж конфигурируемости платы |
19h | CISPLENTRY | Кортеж ввода конфигурации |
1Ah | CISPLDEVICEOC | Информация для общей памяти о других эксплуатационных параметрах устройства |
1Bh | CISPLDEVICEOA | Информация для памяти атрибутов о других эксплуатационных параметрах устройства |
1Ch | CISPL VERS @ | Кортеж версии Уровня 2 |
1Dh | CISPL FORMAT | Кортеж формата |
1Eh—1Fh | CISPL GEOMETRY | Резервируется для будущей стандартизации |
40h | CISPLBYTEORDER | Кортеж порядка следования байтов |
41 h | CISPLJ3ATE | Кортеж даты |
Первые два байта каждого кортежа, как и формат многих предопределенных кортежей, жестко регламентированы. Первый байт кодирует функцию кортежа и его параметры. Второй байт служит для связи со следу ющим кортежем цепочки (если он есть) и определяет количество байт данных в кортеже с указанием адреса начала следующего кортежа. Стандарт PCMCIA 2.0 определяет опции для многих общих кортежей, как показано в табл. 3.9.
Изготовители плат PCMCIA могут добавлять собственные кортежи с данными для установки плат, содержащих фирменные функциональные возможности.