Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Учебник - Конфигурация персонального компьютера - файл 1.doc


Учебник - Конфигурация персонального компьютера
скачать (24782.1 kb.)

Доступные файлы (1):

1.doc24783kb.15.11.2011 20:57скачать

содержание
Загрузка...

1.doc

  1   2   3   4   5   6   7   8   9
Реклама MarketGid:
Загрузка...
Глава 1

КОНФИГУРАЦИЯ ПЕРСОНАЛЬНОГО КОМПЬЮТЕРА

S настоящее время широко используются персональные компь­ютеры самых разных типов (IBM PC, IBM XT, IBM AT, PS/2, Compaq-386 и т. д.). Если Вы создаете коммерческое программное обеспечение, следует позаботиться о том, чтобы оно работало на всех типах компьютеров, использующих процессоры серии lintel 8086/80286/80386/80486. Для обеспечения такой совместимости программа должна уметь определять тип используемого цент­рального процессора и, разумеется, тип используемого компьюте­ра. Почему это так важно?

Корпорация Intel, разрабатывая свою серию процессоров 8086/80286/80386/80486, уделила много внимания обеспечению совместимости снизу вверх. Такая совместимость гарантирует возможность непосредственного выполнения старшими моделями процессоров любых программ, подготовленных для младших мо­делей. При этом не требуется повторной компиляции или редак­тирования этих программ.

Однако совместимость снизу вверх не гарантирует (разуме­ется!) обратного - возможности выполнения младшими моделями программ, предназначенных для старших моделей. Поэтому, если Вы желаете добиться от Вашей программы максимальной эффек­тивности и быстродействия, имеет смысл использовать архитекту­рные особенности старших моделей процессоров. Однако это не означает, что Ваша программа должна всегда максимально ис­пользовать все возможности процессора 80486, так как в этом случае она не сможет правильно работать на широко распростра­ненном компьютере IBM AT, использующем процессор 80286.

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

димости. Такой подход позволит Вам в будущем легко реализо­вать возможности процессоров 80586 или 80986 - Вам будет дос­таточно изготовить новый драйвер (или оверлей) и подключить его к уже готовой программе.

Другая проблема связана с большим разнообразием "не впол­не" совместимых с IBM PC/XT/AT компьютеров, выпускающих­ся разными "третьими" фирмами. К этой категории можно также отнести и отечественную ППЭВМ ЕС-1841 - это вроде бы IBM XT, но не вполне, поэтому некоторые программы на этой машине работать не будут.

К счастью, фирмы - производители оборудования записывают в определенные ячейки ПЗУ BIOS некоторый код, по которому можно определить тип компьютера. Можно очень легко отличить IBM XT от IBM AT.

По типу компьютера программа может сделать предваритель­ные, а в некоторых случаях и окончательные выводы о наличии того или иного оборудования. Например, IBM PC или IBM XT нс содержат расширенной памяти или дисковода для работы с гибки­ми дисками диаметром 3,5 дюйма. Разные модели, использующие процессоры 80286/80386/80486, могут использовать различные способы управления двадцатой адресной линией (она использует­ся при работе с расширенной памятью, подробности - в 10-й гла­ве). Кроме того, от модели компьютера зависит способ, которым программа может определить конфигурацию дисковой подсисте­мы. Об этом мы говорили в третьей книге 1 тома "Библиотеки системного программиста", посвященной дисковой подсистеме.

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

Как программа может определить конфигурацию подсистем компьютера?

Для машин класса IBM PC и IBM XT конфигурация задается установкой перемычек на материнской плате и платах контролле­ров периферийных устройств. Программа может получить инфор* мацию об установленных перемычках, прочитав состояние опре­деленных портов компьютера.

Мы уже говорили о том, что в машинах класса IBM AT, IBM PS/2 и машинах более высокого класса установлена КМОП-ламять - память с малым энергопотреблением. Эта память пита­ется от аккумуляторов и содержит информацию о конфигурации многих подсистем (в том числе дисковой подсистемы).

Во время инициализации системы BIOS опрашивает порты, к которым .подключены перемычки и ячейки КМОП-памяти, содер­жащие информацию о конфигурации компьютера. Результат за­писывается в область данных BIOS - в слово конфигурации с ад­ресом 0000:0410.

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

^ 1.1. Определение типа компьютера и версии BIOS

