Кіріспе

Құрылғы үшін BIOS қолдауын қосуға арналған микробағдарлама

ПК платформасы үшін опциялық ROM (яғни IBM PC және одан туындаған компьютерлік жүйелер) – кеңейту картасындағы ROM-да орналасқан (немесе негізгі жүйе BIOS-пен бірге сақталған) микробағдарлама, ол құрылғыны инициализациялау үшін орындалады және (қажет болған жағдайда) құрылғыны BIOS-қа қолдау үшін қосады. Көбінесе ол BIOS API мен аппараттық құралдар арасындағы интерфейс ретінде жұмыс істейді. Техникалық тұрғыдан алғанда, опциялық ROM – бұл BIOS-тың POST-тан (базалық жүйелік аппараттық құралдарды сынау және инициализациялау) кейін және BIOS жүктелу процесінен бұрын орындалатын микробағдарлама, ол жүйені толық бақылауға алады және не істей алатынына қатысты шектеулерге ие емес. BIOS әрбір опциялық ROM-нан басқаруды қайтаруын күтеді, осылайша ол келесі опциялық ROM-ды шақыра алады немесе жүктелу процесін бастай алады. Осы себепті, опциялық ROM BIOS жүктелу процесін басқарып, оны тоқтатуы мүмкін (бірақ бұл сирек кездеседі). BIOS (кем дегенде IBM-нің бастапқыда жасаған нұсқасы) әдетте опциялық ROM-дарды C0000h адресінен жоғары екі түрлі адрестік диапазон ішінде 2 КБ интервалмен жоғарылап, қарап шығады және инициализациялайды (орындау арқылы) дәстүрлі (20 биттік) жад адрестік кеңістігінде; кейінгі жүйелер 24 биттік немесе 32 биттік кеңейтілген адрестік кеңістікте қосымша адрестік диапазонды қарастыруы мүмкін. Опциялық ROM-дар Plug and Play емес сыртқы құрылғыларды жүктеуге мүмкіндік беру және BIOS-ты кеңейту үшін қажет, соның арқасында кез келген Plug and Play емес сыртқы құрылғы стандартты және аналық платаға енгізілген сыртқы құрылғылар сияқты қолдауға ие болады. Опциялық ROM-дар BIOS-ты кеңейту үшін немесе BIOS-қа басқа микробағдарламалық қызметтерді қосу үшін де қолданылады. Принцип бойынша, опциялық ROM кез келген микробағдарламалық кеңейтімді қамтамасыз ете алады, мысалы, бейне графикалық кіші программалар кітапханасын немесе PCM аудио өңдеу қызметтері жиынтығын, және жүйелік RAM-ге және, қажет болған жағдайда, CPU-ға орнатуға әкелуі мүмкін, жүйе іске қосылғанға дейін. Көбінесе қолданылатын опциялық ROM – видео BIOS, ол жүктелу процесінің басында жүктеледі және INT 10h-ты тіркеп, қуат қосылған кездегі өзін-өзі тексеру (POST) нәтижелерін көрсетуге мүмкіндік береді. Видео BIOS әдетте C0000h адресінен басталатын жад сегментінде орналасқан, ол опциялық ROM-дарға арналған жад аймағының басталуы болып табылады; себебі аналық платада VGA контроллері болған жағдайда, опциялық ROM BIOS-та орналасады – BIOS оның қайда екенін біледі және оны белгіленген уақытта RAM-ға көшіреді. Басқа ROM-дар ертедегі ПК-да C8000h сегментінен бастап F4000h-қа дейін орналасуы мүмкін. Соңғы іздеу адресі қазіргі заманғы өнімдерде DFFFFh немесе EFFFFh сегментімен шектелген. BIOS жүктелу спецификациясы опциялық ROM-дардың 2 КБ шегіне сәйкес болуын талап етеді (мысалы, C8000h, C8800h, C9000h, C9800h сегменттері және т.б.). ROM-ның алғашқы екі байты 55 AA болуы керек. Үшінші байт 512 байттық блоктардағы ROM көлемін көрсетеді (мысалы, 16 КБ ROM үшін 20h). Ал төртінші байт – BIOS опциялық ROM-ды инициализациялау үшін орындауды бастайтын орын, жүйе іске қосылғанға дейін. Көбінесе бұл инициализация 3 байттық секіру нұсқаулықпен жасалады, ол E9 гексадецималдық мәнімен басталады.

Кеңейту карталары арқылы жүктеу үшін Option ROM-ларды бастапқы пайдалану

