У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Курсова робота - BIOS
48



модулі BIOS). Їх використовують деякі контроллери жорстких дисків, мережні адаптери з віддаленим завантаженням та інші периферійні пристрої. Для цих модулів в просторі пам'яті зарезервована область C8000h-F4000h. POST сканує цю область з кроком 2 Кбайта у пошуках додаткових модулів BIOS на завершальному етапі виконання (після завантаження векторів переривань покажчиками на власні обробники). Додатковий модуль BIOS відеоадаптера (EGA, VGA, SVGA...) має фіксовану адресу С0000 й ініціалізується раніше (на кроці ініціалізації відеоадаптера).

Додатковий модуль BIOS повинен мати заголовок, вирівняний по межі 2-кілобайтної сторінки пам'яті, тобто біт адреси, що має нульове значення, А[10:0]. Формат заголовка наступний:

Байт-0=55h, байт-1=ААh – ознака початку модуля. Байт-2 – довжина в блоках по 512 байт. Байт-3 – точка входу процедури ініціалізації, що закінчується дальнім поверненням (Ret Far).

Коректним вважається модуль, що починається з ознаки 55AAh і нульової суми (по модулю 256) всіх байт в оголошеній області (реальна довжина модуля може перевищувати оголошену, але байт контрольної суми, природно, повинен входити в оголошену область). У разі виявлення коректного модуля POST дальнім викликом (Call Far) викликає процедуру ініціалізації модуля, що починається з 3-ої адреси заголовка модуля. Відповідальність за її коректність повністю лягає на розробника. Процедура може перевизначати вектори переривань, обслуговуваних BIOS. Перевизначивши на себе Bootstrap (INT 19h), можна отримати управління при завантаженні, що й використовується для віддаленого завантаження комп'ютерів через локальну мережу (Remote Boot Reset). Якщо стандартне продовження процедури завантаження не потрібне, а додатковий модуль є, наприклад, управляючою програмою для якого-небудь устаткування, замість процедури ініціалізації в ПЗП може знаходитися і основна програма, що не повертає управління системної послідовності POST.

2.2. Вектори переривань BIOS

При ініціалізації таблиці переривань BIOS відповідає за коректне заповнення частини векторів, що мають відношення до апаратних засобів комп'ютера і сервісів BIOS. На частину з них можуть бути просто встановлені заглушки – вектор посилається на код обробника, що містить єдину інструкцію повернення з переривання – IRET.

BIOS ініціалізує вектори внутрішніх переривань процесора (виключень), які можуть виникнути в реальному режимі роботи (про виключення захищеного режиму в основному піклується відповідна операційна система). До внутрішніх переривань відносяться наступні (INT 70h – INT 77h – тільки для AT):

INT 00h – ділення на 0. INT 01h – покроковий режим. INT 03h – точка зупинки. INT 04h – переповнювання. INT 06h – недопустима команда 286+. INT 07h – виклик відсутнього NPU.

Апаратні переривання включають наступні (INT 70h-77h – тільки для AT):

INT 02h – немасковане переривання. INT 08h – таймер 8253/8254. INT 09h – клавіатура. INT 0Ah-0Dh – IRQ2-IRQ5. INT 0Eh – IRQ6 – контроллер гнучких дисків. INT OFh – IRQ7. INT 70h – CMOS-таймер. INT 71h – IRQ9 (перенаправлено на INT 0Ah). INT 72h-74h – IRQ10-IRQ12. INT 75Ь – IRQ13 – виключення співпроцесора. INT 76h – IRQ14 – контроллер жорстких дисків. INT 77h – IRQ15.

Вектори переривань, що забезпечують виклики функцій BIOS (сервісів), включають наступні:

INT 05h – друк екрану. INT 10h – відеосервіс. INT 11h – список устаткування. INT 12h – розмір безперервної пам'яті. INT 13h – дискове введення-виведення. INT 14h – обслуговування СОМ-портів. INT 15h – АТ-функції (системний сервіс). INT 16h – клавіатурне введення-виведення. INT 17h – обслуговування LPT-портів INT 18h – ROM-Basic. INT 19h – початкове завантаження (Bootstrap). INT 1Ah – системний час і 16-бітні виклики сервісів PCI. INT 1Bh – обробник ctrl+break. INT 1Ch – призначена для користувача процедура, що викликається обробником INT 08h (User Timer Interrupt). INT 33h – підтримка миші. INT 67h – EMS-функції.

Декілька векторів використовуються як покажчики на системні таблиці. До векторів-покажчиків відносяться наступні:

INT 1Dh – відеопараметри. INT 1Eh – параметри дискет. INT 1Fh – знакогенератор CGA. INT 41h – параметри HDD 0. INT 46h – параметри HDD 1. INT 43h – знакогенератор EGA. INT 4Ah – будильник користувача.

Як видно з наведених списків, більшість векторів BIOS накладається на область векторів 00-1Fh, зарезервовану фірмою Intel під внутрішні переривання і виключення процесорів. Хоча за часів 8086 з них використовувалася зовсім мала кількість, зарезервованою була оголошена вся вказана область. Проте творці IBM PC "влізли" в цю область, що ускладнило життя системних програмістів, які працюють з більш щедрими на виключення сучасними процесорами.

2.3. Області даних BIOS

Окрім векторів переривань, BIOS в оперативній пам'яті має свою область даних BIOS DATA AREA, що починається з адреси 400h (відразу за таблицею переривань). Ця адреса в сегментній моделі адресації реального режиму може бути представлена як 0000:0400h або 0040:0000h, що вказує на одну і ту ж фізичну адресу. Призначення комірок даної області розкриває табл. 2.1. BIOS може також використовувати й розширену область даних EBDA (Extended BIOS Data Area), яка звичайно розташовується під верхньою межею (640 Кбайт) стандартної пам'яті. На її положення вказує слово за адресою 40:0Еh, а перший байт цієї області вказує її розмір в одиницях кілобайтів. Ця область використовується для різних семафорів і покажчиків, її розмір звичайно не перевищує 1 Кбайта.

Таблиця 2.1

Призначення комірок BIOS Data Area

Адреса | Розмір, байт | Призначення

040:000 | 4Ч2 | Базові адреси портів СОМ1-СОМ4

040:008 | 3Ч2 | Базові адреси портів LPT1-LPT3

040:00Е | 2 | Базова адреса порту LPT4 або адреса сегменту EBDA

040:010 | 2 | Встановлене устаткування

040:013 | 2 | Розмір стандартної пам'яті

040:015 | 2 | Робочі комірки для тестів

040:017 | 39 | Область прапорів і буфер клавіатури

040:03Е | 1 | Біти [0:3] – дисководи, вимагаючі рекалібрування (біт 0=А:, біт 1=В: і т. д.)

Біти [4:5] – вибраний дисковод

040:03F | 1 | Включений мотор дисководів (біт 0-а:, біт 1-в: і т. д.)

040:040 | 1


Сторінки: 1 2 3 4 5 6 7 8 9 10 11 12