Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Құрылғы үшін BIOS қолдауын қосуға арналған микробағдарлама
Firmware to add BIOS support for a device
ПК платформасы үшін опциялық 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 гексадецималдық мәнімен басталады.
An Option ROM for the PC platform (i. e. the IBM PC and derived successor computer systems) is a piece of firmware that resides in ROM on an expansion card (or stored along with the main system BIOS), which gets executed to initialize the device and (optionally) add support for the device to the BIOS. In its usual use, it is essentially a driver that interfaces between the BIOS API and hardware. Technically, an option ROM is firmware that is executed by the BIOS after POST (the testing and initialization of basic system hardware) and before the BIOS boot process, gaining complete control of the system and being generally unrestricted in what it can do. The BIOS relies on each option ROM to return control to the BIOS so that it can either call the next option ROM or commence the boot process. For this reason, it is possible (but not usual) for an option ROM to keep control and preempt the BIOS boot process. The BIOS (at least as originally designed by IBM) generally scans for and initializes (by executing) option ROMs in ascending address order at 2 KB address intervals within two different address ranges above address C0000h in the conventional (20 bit) memory address space; later systems may also scan additional address ranges in the 24 bit or 32 bit extended address space. Option ROMs are necessary to enable non Plug and Play peripheral devices to boot and to extend the BIOS to provide support for any non Plug and Play peripheral device in the same way that standard and motherboard integrated peripherals are supported. Option ROMs are also used to extend the BIOS or to add other firmware services to the BIOS. In principle, an option ROM could provide any sort of firmware extension, such as a library of video graphics subroutines, or a set of PCM audio processing services, and cause it to be installed into the system RAM and optionally the CPU interrupt system before boot time. A common option ROM is the video BIOS which gets loaded very early on in the boot process and hooks INT 10h so that output from the power on self test (POST) can be displayed. The video BIOS is almost always located in the memory segment beginning at C0000h, the start of the memory area reserved for option ROMs; this is because when the motherboard has a built in VGA controller, the option ROM will reside in the BIOS – the BIOS knows where it is and shadows it into RAM at a fixed time. Other ROMs can be located from segments C8000h all the way up to F4000h in early PCs. The final search address was limited to segment DFFFFh or EFFFFh in modern products. The BIOS Boot Specification requires that option ROMs be aligned to 2 kB boundaries (e. g. segments C8000h, C8800h, C9000h, C9800h, etc.). The first two bytes of the ROM must be 55 AA. The third byte indicates the ROM size in 512 bytes blocks (e. g. 20h for 16kB ROM). And the fourth byte is where the BIOS begins execution of the option ROM to initialize it before the system boots. Often this initialization is done by a 3 byte jump instruction starting with hexadecimal value 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-ы қолдайтын жүктеу құрылғылары ең төменгі басымдыққа ие болады, яғни жүйе барлық жүктеуге рұқсат етілген адаптер карталарынан жүктеуге тырысқаннан кейін ғана олардан жүктеуге көшеді.
Prior to the development and ubiquitous adoption of the Plug and Play BIOS standard, an add on device such as a hard disk controller or a network adapter card (NIC) was generally required to include an option ROM in order to be bootable, as the motherboard BIOS did not include any support for the device and so could not incorporate it into the BIOS's boot protocol. Such an option ROM would hook INT 19h, the BIOS boot interrupt, to preempt the BIOS boot loader and substitute their own boot loader. The boot loader on the option ROM would attempt to boot from a disk, network, or other boot program source attached to or installed on the adapter card; if that boot attempt failed, it would pass control to the previous boot loader (to which INT 19h pointed before the option ROM hooked it), allowing the system to boot from another device as a fallback strategy. Some adapters cards, such as certain SCSI adapters (e. g. some made by Adaptec), were available in versions that differed only in the presence or absence of the option ROM to enable booting from attached SCSI devices. As a result of the option ROM scanning protocol, the highest addressed option ROM is the last one to be initialized and so the last one to hook any interrupts and the first one in those interrupt service routine (ISR) chains; thus the addresses of the option ROMs completely determine the boot priority between adapter cards that are enabled for booting, and the boot devices supported by the motherboard BIOS collectively have lowest priority, i. e. the system will attempt to boot from them only after attempting to boot from all boot enabled adapter cards.
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 байттық кішкентай эндиан мәні ретінде сақталады.
The BIOS Boot Specification (BBS) was developed by a consortium comprising Compaq, Intel and Phoenix Technologies to standardize the initialization sequence of Plug and Play (PnP) BIOS and Option ROMs. After the basic POST checks are complete, the BBS specifies that the BIOS will detect and shadow all option ROMs that reside in the BIOS into the aforementioned region and it will traverse the PCI configuration space, filling in XROMBARs and copying the expansion card option ROMs from MMIO space to the region. The BIOS then scans the region, and if the option ROM has a PnP Expansion header, it does a far call to offset +03h in the option ROM header to initialize it. It then rescans the region after all the PnP option ROMs have been initialized (because, as appendix E states, the option ROM initialization routine may have chained more PnP expansion headers for individual disks the device owns). It adds the BCV pointer (if present) in the PnP Expansion headers it finds the BCV Table or the BEV pointer (if present) to the IPL priority table. The BCV entries in the BCV table are then called according to priority settable in NVRAM. The BCV table is full of BCV function pointers but has a fixed entry representing legacy option ROMs which is a pointer to a BIOS routine which calls +03h in all the remaining option ROMs that don't have a PnP Expansion header. The BCV function initializes the INT 13h and INT 19h hooks, which the BBS stipulates must not be done in the initialization routine at +03h. If a device has no PnP Expansion header, it may perform any hook in the routine at +03h, as it is a legacy card. In the initial initialization routine, as the Option ROM points to a PCI data structure (not the same as the configuration space), the option ROM code knows the device and vendor ID is at a fixed offset from RIP. The beginning of this structure is marked by the 4 byte ASCII signature PCIR and
a pointer to this is stored at offset +18h as a 2 byte little endian value.