

It has a large body of ACPI Source Language files, a selection of which are compiled into a bytecode binary image that is incorporated into the firmware. (If you want to see this from the firmware developers' side, look at Coreboot for one example. In ACPI there is a table called the Differentiated System Description Table, augmented by a Secondary System Descriptor Table, which (with information from a few other ACPI tables) provide much the same thing.

The Plug and Play BIOS Specification has the firmware provide a simple device tree in memory to an operating system, one of the nodes of which will be (for example) a PNP0A03 node designating a PCI bus, giving the I/O and memory resources that it is assigned and thus where it is to be found.ĪCPI supersedes this, but the idea remains the same. Just like a device tree, it is exterior to the operating system and is not a list of things to probe for hardwired into the operating system's own code. Just like a device tree, it is a list of device nodes with resource information (amongst other things) attached to them. Just like a device tree, it has to be created to match the actual board. There is little difference in concept between this and a device tree. It is enumerated by querying the system firmware, and what is present on it is baked into the system firmware by the mainboard manufacturer, to match what is on the mainboard. This is a bus that exists purely as a construct of the system firmware and operating system. This is a bus that is not enumerable by communicating with bus controller device hardware, as with other enumerable buses. Probing for hardware, just poking some I/O or memory addresses to see whether they work, has not been necessary since the middle 1990s.

It is not correct to say that operating systems for the descendents of PC/AT compatibles assume the existence of things such as a PCI bus. ¹ If there's an external bus such as USB, USB peripherals are auto-discovered, they wouldn't be mentioned in the device tree. Embedded systems typically have a fixed set of devices¹, and an operating system that's pre-loaded by the manufacturer and doesn't get replaced, so enumeration is not necessary. adding an extension card into a PC or connecting a cable on an external port. The main reason PC buses support discovery is that they're designed to allow a modular architecture where devices can be added and removed, e.g. The device tree is a standard format to represent this information.
#Acpi x86 based pc means how to#
Without enumeration, the operating system has to be told what devices are present and how to access them. This is also the case with some embedded x86 systems that don't follow the PC architecture. Most ARM systems, in particular, have buses that don't support enumeration. This was true on PC up to the mid-1990s, before PCI overtook ISA. Many embedded systems use less fancy buses that don't support enumeration. Note that the OS has to assume the existence of the PCI bus and the way to probe it this is standardized on the PC architecture (“PC architecture” doesn't just mean an x86 processor: to be a (modern) PC, a computer also has to have a PCI bus and has to boot in a certain way). So on a PC, the operating system can discover the connected peripherals by enumerating the PCI bus, and enumerating the USB bus when it finds a USB controller on the PCI bus, etc. Modern monitor connections also support discovery of the connected monitor ( HDMI, DisplayPort, DVI, VGA with EDID). Some bus protocols don't support enumeration, and then the main processor has no way to find out what devices are connected other than guessing.Īll modern PC buses support enumeration, in particular PCI (the original as well as its extensions and successors such as AGP and PCIe), over which most internal peripherals are connected, USB (all versions), over which most external peripherals are connected, as well as Firewire, SCSI, all modern versions of ATA/SATA, etc.
#Acpi x86 based pc means driver#
With that information, the operating system can report the list of available devices and decide which device driver to use for each of them. the main processor can ask “what devices are connected to this bus?” and the devices reply with some information about their type, manufacturer, model and configuration in a standardized format. Some bus protocols support enumeration (also called discovery), i.e. Peripherals are connected to the main processor via a bus.
