What Is 3rd Party Rom Management

An
Selection ROM
for the PC platform (i.e. the IBM PC and derived successor reckoner systems) is a piece of firmware that resides in ROM on an expansion carte du jour (or stored forth with the main system BIOS), which gets executed to initialize the device and (optionally) add back up for the device to the BIOS. In its usual utilise, it is essentially a commuter that interfaces between the BIOS API and hardware. Technically, an option ROM is firmware that is executed past the BIOS later POST (the testing and initialization of bones system hardware) and before the BIOS boot process, gaining consummate control of the system and mostly unrestricted in what it can practise. The BIOS relies on each selection ROM to render command to the BIOS then that it can either telephone call the next selection ROM or embark the kick process. For this reason, it is possible (but not usual) for an selection ROM to keep control and preempt the BIOS kick process. The BIOS (at to the lowest degree as originally designed by IBM) generally scans for and initializes (past executing) option ROMs in ascending address club at two KB address intervals within two dissimilar accost ranges above address C0000h in the conventional (20-chip) memory address space; later systems may as well scan additional address ranges in the 24-flake or 32-bit extended accost space.

Selection ROMs are necessary to enable not-Plug and Play peripheral devices to boot and to extend the BIOS to provide support for whatever not-Plug and Play peripheral device in the aforementioned way that standard and motherboard-integrated peripherals are supported. Option ROMs are likewise used to extend the BIOS or to add together other firmware services to the BIOS. In principle, an option ROM could provide whatever sort of firmware extension, such equally a library of video graphics subroutines, or a gear up of PCM audio processing services, and cause it to be installed into the organization RAM and optionally the CPU interrupt arrangement before kick fourth dimension.

A common choice ROM is the video BIOS which gets loaded very early in the boot procedure and hooks INT 10h so that output from the power-on self-test (POST) tin can be displayed. The video BIOS is nigh always located in the retentivity segment kickoff at
C0000h, the start of the memory expanse reserved for option ROMs; this is because when the motherboard has a congenital-in VGA controller, the option ROM will reside in the BIOS – the BIOS knows where information technology is and shadows it into RAM at a fixed time. Other ROMs tin can be located from segments
C8000h
all the way up to
F4000h
in early on PCs.[one]
The concluding search address was limited to segment
DFFFFh
[2]
or
EFFFFh
[iii]
in modern products. The BIOS Boot Specification requires that option ROMs be aligned to 2 kB boundaries (e.k. segments
C8000h, C8800h, C9000h, C9800h, etc.). The outset ii bytes of the ROM must be
55 AA.[4]The third byte indicates the ROM size, and the fourth byte is where the BIOS begins execution of the option ROM to initialize it before the organisation boots. Often this initialization is done by a iii byte jump instruction starting with hexadecimal value
E9.
[v]

Original usage of Choice ROMs for booting through expansion cards

[edit]

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 bill of fare (NIC) was generally required to include an choice ROM in social club to be bootable, as the motherboard BIOS did not include whatsoever support for the device and so could non incorporate it into the BIOS’s kicking protocol. Such an selection ROM would hook INT 19h, the BIOS kick interrupt, to preempt the BIOS boot loader and substitute their own boot loader. The boot loader on the option ROM would effort to boot from a disk, network, or other boot programme source attached to or installed on the adapter menu; if that boot effort failed, it would pass control to the previous kicking loader (to which INT 19h pointed before the option ROM hooked it), allowing the organization to boot from some other device as a fallback strategy. Some adapters cards, such equally sure SCSI adapters (due east.g. some made by Adaptec), were available in versions that differed simply in the presence or absence of the option ROM to enable booting from fastened SCSI devices. As a outcome of the pick ROM scanning protocol, the highest-addressed option ROM is the last one to be initialized and and so the terminal 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 kick priority between adapter cards that are enabled for booting, and the boot devices supported by the motherboard BIOS collectively have everyman priority, i.e. the system will attempt to boot from them only after attempting to boot from all kicking-enabled adapter cards.

BIOS Boot Specification

[edit]

