Рассмотрим пример подключения PCMCIA карт к мобильному компьютеру Tx800.
Первое, с чего пришлось начинать - это разбираться с контроллером. При внешней видимости совершенно нормальной работы (информация о системе Windows XP сообщала, что "устройство работает нормально" - устройство имеется в виду не карта, а PCMCIA контроллер) ни одна из вставляемых карт не только не определялась системой Windows XP, но даже не приводила к попыткам "поискать" что-нибудь вроде драйвера. Возможно, это относится только к нашей партии компьютеров, но тем не менее момент неприятный.
К счастью (имели уже опыт по комплектности поставок программного и аппаратного обеспечения) нами, вместе с компьютерами, у производителя были заказаны загрузочные USB-флэшки. Одна из них (Part. no. 105963-000) предназначена для коррекции BIOS. Флэшка вставляется в любой из трех USB разъемов компьютера, включается питание, в BIOS устанавливается соответствующий порядок загрузки и производится загрузка DOS и командного файла настройки.
Фото 1.
Чтобы ненароком не запороть систему на винчестере, перед загрузкой с флэшки я отключаю кабель от диска (фото 1). Загрузочная USB флэшка на снимке не показана, хорошо виден один из USB-разъемов, который можно использовать для загрузки. Показанная на фото SD карта используется для работы с DOS и при операции обновления EEPROM также извлекается из компьютера.
Порядок обновления EEPROM контроллера после загрузки системы следующий:
1. Принять соглашение [ACCEPT].
2. Выбрать пункт меню [Advanced...]
3. Выбрать пункт меню [Program PCI1520 Cardbus EEPROM...]
4. Проверить EEPROM, выбрав пункт [Verify adapter EEPROM]
5. Если на экране появилось сообщение:
FC: no differences encountered
то дальше выйти из программы настройки - ничего делать не нужно.
6. Если есть несовпадения, то выбрать пункт меню [Program Single PCCard adapter]
7. После завершения программирования - проверить EEPROM для контроля.
8. Выключить компьютер.
Фото 2.
После прошивки восстанавливаем соединение с винчестером, отключаем флэшку, перезагружаем компьютер с Windows XP и проверяем работоспособность PCMCIA разьема, вставляя в него имеющуюся карту (установку драйверов производить по инструкции к карте). Косвенным индикатором нормальной работы PCMCIA служит красный светодиод на плате компьютера (фото 2). После установки карты и загрузки драйверов он загорается.
После проверки работоспособности PCMCIA под Windows XP переходим к установке драйверов для DOS.
Для подключения радиокарт, как правило, необходимо установить драйвера двух служб - Socket Service и Card Service. Известны два комплекта этих драйверов от SystemSoft и Phoenix Technologies. Однако установка драйверов одного производителя успехом не завершилась. Если служба Socket Service устанавливалась почти без проблем (во всяком случае - без сообщений об ошибках), то Card Service никак не устанавливалась. CS от SystemSoft выдавал ошибку защиты памяти, а PCMCS (варианты - PCMCS95 и PCMCSFUL) выдавали номер ошибки и тоже не вставали.
Наиболее подходящим вариантом службы Socket Service мне показался драйвер SystemSoft
SSCBTI.SYS, ориентированный на контроллеры PCMCIA Texas Instruments. Его недостатком можно считать то, что
он рассчитан максимум на контроллер TI1420 и при попытке загрузки выдает сообщение об отсутствии PCMCIA:
CardBus adapter not found
Но это оказалось возможным устранить следующим образом. Среди списка ключей драйвера есть ключи /VENDORID и /DEVICEID[0]. Поскольку контроллер, установленный в Tx800 - Texas Instruments, то ключ /VENDORID можно не использовать (производитель тот-же), а в качестве параметра ключа /DEVICEID[0] использовать ID контроллера TI1520, т.е. AC55. При запуске с этими параметрами проблем не возникает. Надо только перед загрузкой драйвера подгрузить Driver Extension Services (CARDXTND.SYS).
Таким образом в файл CONFIG.SYS добавляем следующие строчки:
deviceHIGH=C:\PCMCIA\cardxtnd.sys
deviceHIGH=C:\PCMCIA\sscbti.sys /deviceid[0]:ac55
(предполагается, что указанные файлы находятся в каталоге PCMCIA).
Теперь рассмотрим службу Card Service. После пробы разных комбинаций удалось подобрать рабочую конфигурацию с драйвером PCMCSFUL.EXE. Для начала, следует загрузить файл CNFIGNAM.EXE. Этот файл обеспечивает загрузку параметров Card Service из файла PCM.INI. Запуск драйвера PCMCSFUL.EXE с прямым указанием параметров в командной строке (без загрузки CNFIGNAM.EXE), приводит к сообщению об ошибке:
WARNING: Command-line ignored
Приходится обратиться к редактированию файла PCM.INI, а точнее, к секции этого файла,
которая указывается при запуске CNFIGNAM.EXE. В нашем случае это секция DEFAULT, но может быть
использована и другая. Пример секции файла PCM.INI:
[DEFAULT]
pcmss=
pcmcs=/addr=d0 /irq=9
pcmscd=
pcmrman=
pcmata=
UseCards=
SetupMode=1
ComPort=
ATASpinDownTime=
CardSettleTime=660
Остановимся на значениях параметров. Строка pcmss оставлена пустой, так как мы используем другую службу Socket Service. В строке pcmcs, которая используется при запуске Card Service, указаны базовый адрес области памяти, используемый PCMCIA и номер прерывания. Следует заметить, что без указания номера прерывания служба не устанавливалась, а номер прерывания выбирается из свободных от других устройств. В инструкции на программное обеспечение Phoenix Technologies указано, что номер прерывания должен быть от 8 до 12, однако все вполне работало и при прерывании 7.
Для загрузки драйверов добавляем в файл CONFIG.SYS следующие строчки:
devicehigh=C:\PCMCIA\cnfignam.exe /DEFAULT
devicehigh=C:\PCMCIA\pcmcsful.exe
Предполагается, что файлы CNFIGNAM.EXE, PCMCSFUL.EXE и PCM.INI находятся в каталоге PCMCIA.
В заключение приведем полный текст файлов CONFIG.SYS и PCM.INI:
CONFIG.SYS
PCM.INI