Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
кмоп-ПАМЯТЬ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
238.59 Кб
Скачать

Лабораторная работа

Исследование батарейной кмоп – памяти (cmos Memory).

Цель работы: Изучить назначение и исследовать режимы работы CMOS Memory.

Hазначение: Батарейная память и часы CMOS Memory and Real Time Clock (RTC) – предназначены для хранения информации о конфигурации компьютерной системы и выполняют функции часов – календаря в АТ- машинах.

  1. Стандартное назначение ячеек cmos rtc.

В РС ХТ конфигурация оборудования (объем памяти, количество и тип дисководов и т. п.) задавались вручную DIP переключателями, состояние которых опрашивалось во время POST. В АТ для хранения подобной информации, состав которой расширился, ввели специальную микросхему памяти КМОП небольшого объема, питание которой при выключении компьютера осуществляется от батарейки. В ту же микросхему поместили и часы календарь, также питающиеся от той же батарейки. Эта память и часы SMOS RTC стали стандартным элементом архитектуры РС. Содержание этой памяти и дату сначала модифицировали с помощью внешней загружаемой утилиты SETUP, а позже эту утилиту встроили в BIOS. Микросхемы CMOS RTC имеют встроеную систему контроля непрерывности питания, отслеживающую и разряд батареи ниже допустимого уровня. Достоверность информации конфигурирования проверяется с помощью контрольной суммы.

Доступ к ячейам CMOS RTC осуществляется через порты ввода / вывода 070h (индекс ячейки) и 071h (данные). Поскольку эта память имеет быстродействие порядка единиц микросекунд, между командами записи адреса и чтения / записи данных необходимы программная задержка, например, командной JMP.

Назначение ячеек CMOS RTC приведено в табл. 1

Таблица 1. Стандартное назначение ячеек CMOS RTC

Индекс

Назначение

00h-09h,

32h,

(37h в PC/2)

Я чейки RTC в ВСD – формате

00 – секунды;

01 – секунды будильника;

02 – минуты;

03 – минуты будильника;

04 – часы;

05 – часы будильника;

06 – день недели;

07 – день месяца;

08 – месяц;

09 – год (2младшие цифры года);

32h – век (2старшие цифры года);

37h – век (2 старшие цифры года) в PC/2

0Аh

RTC Status Registr A (статус регистр):

Бит 7 – обновление времени:

0 = готов к чтению

Биты [6: 4] – делитель частоты, для 32,768 кГц – 010

Биты [3: 0]=0110 – входная частота меандра 1024 Гц

0Вh

RTC Status Registr B (статус – регистр):

Бит 7 – остановка часов 0 = нормальный ход

Бит 6 – разрешение периодических прерываний: 0 = Запрещено

Бит 5 – разрешение прерывания от будильника: 0 = Запрещено

Бит 4 – разрешение прерывания по окончании смены времени: 0 = Запрещено

Бит 3 – разрешение выходного меандра : 0 = Запрещено

Бит 2 – BCD/BIN формат: 0 = BCD

Бит 1 – 12 / 24 – часовой режим: 1 = 24 – часовой.

Бит 0 - зимнее / летнее время: 0 = Переключение запрещено

0Сh

RTC Status Register C – чтение флагов идентификаторов прерывания:

Бит 7 – IRQF – общий запрос прерывания

Бит 6 – PF – периодические прерывания

Бит 5 – AF – прерывания от будильника

Бит 4 – UF – зарезервированы

Биты [6:0] - зарезервированы

0Dh

RTC Status Register D:

Бит 7 – питание:

1= норма, 0= разряд батареи

Биты [6:0] - зарезервированы

0Еh

POST Diagnostik Status Bute:

Бит 7 – 1 = Power Lost – терялось питание CMOS

Бит 6 – 1 = Checksum Baol – ошибка контрольной суммы CMOS

Бит 5 – 1 = Bad config – ошибка контролирования