У Вас есть две возможности определить модель компьютера и получить некоторую информацию о конфигурации - прочитать эту информацию из ячеек ПЗУ BIOS или вызвать одну из функ­ций прерывания INT 15h, возвращающую адрес таблицы конфи­гурации.

ПЗУ BIOS содержит по адресу FFFF:FFFE байт, значение ко­торого можно использовать для идентификации типа компьютера:

FF - оригинальный IBM PC;

FE - XT, Portable PC;

FD - PCjr;

FC - AT;

FB - XT с памятью 640 К на материнской плате;

FA - PS/2 модель 25 или 30;

F9 - Convertible PC;

F8 - PS/2 модели 55SX, 70, 80;

9А - Compaq XT, Compaq Plus;

30 - Sperry PC;

2D - Compaq PC, Compaq Deskpro.

Для определения модели компьютера таким способом мы пред­лагаем следующую функцию:

/**

.Name DC_model

.Title Определить модель компьютера

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

.Params Нет

.Return Код модели персонального компьютера:

FF оригинальный IBM PC;

FE XT, Portable PC;

FD PCj r;

FC AT;

FB XT с памятью 640 К на материнской плате;

FA PS/2 модель 25 или 30;

F9 Convertible PC;

F8 PS72 модели 55SX, 70, 80;

9А Compaq XT, Compaq Plus;

30 Sperry PC;

2D Compaq PC, Compaq Deskpro.

V

«include <stdio.h> «include <d6s.n> «include "sysp.h"

char unsigned pc_model(void) {

char unsigned _far *modptr;

modptr = FP_MAKE(OxfOOO,Oxfffe);

return *modptr;

}

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

Более подробную информацию можно получить, вызвав функ цию COh прерывания BIOS INT 15h:

На входе: АН " COh

На выходе: ES:BX = адрес таблицы конфигурации, таблица находится в ПЗУ BIOS;

CF = 0 при успешном вызове прерывания;

CF = 1 если данная версия BIOS не поддерживает функцию COh.

После выполнения прерывания регистры ES:BX будут указы вать на таблицу в области ПЗУ BIOS. В этой таблице имеется бо лее точная информация о типе компьютера, номер версии BIOS сведения об аппаратных особенностях конкретной модели.

Приведем формат указанной таблицы: • S________________________________________

^ Смещение Размер Описание

(+0) 2 Размер таблицы в байтах

(+2) 1 Код модели

(+3) 1 Дополнительный код модели

(+4) 1 Версия BIOS revision: 0 для первой реализации; 2 - для второй и т. д.

(+5) 1 Байт конфигурации оборудования:

бит 7 = канал 3 контроллера прямого доступа

к памяти используется дисковой системой

базового ввода-вывода (дисковой BIOS);

бит 6 •" установлен второй контроллер прерываний 8259;

бит 5 se установлены часы реального времени;

бит 4 а! каждый раз после вызова прерывания

от клавиатуры INT 9h вызывается функция

4Fh прерывания INT 15h;

бит 3 • BIOS поддерживает ожидание внешнего события;

бит 2 - используется расширенная область данных BIOS;

бит 1 - если этот бит установлен в 1, то используется

шина Micro Channel, в противном случае - ISA

бит 0 зарезервирован

(+6) 2 Зарезервировано и равно О (+8) 2 Зарезервировано и равно 0 *

В следующей таблице приведены коды моделей, дополнитель­ные коды моделей и версии BIOS для некоторых широко распрос­траненных типов компьютеров:

^ Код Доп. код Версия BIOS Тип компьютера модели модели

FFh * * 04/24/81 Оригинальная версия IBM PC

FFh * * 10/19/81 IBM PC, в этой версии BIOS

исправлены некоторые ошибки FFh * * 10/27/82 IBM PC, используется

накопитель на магнитном диске (НМД), оперативная память 640 К, поддерживается адаптер дисплея EGA

FEh * * 08/16/82 IBM PC XT

FEh * * 11/08/82 IBM PC XT, Portable

FDh * * 06/01/83 PCjr

FCh * * 01/10/84 IBM AT, модели 068, 099,

частота тактового генератора 6 MHz, емкость НМД - 20МВ

FCh OOh Olh 06/10/85 IBM AT, модель 239, частота " тактового генератора б MHz, емкость НМД - ЗОМВ FCh Olh OOh 11/15/85 IBM AT, модели 319, 339,

частота тактового генератора 8 MHz, используются расширенная клавиатура, BIOS может работать с накопителями на гибких магнитных дисках формата 3,5 дюйма

FCh Olh - Compaq 286/386

FCh 02h OOh 04/21/86 IBM PC XT-286

FCh 04h OOh 02/13/87 PS/2 модель 50

FCh 04h 03h 04/18/88 PS/2 модель 50Z

FCh 05h OOh 02/13/87 PS/2 модель 60

FCh 06h - 7552 "Gearbox"

FCh 09h 02h 06/28/89 PS/2 модель 30-286

FCh 81h OOh 01/15/88 Phoenix 386 BIOS,

версия 1.10

FBh OOh Olh 01/10/86 IBM PC XT, расширенная клавиатура, BIOS может работать с накопителями на гибких магнитных дисках ;

формата 3,5 дюйма

FBh OOh 02h 05/09/86 IBM PC XT

FAh OOh OOh 09/02/86 PS/2 модель 30

FAh OOh Olh 12/12/86 PS/2 модель 30

FAh Olh OOh - PS/2 модель 25

F9h OOh OOh 09/13/85 PC Convertible

F8h OOh OOh 03/30/87 PS/2 модель 80 16MHz

F8h Olh OOh 10/07/87 PS/2 модель 80 20MHz

F8h 04h 02h 04/11/88 PS/2 модель 70

F8h 04h 03h 03/17/89 PS/2 модель 70

F8h 09h - - PS/2 модель 70

F8h 09h 02h 04/11/88 PS/2 модель 70

F8h 09h 03h 03/17/89 PS/2 модель 70

F8h OCh OOh 11/02/88 PS/2 модель 55SX

F8h IBh OOh 10/02/89 PS/2 модель 70-486

9Ah * * - Compaq XT или

Compaq Plus

30h - - - Sperry PC 2Dh * * - Compaq PC или Compaq Deskpro

Следует заметить, что функция COh прерывания INT 15h под­держивается не всеми версиями BIOS, а только теми, которые были изготовлены после 10 января 1986 года. Если Вы используе­те более старые версии BIOS, дополнительный код модели, версия BIOS и байт конфигурации Вам недоступны.

Кроме того, BIOS, изготовленный 10 января 1986 года и уста­новленный в IBM XT, возвращает неправильное значение байта конфигурации.

Символ '*' в таблице означает, что функция COh прерывания INT 15h для данной версии BIOS не реализована. Все, что Вы мо­

жете сделать в этом случае для идентификации BIOS, - получить байт кода модели по адресу FOOOh:FFFEh и дату изготовления BIOS, занимающую 8 байтов начиная с адреса FOOOh:FFF5h. Дата хранится в формате ASCII.

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

«include <stdio.h> ((include <dos.h> ftinclude "sysp.h"

void main(void);

void main(void) {

union REGS rg;

Struct SREGS srg;

int i ;

BIOSINFO far *biosinf_ptr;

printf("\"*BIOSTEST* Информация о BIOS, " "(С) Фролов А., 1991");

// Конструируем указатель на дату изготовления // BIOS. Эта дата записана в ПЗУ по адресу FOOOh:FFF5h.

biosinf_ptr = FP_MAKE(OxfOOO, Oxfff5);

// Выводим дату на экран

printf("\п\пДата изготовления BIOS: ");

for(i=0; i<8; i++)

putch(*((char far *)biosinf_ptr + i));

// Вызываем функцию COh для получения адреса // таблицы конфигурации компьютера.

rg.h.ah = ОхсО;

int86x(0x15, &rg, &rg, &srg);

// Если данная функция не поддерживается BIOS, // читаем код модели компьютера из ПЗУ // по адресу FOOOh:FFFEh.

if(rg.x.cflag == 1) <

printf("\пфункция COh прерывания INT 15h "

"данной версией BIOS не поддерживается\п");

// Конструируем указатель на код модели

biosinf_ptr = FP_MAKE(OxfOOO, Oxfffe);

// Выводим код модели компьютера на экран

i

рг1п1:г("\пКод модели: 9602.2Х",

(unsigned char)(*(char far *)biosinf_ptr));

exit(-l) ;

}

// Конструируем укзатель на таблицу конфигурации b:iosinr_ptr = FP_MAKE(srg.es, rg.x.bx);

// Выводим на экран содержимое таблицы

prlntf("\пАдрес таблицы конфигурации: %Fp"

"\пРазмер таблицы в байтах: %d"

"\пКод модели: %02.2Х"

"\пДополнительный код модели: Жй'"'

"\пВерсия BIOS: %d"

"\пКонфигурация оборудования: %02.2Х",

biosinf_ptr,

biosinf_ptr->size,

blosinf_ptr->niodel,

biosinr_ptr->subiTiodet,

biosinf_ptr->verslon,

biosinf_ptr->hardcfg);

// Определяем конфигурацию компьютера

printf("\п\пКонфигурация оборудования компьютера"

"\п————————————— ——————————..) ;

// Запоминаем байт конфигурации

i = biosinf_ptr->hardcfg;

// Расшифровываем байт конфигурации

if(i & 0х80)

prlntf("\пКанал 3 контроллера DMA используется" " дисковой BIOS");

if(i & 0х40)

printf("\пУстановлен второй контроллер" " прерываний 8259");

lr(l & 0х20)

printr("\пУстановлены часы реального времени");

if(i & 0х10)

printf("\пПосле INT 9h вызывается функция 4Fh" " прерывания INT 15h");

if(i & 0х8)

printf("\nBIOS поддерживает функцию ожидания" " внешнего события");

Л1

if(l & 0х4)

рг1пИ("\пИспользуется расширенная"

" область данных BIOS");

if(i & 0Х2)

printr("\пИспользуется шина Micro Channel");'

if(!(i & 0х2))

prlntr("\пИспользуется шина ISA");

exit(O);

На экране, после запуска этой программы на компьютере Datamini 386 Tower, мы получили:

02/25/89

*BIOSTEST* Информация о BIOS, (С)

фролов А., 1991

Дата изготовления BIOS:

Адрес таблицы конфигурации: FOOO:E6F5 Размер таблицы в байтах: 8 Код модели: FC Дополнительный код модели: 1 Версия BIOS: О Конфигурация оборудования: 70

Конфигурация оборудования компьютера

Установлен второй контроллер прерываний 8259 Установлены часы реального времени После INT 9h вызывается функция 4Fh прерывания INT 15h Используется шина ISA

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

1.2. Установка перемычек на материнской плате

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

Обозначения перемычек и их назначение различны не только для разных типов компьютеров (PC, XT, AT, PS/2), но и для ма­шин разных фирм - производителей оборудования. Поэтому здесь не приводятся конкретные сведения об установке перемычек для оборудования, имеющегося в распоряжении авторов - у Вас мо­жет оказаться другая модель компьютера.

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

Оригинальный компьютер IBM PC в его первоначальном виде в настоящее время используется крайне редко, поэтому мы не бу­дем рассказывать о перемычках для IBM PC.

Машина IBM XT имеет один банк перемычек, определяющих количество установленных накопителей на гибких магнитных ди­сках (НГМД), тип используемого дисплейного адаптера, объем оперативной памяти, установленной на материнской плате, ис­пользование арифметического сопроцессора 8087.

Как правило, если Вы не меняете конфигурацию системы, у Вас не возникает необходимость в изменении установки перемы­чек. Если же Вы добавляете еще один НГМД, изменяете тип дис­плейного адаптера или устанавливаете (снимаете) арифметичес­кий сопроцессор, Вам необходимо переустановить соответствую­щие перемычки на материнской плате.

Приведем таблицу перемычек банка SW1 для IBM XT (ис­пользуя эту таблицу, обязательно сверьте ее с приведенной в до­кументации на материнскую плату Вашего компьютера):

^ Номер перемычки Назначение и установка

1 Зацикливание процедуры POST (тест после включения питания). Эта перемычка должна находиться в состоянии OFF

2 Наличие арифметического сопроцессора 8087:

8087 установлен - OFF;

8087 не установлен - ON

3-4 Объем оперативной памяти, установленной на материнской плате компьютера:

3 4

OFF ON - 128 К;

ON OFF - 192 К;

OFF OFF - 256 К

5-6 Тип дисплейного контроллера:

5 б ON ON - не подключен или EGA;

OFF ON - CGA в режиме 40х25;

ON OFF- CGA в режиме 80х25;

OFF OFF - MDA или два контроллера:

MDA и CGA

7-8 Количество установленных НГМД:

7 8

ON ON -' установлен 1 НГМД;

OFF ON - установлено 2 НГМД;

ON OFF - установлено 3 НГМД;

OFF OFF - установлено 4 НГМД

Если Вы изменяете объем оперативной памяти, установленной на материнской плате, Вам не надо переустанавливать перемыч­ки 3 и 4. Это связано с тем, что BIOS во время инициализации системы после включения питания сам определяет объем установ­ленной памяти - он сканирует всю имеющуюся память. Объем проверенной памяти обычно отображается во время теста.

Конфигурация компьютера IBM AT определяется в основном не установкой перемычек, а содержимым энергонезависимой КМОП-памяти. Мы уже говорили об этом при обсуждении кон­фигурации дисковой подсистемы.

Для работы с КМОП-памятью BIOS содержит специальную программу, называемую SETUP-программой. Аналогичная прог­рамма содержится на диагностической дискете, поставляемой вместе с компьютером.

После перезагрузки или включения питания BIOS обычно пре­доставляет возможность запустить программу SETUP. Для этого, как правило, надо нажать клавишу DEL во время инициализации

системы. Однако некоторые старые версии BIOS для AT не пред ставляют возможности запуска программы SETUP при перезап^ ке системы. При использовании этих версий SETUP запускаеч сам, если в процессе тестирования обнаружились неисправности оборудовании. Например, Вы отключили накопитель на жестк( магнитном диске (НМД) и включили компьютер. Процедуры т< тирования, запускаемые в процессе инициализации, обнаруж неисправность в НМД и предоставят Вам возможность работай программой SETUP, находящейся в BIOS.

Другая возможность - загрузиться с диагностической диске! и запустить программу SETUP, находящуюся на этой дискете.

Перемычка, влияющая на конфигурацию компьюте] IBM AT, - SW1. Она определяет тип дисплейного контроллер используемого программой SETUP. Состояние этой перемыч! анализируется при разрушении содержимого КМОП-памяти (на) ример, при разряде аккумулятора, питающего КМОП-память часы реального времени), и

Если перемычка SW1 установлена в положение OFF, исполД зуется контроллер CGA, в противном случае - MDA, EGA, VG Обычно Вам не требуется переустанавливать эту перемычку.

1.3. КМОП-память и конфигурация компьютеру

Назначение некоторых ячеек КМОП-памяти мы рассматрив, ли в разделе, посвященному конфигурации дисковой подсистем) В этом разделе мы расскажем о назначении остальных ячеек.

В КМОП-памяти хранится текущее время и дата, сведения , конфигурации системы» результат тестирования при включена питания и информация, приведенная в следующей таблице:

^ Адрес ячейки Содержимое .

OOh - ODh Используются часами реального времени OEh Байт состояния диагностики при

включянии питания OFh Байт состояния отключения 10h Тип используемого НГМД s llh Зарезервировано i

l2h Тип НМД (если тип меньше 15)

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

l4h Конфигурация оборудования

15h - 16h Объем основной памяти

17И - 18h Объем расширенной (extended) памяти

19h Тип первого НМД (если тип > 15)

lAh Тип второго НМД (если тип > 15)

IBh - 20h Зарезервировано

21h - 2Dh Зарезервировано

2Eh - 2Fh Контрольная сумма ячеек 10h - 20h

30h - 31h Объем расширенной (extended) памяти

32h Текущее столетие в двоично-десятичном

коде (19h для 19-го столетия) ЗЗЬ Различная информация 34h - 3Fh Зарезервировано

Рассмотрим назначение отдельных ячеек КМОП-памяти.

^ OOh - ODh - область часов реального времени

Ячейки с адресами OOh - ODh используются часами реального времени. Часам реального времени будет посвящена отдельная глава, поэтому сейчас мы не станем останавливаться на этих ячейках.

^ OEh - байт состояния диагностики

Байт состояния диагностики (расположенный в КМОП-памяти по адресу OEh) содержит результаты выполнения диагностики при включении питания компьютера. Выполнив анализ содержи­мого байта OEh, программа может выявить неисправность НМД, часов реального времени, разрядку аккумулятора и ошибки в конфигурации. Приведем формат этого байта:

^ Бит ' Значение

0-1 Не используется, равно О

2 0 - неправильная установка часов реального времени;

1 - часы реального времени установлены правильно

3 1 - неисправность НМД, невозможно загрузить операционную систему с жесткого диска;

О - НМД исправен

4 1 - фактический размер оперативной памяти не соответствует указанному в КМОП-памяти;

О - размер оперативной памяти указан правильно

5 1 - ошибка в конфигурации системы, фактическая конфигурация не соответствует указанной в байте конфигурации оборудования (адрес 14h);

О - конфигурация указана правильно

6 1 - ошибка в контрольной сумме КМОП-памяти; ;

О - контрольная сумма КМОП-памяти правильная!

7 1 - разрядка аккумулятора, питающего КМОП- | память и часы реального времени; |

О - аккумулятор исправен и заряжен ^

——————————————————————————————.———————^

^ OFh - байт состояния отключения ' '

Байт состояния отключения OFh используется процессора! 80286, 80386 и 80486 для определения способа возврата из защ щенного режима в реальный после аппаратного сброса.

Вы, вероятно, знаете, что эти процессоры могут работать ли в реальном режиме, который соответствует режиму работы пр цессора 8086, либо в защищенном. Защищенный режим рабо-используется такими операционными системами, как OS/ UNIX, XENIX, а также операционными оболочка! WINDOWS/386 и WINDOWS версии 3.0. В этом режиме проце сор может непосредственно адресовать всю память, лежащую b) ше границы 1 мегабайт.

Подробное рассмотрение защищенного режима работы выход! за рамки данной книги. Расскажем кратко о переходе из реальн го режима в защищенный и обратно для иллюстрации использ вания ячейки КМОП-памяти с адресом OFh.

Для перевода процессора 80286 из реального режима в защ| щенный можно использовать специальную команду LMSW: |

mov ах, 1 Imsw ax

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

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

mov ax, OFEh , ;'команда отключения out 64h, ax

Перед выдачей команды отключения программа должна запи­сать в ячейку OFh КМОП-памяти причину отключения:

^ Значение Причина отключения

О Программный сброс при нажатии

комбинации клавиш CTRL-ALT-DEL или неожиданный сброс. Выполняется обычный перезапуск системы, но процедуры тестирования при включении питания не выполняются

1 Сброс после определения объема памяти

2 Сброс после тестирования памяти

3 Сброс после обнаружения ошибки в памяти (контроль четности)

4 Сброс с запросом перезагрузки

5 После сброса перезапускается контроллер

прерываний, затем управление передается по адресу,

который находится в области данных BIOS

0000:0467h 6,7,8 Сброс после выполнения теста работы процессора

в защищенном режиме 9 Сброс после выполнения пересылки блока памяти

из основной памяти в расширенную OAh После сброса управление немедленно передается по

адресу, взятому из области данных BIOS 0000:0467h

Для перевода процессоров 80386 и 80486 из реального режима в защищенный и обратно можно использовать загрузку специаль-

ного управляющего регистра CRO обычной командой MOV. Одна^ ко будет работать и метод, основанный на применении команда LMSW и команды отключения. , Вы можете использовать сведения о команде отключения дл1 организации программного перезапуска системы.

^ 10h - тип используемых флоппи-дисков; ',

Младшая и старшая тетрады этого байта описывают соответетй венно второй и первый НГМД: '

0000 - дисковод не установлен;

0001 - дисковод на 360К; ;

0010 - дисковод на 1,2М; .,-..

0011 - дисковод на 720К;

0100 - дисковод на 1.44М.

llh - зар 'зервировано для AT, тип НМД, для. PS/2

В компьютерах PS/2 ячейки КМОП-памяти с адресами llh 12h используются для хранения типов соответственно первого второго НМД.

* -^

^ 12h - типы первого и второго НМД j

Этот байт разделен на две тетрады аналогично байту, опись! вающему НГМД. Однако в тетраде можно закодировать только 1 различных значений, а типов НМД значительно больше. Поэтом тип 15 используется специальным образом - если тип НМД младшей тетраде (диск С:) равен 15, то правильное значение та па находится в КМОП-памяти по адресу 19h'. Аналогично для дг ска D: - этот тип можно взять из байта по адресу lAh (если ста! шая тетрада байта с адресом 12h равна 15).

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

^ 13h - зарезервировано

Эта ячейка КМОП-памяти зарезервирована для дальнейше) развития системы.

]4h - конфигурация оборудования

В этом байте находится информация о количестве установлен­ных НГМД, о наличии арифметического сопроцессора 80287 или 80387 и о типе используемого дисплейного контроллера. Приве­дем формат байта конфигурации:

^ Бит Значение

О 1 " в системе установлены НГМД;

О - НГМД не используются

1 1 - установлен арифметический сопроцессор 80287 или 80387;

О - арифметический сопроцессор не установлен 2-3 Не используются, равны О 4-5 Тип дисплейного контроллера и его режим:

Биты: 5 4

О 0 - не используется или EGA;

О 1 - CGA, EGA, VGA в режиме 40х25;

1 0 - CGA, EGA, VGA в режиме 80х25;

1 1 - монохромный'контроллер 6-7 количество используемых НГМД:

Биты: 7 б

О 0 - установлен 1 НГМД О 1 - установлен 2 НГМД 1 0 - установлен 3 НГМД 1 1 - установлен 4 НГМД

^ 15h-16h - объем основной памяти

Ячейка 15h содержит младший байт, а ячейка 16h - старший байт объема основной памяти. Например:

0100h - 256К , 0200h - 512К 0280h - 640К

^ 17h-18h - объем дополнительной памяти

Ячейки 17h и 18h содержат соответственно младший и ста шии байты размера дополнительной памяти (расположенной выД ше границы 1 М) в килобайтах.

^ 19h-lAh типы первого и второго НМД

Эти ячейки содержат типы соответственно первого и второ] НМД, если соответствующий тип имеет значение, большее I8 (см. описание ячейки 12h).

lBh-2Dh - зарезервировано

Эти ячейки КМОП-памяти зарезервированы для дальнейше) развития системы.

^ 2Eh-2Fh - контрольная сумма ячеек 10h - 20h

Для ячеек КМОП-памяти с адресами от 10h до 20h при ин1 циализации системы BIOS выполняет проверку контрольной cyi мы. Эта контрольная сумма хранится также в КМОП-памяти ячейках 2Eh и 2Fh (соответственно старший и младший байты).

^ 30h-31h - объем дополнительной памяти

Ячейки ЗОп и 31h содержат соответственно младший и ста ший байты размера дополнительной памяти (расположенной вы ше границы 1 М) в килобайтах.

• Эта информация дублирует аналогичную информацию, pacni ложенную в ячейках с адресами 17h-18h.

^ 32h Текущее столетие

В машинах IBM AT этот байт содержит текущее столетие двоично-десятичном коде, т. е. 19-е столетие записано как 19h.

PS/2 использует эту ячейку вместе с ячейкой 33h для хран ния контрольной суммы ячеек с адресами от 10h до 31h. Пр:

этом старший байт контрольной суммы хранится в ячейке 32h, младший - 33h.

^ 33h - различная информация Для IBM AT этот байт используется программой SETUP.

34h-3Fh - зарезервировано

Это поле Вы можете использовать по своему усмотрению, нап­ример, хранить здесь пароль.

PS/2 использует ячейку с адресом 37h для хранения номера текущего столетия. Ячейки 38h - 3Fh в модели 50 компьютера PS/2 используются для хранения пароля. Обращение к этим ячейкам выполняется по адресам 78h - 7Fh, которые аппаратно отображаются на адреса 38h - 3Fh.

Приведем две маленькие программы, демонстрирующие прие­мы работы с КМОП-памятью. Первая программа записывает в ячейки 34h - 3Fh строку символов, вторая отображает эту строку, а также некоторые другие ячейки.

«include <stdio.n> ttinclude <stdlit).h>

main() { // Эта строка будет записана в КМОП-память

static char password[12] = "!FrolOv A.V.";

int i ,j ;

, printf("\n*3anncb в CMOS* (ОФролов A. 1991\n\n");

ror(i=0x34,j=0; i<0x40; i++,j++) { / / Задаем адрес ячейки КМОП-памяти outp(0x70,i);

// Выполняем запись в эту ячейку

outр(0х71,password[j]);

} }

Программа для чтения содержимого КМОП-памяти:

«include <stdio.h> «include <stdlib.h>

ma i n () {

unsigned char cmos[164];

int i;

Рг1п1Г("\п*Чтение из CMOS* (ОФролов A. 1991\n\n") ;

// Читаем все 64 ячейки КМОП-памяти в массив cmos

for(i=0; i<64; i++) {

outp(0x70,i) ;

cmos[i]=inp(0x7l);

}

// Отображаем ячейки часов реального времени printf("\пЯчейки часов реального времени: ");

for(i=0; 1<0xd; i++) {

prlntr("%02.2x ",(unsiqned)cmostl]);

}

// Отображаем состояние байта диагностики // после включения питания

  1   2   3   4   5   6   7   8   9



Скачать файл (24782.1 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации