Before you start
Objectives: Learn about three general ways in which we can configure resources for our devices.
Prerequisites: you should know what are IRQs, what are DMA channels, and what are I/O addresses.
Key terms: devices, device, configure, pnp, resources, switches, configuration, hardware, resource
Hardware Switches
On older systems and on older devices we had to manually configure hardware resources by using certain hardware switches. By using hardware switches we basically turn off or on certain physical wires. Hardware switches can be implemented in a form of jumpers or in a form of dip switches.
Jumper Example
By using jumper we connect two pins (wires) on the device. When we put the jumper on those two pins we actually complete the circuit between them. We will typically have a series of pins on a certain device, and by connecting certain pins by using jumper, we configure certain resource. Nelson really old cards might also use dip switches. I have seen a card that used the which is in quite some time.
Some older devices can also use DIP switches to configure resources. Typically, device will have a series of switches and by turning those switches on or off, we configure the resource.
DIP Switch Example
The documentation of the board will contain the right combination of the on switches in order to configure certain resource. Each card can have a different combination.
Remember that hardware configuration is the older way of setting system resources, and we probably won’t have to configure system resources in this way, but it’s good to know how we used to do certain things. Hardware configuration was used on old ISA and VLB expansion devices.
Software Configuration
For some expansion boards we had to use a certain application in order to configure hardware resources for the device. The application is used on the operating system, and with it we could configure IRQs, the I/O addresses and even DMA channels. The whole process depends on the expansion bus and the device manufacturer. For example, software configuration was used with ISA, MCA and EISA buses. When we changed the configuration in the software, the settings were saved in the EEPROM (Electrically Erasable Programmable Read-Only Memory) chip on the device itself. EEPROM holds data even if there is no power, and it can also have new data written to it.
With MCA and EISA devices we usually also had a floppy diskette that came with the device. When we attached the device, we had to use that floppy diskette to configure the device. The MCA and EISA devices could determine which resources were free and automatically assign them. With ISA devices we had to know what IRQs, DMAs and port addresses were available and assign them manually. The bad thing about manual resource configuration is that if we set it wrong, we could lock up the whole system.
The software resource configuration was also used with the VLB bus. VLB devices were configured in the same way as ISA devices. We probably won’t run into hardware and software resource configuration methods anymore. Today practically all devices are Plug-and-Play enabled.
Plug-and-Play (PnP) Resource Configuration
Plug-and-Play is actually a standard which enables installed devices to configure themselves. We simply attach the device to the free slot, and turn the system on. The device will then check for free resources and configure its own IRQ, I/O ports, and DMA channel.
In order for PnP to work we have to have a PnP compatible motherboard and BIOS. Also, the operating system has to support PnP. Without all those requirements our PnP device simply won’t work, but today we don’t have to actually worry about those things. These days everything is PnP enabled. All versions of Windows since Windows NT (not included) support the PnP feature, as does Linux, Netware and other operating systems as well.
We usually associate PnP devices with the appearance of the PCI bus, but there were also some 16-bit ISA devices that were also PnP enabled. AGP devices were also PnP compatible, as are all the newer bus standards. PnP also allows for sharing a single IRQ channel by multiple devices, however DMA channels and I/O addresses can’t be shared.
PnP now makes our work with PCs a lot easier, sometimes without us even being aware of it. Configuring resources in the old days was rather complicated since we had to know what IRQs, I/O addresses and DMA channels were in use. Note that software drivers are still required in order for PnP device to work properly on our operating system.