Configuration Maintenance

The Device Tree Describes a System's Configuration

As mentioned, plug-in devices describe their own characteristics with FCode. Such descriptions are stored in the Open Firmware device tree, a data structure consisting of a collection of nodes. Each device tree node represents either: Each device tree node contains descriptive information called properties, and nodes representing hardware buses and devices also contain the software methods that are used to interact with the hardware. Buses are represented by "interior" nodes in the device tree. The "children" of a bus node represent the devices attached to that bus. Permanently-installed "built-in" devices also have device tree nodes with associated descriptions. The set of descriptive information about a particular device is open-ended, so new types of devices and new characteristics are handled easily.

An operating system may use the device tree, with its device descriptions, to configure itself, locate particular devices, attach device drivers, etc. The ability of Open Firmware to obtain complete descriptions and control methods from the FCode ROM contained on each hardware device supports the growing requirement for "plug and play" installation of new devices.

Configuration Variables Record User Choices

Another configuration issue is storage and maintenance of user choices, such as the preferred boot device and the amount of memory to test. Open Firmware has a facility for keeping such user choices in non-volatile memory, such as battery-backed RAM, electrically erasable PROM, or FLASH memory. Open Firmware configuration variables use self-describing human-readable variable names and values. The human readable values are encoded for efficient storage in the non-volatile memory device, where space is often at a premium. All access to these variables is by name. New variables may be added and old ones deleted, at will, allowing for easy evolution of product families.

Forward to next feature
Back to Features
Back to FirmWorks Home Page


Last Modified: November 17, 1997