The BIOS Kicking Specification (Bulletin board system) was developed by a consortium comprising Compaq, Intel and Phoenix Technologies to standardize the initialization sequence of Plug and Play (PnP) BIOS option ROMs, and legacy option ROMs not befitting to the PnP BIOS standard, and the order in which they hook interrupts.[3]
The standard presents the notion of a Boot Connection Vector (BCV) table and BCV priority.[3]
The cadre principles of the standard make behaviour more than divers and debuggable and gives BIOS manufacturers room to further dynamise boot device selection for the user, beyond the suggestions of the standard. The beginning of the PnP Expansion header is marked by the iv byte ASCII signature
$PnP
and a pointer to this is stored at offset +1Ah as a two byte footling endian value.[half dozen]

Afterwards the bones Post checks are complete, the Bbs specifies that the BIOS will discover 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 infinite to the region. The BIOS then scans the region, and if the selection ROM has a PnP Expansion header, information technology does a far call to offset +03h in the option ROM header to initialize it. Information technology then rescans the region subsequently 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 co-ordinate to priority settable in NVRAM. The BCV table is full of BCV function pointers but has a fixed entry representing legacy choice ROMs which is a pointer to a BIOS routine which calls +03h in all the remaining pick 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 exist 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, every bit information technology is a legacy card.

In the initial initialization routine, as the Option ROM points to a PCI data structure (non the same equally the configuration space), the option ROM code knows the device and vendor ID is at a fixed first from RIP. The beginning of this structure is marked by the 4 byte ASCII signature
PCIR
and a pointer to this is stored at outset +18h every bit a ii byte little endian value.[vi]
This allows it to browse the PCI configuration space to observe the right device and Confined it needs to use. To prevent this scan, and in instance of 2 identical cards in the system, the BIOS passes the PFA (bus/device/role) to the initialization routine in AX, and the card select number (CSN) for ISA option ROMs is passed in BX. Information technology can then collaborate with the device using PMIO / MMIO to run across how many disks it has and which ones are bootable past reading the MBR. The BIOS will accept already combed the configuration space, allocated the Confined and filled in the ACPI tabular array prior to the initialization routine call, so the option ROM would use the addresses allocated to its Confined. The BCV, withal, hooks interrupt routines which collaborate with the device which are adjusted based on a base MMIO address location, disk information ascertained in the option ROM initialization routine and the current disk number in the BDA.

The BIOS INT 19h procedure and then uses the IPL tabular array priority in NVRAM to determine whether to telephone call an entry containing a kick handler which will read the MBR of 00h (floppy disk BAID; the first device in the BCV tabular array to annals deejay 00h), an entry containing a boot handler which will read the MBR of 80h (the hard drive BAID; the first device in the BCV Table to register disk 80h) or ane of the BEV entries in the table. A device merely has a BEV or a BCV if it is a bootable device.

SCSI

[edit]

A SCSI controller card may hook INT 13h which is responsible for providing deejay services. It will practice so in its BCV if information technology is a PnP card. Once information technology has done this, whatever subsequent calls to INT 13h will exist “defenseless” by the SCSI option ROM (or “SCSI BIOS”), allowing it to answer for disks that may exist on the SCSI bus. Earlier information technology had hooked the interrupt there may have been no disks on the system, just by intercepting the interrupt and altering the values returned, the SCSI BIOS can make all the disks on the SCSI bus visible to the system.

In this particular example, the BIOS itself may telephone call INT 13h to provide a list of possible boot devices to the user, and considering the SCSI BIOS has hooked the interrupt the user will be able to choose not merely which standard organization devices to boot from, but likewise which SCSI disks as well. This is because, as suggested in Appendix D of the Kicking BIOS Specification, the BIOS could populate the IPL table with device and vendor information from INT 13h calls to the different disks, paired with the Difficult Disk Number (80h, 81h …), to let any hard disk drive device to exist booted from, rather than simply the first deejay of the first controller to hook INT 13h (the highest priority item in the BCV table), referred to equally a BIOS Aware IPL Device (BAID) in the specification.

Multiple controllers tin can hook INT 13h at once. For example, afterwards the SCSI controller, an AHCI controller can as well hook INT 13h by putting a call to the previous handler, which was stored in the IDT at entry 13h by the SCSI controller, at the end of its own handler, before information technology puts the accost of its ain handler into the IDT at entry 13h. The commencement controller to hook INT 13h will see that 0 disks have been installed by checking the byte at
0040:0075, which resides in the BIOS Data Area (BDA), and if it has 4 disks to enumerate, information technology volition assign the range of disk numbers 80h–83h and store ‘4’ in the BDA. If the 2nd controller to claw INT 13h has 2 disks, it will read ‘four’ from the BDA, assign the disk numbers 84h and 85h, and shop ‘six’ in place of the ‘four’. Now if INT 13h is called with DL = 83h, so the handler of the second controller, which did not assign disk number 83h, will relay the call to the previous handler; that handler, which did assign disk number 83h, volition handle the call itself. With any number of controllers’ ISRs hooked into INT 13h, the ISRs will each laissez passer control to the adjacent one until the one that assigned the specified drive number recognizes the number, handles the telephone call, and returns from the interrupt.

