В РС ХТ аппаратная конфигурация РС (объем памяти, количество и типы дисководов, тип видеоподсистемы и т. п.) задавались DIP-переключателями, состояние которых опрашивалось системой BIOS перед выполнением POST-программы. При изменении аппаратной конфигурации (реконфигурировании АПС) требовалось изменять состояние этих переключателей на системной плате вручную, что не просто, т. к. их назначение и расположение на системной плате специфично для каждого ее типа. В РС/АТ, для хранения подобной информации, состав которой, кстати, заметно расширился, ввели специальную микросхему памяти небольшого объема, питание которой при выключенном компьютере осуществляется от специальной батарейки или аккумулятора. В ту же микросхему поместили и часы-календарь (чтобы часы не останавливались, когда компьютер выключен). А чтобы снизить потребление мощности от батарейки, выбрали структуру КМОП (CMOS - Complimentary Metal-Oxide-Semiconductor - комплиментарный полупроводник, выполненный по металло-оксидной технологии на полевых транзисторах). Эта память и часы - CMOS Memory and Real Time Clock (RTC) стали стандартным элементом архитектуры РС/АТ. Содержимое этой памяти, время и дату модифицировали сначала с помощью внешней загружаемой утилиты SetUp, а позже эту утилиту встроили в BIOS. Эта микросхема CMOS RTC имеет встроенную систему контроля питания, отслеживающую разряд батареи ниже допустимого уровня. При разряженной батарее BIOS при загрузке ОС выводит на монитор сообщение типа:
CMOS battery state low
CMOS display type mismatch
RUN SETUP UTILITY
Press <F1> to RESUME
(низкое напряжение батареи питания CMОS-памяти. Содержимое CMOS-памяти неправильно. Запустите утилиту SETUP. Нажмите F1 для ее вызова).
Отсутствие ошибок в CMOS-памяти, проверяет BIOS при загрузке ОС, с помощью контрольной суммы, формирующейся при модификации содержимого CMOS-памяти и хранящейся в ней же.
Доступ к ячейкам CMOS RTC осуществляется CPU через порты ввода-вывода 70h (адрес ячейки) и 71h (данные).
Назначение ячеек SMOS RTC приведено в таблице 1.5.
Таблица 1.5. Стандартное назначение ячеек CMOS RTC.
Адрес |
Назначение |
00 - 09h |
Ячейки RTC в BCD-формате: 00 - секунды 01 - секунды будильника |
0Ah |
RTC Status Register А (регистр состояния)Бит 7 - обновление времени (0- готов к чтению) Биты 6:4 - делитель частоты )для 32,768 КГц = 010 Биты 3:0 = 0110 - выходная частота меандра 1024 Гц |
0Bh |
RTC Status Register B ( регистр состояния)бит 7 - остановка часов (0= нормальный ход) |
0Ch |
RTC Status Register C - флаги прерываний:бит 7 - IRQF - общий запрос прерываний бит 6 - PF - периодические прерывания бит 5 - AF - прерывание от будильника бит 4 - UF - прерывание по смене времени биты 3 - 0 - зарезервированы |
0Dh |
RTC Status Register D Бит 7 - питание (1 - норма, 0 - разряд) Биты 6:0 - зарезервированы |
0Eh |
POST Diagnostic Status Byte Бит 7 - power Lost (терялось питание CMOS) Бит 6 - Checksum Bad Бит 5 - Bad config Бит 4 - RAM Size Error - определенный тестом размер ОЗУ не соответствует записи в CMOS Бит 3 - HDD Error Бит 2 - Time Valid- формальная ошибка часов-календаря (напр. 30 февраля, 25 часов) Биты 1:0 - зарезервированы |
0F |
Shutdown Code - используется POST для определения предыстории останова:00 - аппаратный или программный сброс 01 - размер памяти определен 02 - тест памяти прошел 03 - ошибка в тесте памяти 04 - POST завершен, идет загрузка системы05 - JMP FAR [0%0467h ] с инициализацией контроллера прерываний06 - тест защищенного режима прошел 07 - ошибка в тесте защищенного режима 08 - ошибка определения размера памяти 09 - перемещен блок Extended Memory (INT 15h) 0A - JMP FAR [0^0647h] без инициализации контроллера прерываний 0В - используется 80386 |
10h |
Типы НГМД: Биты 7:4 - дисковод А Биты 3:0 - дисковод В 0= нет, 1 = 360 Кбайт, 2 = 1,2 Мбайт, 3 = 720 Кбайт, 4 = 1,44Мбайт |
11h |
Зарезервирован |
12h |
Типы НЖМД: Биты 7:4 - привод 0 Биты 3:0 - привод 1 0 = нет, 1 - Eh = типы 1 - 14, Fh = тип в байте 19h (для второго привода - в 1Ah) |
13h |
Зарезервирован |
14h |
Установленное оборудование: Биты 7:6 - количество НГМД (00 = 1, 01 = 2) Биты 5:4 - тип первичного видеоадаптера (00 = RGA или VGA, 01 = CGA 40 столбцов, 10 = CGA 80 столбцов, 11 = MDA 80 столбцов)Биты 3:2 - зарезервированы Бит 1 = 1 - математический сопроцессор подключен Бит 0 = 1 - есть НГМД |
15 - 16h |
Размер базовой памяти, Кбайт (Low/High) 0280h = 640Кбайт |
17 - 18h |
Размер расширенной памяти, Кбайт (Low/High) |
19, 1Ah |
Расширенный тип диска C, D |
1B - 2Dh |
Зарезервированы |
2E - 2Fh |
Контрольная сумма CMOS c 10h по 20h (High/Low) |
30n - 31h |
Реальный размер расширенной памяти, Кбайт(Low/High) |
32 - 33h |
Используются в PS/2 |
33h |
Флаги POST: Бит 7 - наличие 128 Кбайт ОЗУ под границей 1 Мбайт (1 = есть, теневая память доступна) Бит 6 - флаг SetUp (1 = первая загрузка после выполнения флаг SetUp, обычно = 0) |
34 - 3Fh |
Зарезервированы (можно писать свою информацию для привязки ПО к машине) |
38 - 3Fh |
В PS/2 - пароль, доступ по несуществующим адресам 78 -7Fh |
Cвободные ячейки CMOS RTC 34-3Fh иногда используют для привязки программного обеспечения к конкретному компьютеру, которая выполняется в процессе инсталляции ПО. В этом случае, если не сохранять образ CMOS-памяти на диске, то, при разрушении информации в CMOS, право на использование данного ПО в данном компьютере потеряется.
Контрольные вопросы.
1. Как задавались параметры аппаратной конфигурации в РС/ХТ?
2. Где хранятся параметры конфигурации в РС\АТ?
3. Почему для CMOS RTC используются КМОП-структуры?
4. Как осуществляется доступ к ячейкам CMOS-памяти?
5. Как модифицируется содержимое CMOS-памяти?
6. Каким способом информация CMOS-памяти защищается от ошибок?