Plug and Play BIOS стандартының дамуымен және оның кеңінен қолданылуына дейін, қатты диск контроллері немесе желілік адаптер картасы (NIC) сияқты қосымша құрылғының жүктелуі үшін опциялық ROM қажет болатын. Себебі, аналық платаның BIOS-ы бұл құрылғыны қолдамағандықтан, оны BIOS жүктеу протоколына енгізе алмайтын. Мұндай опциялық ROM, BIOS жүктеу үзілісі INT 19h-ты қолданып, BIOS жүктеушісін тоқтатып, өзінің жүктеушісін орнатқан. Опциялық ROM-дағы жүктеуші, адаптер картасына қосылған немесе орнатылған дискіден, желіден немесе басқа бағдарламалық көзден жүктеуге тырысатын. Егер жүктеу әрекеті сәтсіз аяқталса, басқару алдыңғы жүктеушіге (INT 19h опциялық ROM-ға тіркелгенге дейін көрсеткен) қайтарылатын, бұл жүйеге басқа құрылғыдан жүктеуге мүмкіндік беретін. Кейбір адаптер карталары, мысалы, белгілі бір SCSI адаптерлері (мысалы, Adaptec компаниясы жасағандары), тек опциялық ROM-ның болуымен немесе болмауымен ғана ерекшеленетін нұсқаларда шығарылатын. Опциялық ROM сканерлеу протоколының нәтижесінде, ең жоғары адрестелген опциялық ROM соңғы болып инициализацияланатын, сондықтан кез келген үзілісті тоқтату үшін соңғы және үзіліс қызметі (ISR) тізбектеріндегі бірінші болып табылатын. Осылайша, опциялық ROM-дардың адрестері жүктеуге рұқсат етілген адаптер карталары арасындағы жүктеу басымдығын толық анықтайды, ал аналық плата BIOS-ы қолдайтын жүктеу құрылғылары ең төменгі басымдыққа ие болады, яғни жүйе барлық жүктеуге рұқсат етілген адаптер карталарынан жүктеуге тырысқаннан кейін ғана олардан жүктеуге көшеді.

BIOS жүктеу ерекшеліктері

BIOS Boot Specification (BBS) – Compaq, Intel және Phoenix Technologies консорциумы әзірлеген, Plug and Play (PnP) BIOS және Option ROM-дардың бастамалау тізбегін стандарттау мақсатында. Негізгі POST тексерулері аяқталғаннан кейін, BBS BIOS-та орналасқан барлық Option ROM-дарды анықтап, жоғарыда аталған аймаққа көшіреді, сондай-ақ PCI конфигурациялық кеңістігін қарап, XROMBAR-ларды толтырып, кеңейту картасының Option ROM-дарын MMIO кеңістігінен аталған аймаққа көшіреді. Содан кейін BIOS аймақты сканерлейді және егер Option ROM-да PnP Expansion басқарылатын бөлігі болса, оны бастау үшін Option ROM басқарылатын бөлігіндегі +03h офсетіне алыс шақыру жасайды. Барлық PnP Option ROM-дар бастамаланғаннан кейін аймақ қайтадан сканерленеді (Appendix E-де айтылғандай, Option ROM бастамалау процедурасы құрылғыға тиесілі жеке дискілер үшін қосымша PnP Expansion басқарылатын бөліктерін тізбектей алады). Табылған PnP Expansion басқарылатын бөліктеріндегі BCV көрсеткіші (болған жағдайда) BCV кестесіне немесе BEV көрсеткіші (болған жағдайда) IPL басымдық кестесіне қосылады. BCV кестесіндегі BCV жазбалары NVRAM-да орнатылған басымдыққа сәйкес шақырылады. BCV кестесі BCV функциясының көрсеткіштерімен толтырылған, бірақ мұралық Option ROM-дарды білдіретін тұрақты жазбасы бар, ол PnP Expansion басқарылатын бөлігі жоқ қалған Option ROM-дардың барлығында +03h шақыратын BIOS процедурасына көрсеткіш болып табылады. BCV функциясы INT 13h және INT 19h ілгектерін бастайды, BBS +03h бастамалау процедурасында орындалмауы керек деп талап етеді. Егер құрылғыда PnP Expansion басқарылатын бөлігі болмаса, ол +03h процедурасында кез келген ілгектерді орындай алады, себебі ол мұралық карта. Бастапқы бастамалау процедурасында Option ROM PCI дерек құрылымына (конфигурациялық кеңістіктен өзгеше) сілтеме жасайтындықтан, Option ROM коды құрылғы және өндіруші ID-сі RIP-тен белгілі бір офсетте орналасқанын біледі. Бұл құрылымның басында 4 байттық ASCII қолтаңбасы PCIR және оған сілтеме +18h офсетінде 2 байттық кішкентай эндиан мәні ретінде сақталады.