Network boot ROM

[edit]

Another common option ROM is a network boot ROM. The choice ROM contains the plan required to download the kick code. The original IBM Personal Computer ROMs hooked INT 18H (originally to invoke Cassette Basic) and INT 19H, as these 2 interrupts were used for the boot procedure. INT 19h is called to initiate the kicking process, and INT 18h was called to start Cassette BASIC from ROM when the boot process found that none of the possible boot devices was bootable. Originally, by hooking INT 18h, the network adapter ROM would try to boot from the network when all other boot devices (floppy drives, difficult drives, etc.) had failed. Past hooking INT 19H, the network adapter ROM would attempt to boot from the network before any other devices. The Bulletin board system specifies that the NIC option ROM does not claw INT 19h, merely instead the BIOS 19h handler should call the BEV, which will then download the kick code.

Video

[edit]

The Video BIOS provides some bones brandish services for BIOS and operating systems, for example INT 10H (Legacy BIOS), VBE (Legacy BIOS) and UEFI GOP. The original IBM PC BIOS included integrated support for the IBM CGA and MDA video adapters (and did not support option ROMs at all), and so those video cards had no option ROMs. The CGA and MDA support in the BIOS proper was maintained through the IBM PC XT and PC AT product lines (which did back up selection ROMs), so that those cards worked (with full BIOS support) in those machines. The first PC video adapter menu that had an pick ROM was the IBM EGA, introduced in 1984 with the IBM PC AT. (The Hercules Graphics Card had no option ROM and no BIOS back up except for its MDA-compatible features, for which it relied in the IBM-supplied MDA back up in the main BIOS.) Almost subsequent PC video adapters were supported by option ROMs, although VGA and MCGA integrated onto PS/2 motherboards may take used integrated BIOS support. In one case integrated Super VGAs (SVGAs), integrated on clone PC motherboards, were beingness provided past separate companies than the systems themselves, it became common for the SVGA vendor-provided video BIOS to be included as a separate option ROM module on the same BIOS chip every bit the main organization BIOS (provided by a 3rd carve up visitor).

UEFI Option ROMs

[edit]

The PCI spec allows multiple option ROM images on the aforementioned device. These option ROMs could be Legacy x86 & UEFI. If the Option ROM format is ready to “UEFI Compatible” in the UEFI Setup, the DXE stage will load the newer UEFI Option ROM if one is present and the legacy Option ROM if 1 is not. UEFI can use legacy option ROMs when a Compatibility Back up Module (CSM) is enabled. Note that when Secure Kicking is enabled, execution of the Compatibility Support Module and legacy selection ROMs is prohibited because legacy firmware drivers do not support authentication, which is a security hole.[7]

See besides

[edit]

  • BIOS
  • UEFI
  • Booting
  • Legacy Plug and Play
  • PCI configuration space
  • Read-just retention (ROM)
  • Preboot eXecution Environs (PXE)

References

[edit]


  1. ^

    IBM PC XT Technical Reference, pg. 2-10

  2. ^

    Personal System/2 and Personal Computer BIOS Interface Technical Reference, pg. 4-12
  3. ^


    a




    b




    c





    BIOS Boot Specification
    (PDF)
    (Version one.01 ed.). Compaq, Phoenix, & Intel. Jan 11, 1996.



  4. ^

    The execution environs of Etherboot

  5. ^


    Salihun, Darmawan (January nine, 2007).
    BIOS Disassembly Ninjutsu Uncovered
    (PDF).


  6. ^


    a




    b




    “BIOS”. 2022-04-06. Retrieved
    2022-04-08
    .



    {{cite web}}: CS1 maint: url-condition (link)


  7. ^


    “Microsoft docs”.


    {{cite web}}: CS1 maint: url-status (link)



Source: https://en.wikipedia.org/wiki/Option_ROM