Бит 4 – 1 = RAM Size Error - несоответствие размера ОЗУ, определенного тестом, записи в CMOS

Бит 3 – 1 = HDD Error – ошибка при инициализации жесткого диска

Бит 2 – 1 = Time Valid – нет формальной ошибки часов – календаря (30 февраля, 25 часов).

Биты: [1:0] – зарезервированы

0Fh

Shutdown Code используется POST для определения предыстории останова:

00 = аппаратный или программный сброс;

01 = размер памяти определен;

02 = тест памяти прошел;

03 = тест памяти выявил ошибку;

04 = POST завершен, идет загрузка системы;

05 = JMP FAR [0:467h] с инициализацией контроллера прерываний;

06 = тест защищенного режима прошел;

07 = тест защищенного режима выявил ошибку;

08 = ошибка при определения размера памяти

09 = перемещен блок Extended Memory (INT I5h);

0А – JMP FAR [0:0467h] без инициализации контроллера прерываний;

0В = используется 80386.

10h

Типы HГМД:

Биты [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-Еh = типы 1 - 14, F = тип в байте 19h

(для второго привода) – в 1А h

13h

Зарезервировано

14h

Установленное оборудование:

Биты [7:6] - количество НГМД:

00 = 1, 01 = 2

Биты [5:4] - тип первичного видеоадаптера

00 – EGA или VGA

01 – CGA, 40 столбцов

10 – CGA, 80 столбцов

11 – MDA, 80 столбцов

Биты [3:2] – зарезервированы

Бит 1 -1 = есть математический сопроцессор

Бит 0 - 1= есть НГМД

15h – 16h

Размер базовой памяти, Кб (Low / High) 0280 h = 640к

17h – 18h

Размер расширенной памяти, Кб (Low / High)

19h – 1Ah

Расширенный тип диска C,D

1Bh – 2Dh

Зарезервированы

2Eh – 2Fh

Контрольная сумма CMOS c 10h no 20h (Low / High)

30h – 31h

Реальный размер расширенной памяти, Кб (Low / High)

32h – 33h

В PS / 2 контрольная CRC - сумма CMOS c 10h no 31h Кб (Low / High)

33h

Флаги POST:

Бит 7 – наличие 128 Кбайт ОЗУ под границей 1Мбайт:

1 = есть, доступна теневая память

Бит 6 - флаг SETUP

1 = первая загрузка после выполнения SETUP

Обычно установлен 0

34h – 37h

Зарезервированы (можно писать свою информацию для привязки ПО к машине)

38h – 3Fh

В PS / 2 пароль, доступ по несуществующим адресам 78h – 7Fh

Свободные ячейки CMOS RTC иногда используют для привязки ПО к конкретному компьютеру (системной плате). Эта привязка выполняется в процессе инсталляции ПО, и если не сохранить образ СМОS на диске, то при разрушении информации в СМОS (например из-за разряда батарейки) пользователь потеряет право на использование ПО. По этой причине такой способ привязки нельзя считать корректным, поскольку изготовитель ПО на себя ответственность за батарейку, естественно, не берет.

В преддверии 2000 года с его проблемой «двух нулей» обратим внимание на формат представления даты: первоначально под год отводился лишь байт 09 (две младшие цифры), старшие подразумевались равными 19. Впоследствии (386-е и старше) добавили еще один байт для века (32h или 37h ), однако он автоматически (аппаратно схемой RTС) при переходе от 1999 до 2000 года инкрементируется не всеми таймерами. В таком случае после Нового 2000 - го года его можно установить и вручную (до инкремента в 2099 году эти компьютеры вряд ли доживут). Однако и здесь возможен подвох – не во всех версиях BIOS на XXI век правильный календарь- дни недели, указанные в календаре BIOS SETUP могут не совпадать с реальными. Дни недели календаря BIOS используются только при ручной установке даты – ОС использует свои календари. А вот неверный отсчет високосных годов может исказить дату.