Special Edition Using Microsoft Windows XP Professional (3rd Edition)
Windows, together with its Plug-and-Play technology, has grown far better at detecting and preventing hardware conflicts over the past few years. Still, system conflicts do arise, especially when you're using old ISA cards and other legacy hardware. (We suspect that there is little of this equipment still in use, and look forward to the day that we can delete this section from some future edition of this book. Until that day comes, we're stuck with it.) More often than not, configuration and installation problems are due to incorrect settings on an ISA network, I/O, sound, modem, and SCSI cards. The result is cards that conflict with one another for the same IRQ (interrupt request line), base I/O port address, DMA, or base memory address. Usually, these settings are made by changing jumpers or DIP switches on the board. NOTE Some legacy cards can be configured via software settings rather than DIP switches and jumpers. For example, 3Com's popular 3C509B Ethernet adapter card uses its own utility program to set the IRQ and port address. You might have to run such a configuration program (typically using a DOS command prompt) to set up the card before it will run correctly under Windows XP. Some ISA cards can also be switched into a true Plug-and-Play mode by flipping a switch or moving a jumper block on the actual card or running a software configuration program. As I mentioned earlier, you can force Windows XP to use manually selected system resources, such as IRQ, for a given piece of gear. In the Device Manager, choose the item, open its Properties dialog box, click the Resources tab, turn off Use Automatic Settings, and enter the resource or resources you want to assign. If the card uses manual configuration, you will need to set the board to the settings you select in the Device Manager. CAUTION Don't manually assign resources unless you know what you're doing. The result can be an operating system that won't boot or a bunch of other components in your system that no longer work. Hardware uses four major resources:
If you install Plug-and-Play cards (which configure themselves automatically), you seldom need to be concerned about these settings, especially if the cards use the PCI expansion slot (virtually any current card does). If your system originally ran Windows 98 or newer versions, it probably supports a feature called IRQ steering or IRQ sharing, which eliminates the major cause for hardware conflicts when you use PCI cards. However, if your system uses ISA cards, or you still use legacy ports such as serial (COM), parallel (LPT), and PS/2 mouse ports, IRQ and other resource conflicts can still be a problem. IRQs
PC architecture includes a means for a piece of hardware to quickly gain the attention of the CPU through a message called an interrupt request, or IRQ. Interrupts are sent over one of the 15 IRQ wires on the computer's bus. Such a request is a direct line to the CPU, which then services the request accordingly. A common example occurs when data comes in to your system's modem or LAN card. The modem or LAN card triggers the predetermined interrupt line (IRQ), and the CPU then begins to execute the program code that is appropriate for handling that interrupt. In fact, a part of the operating system called the interrupt handler is responsible for making it so. Table 30.3 lists the common IRQs in an Intel-based computer. This information, in conjunction with the IRQ and the Conflicts/Sharing nodes of the Computer Management application, might help you to assign boards effectively. But remember, it's always best to let Windows make hardware assignments unless you are really stuck and something important just won't work. Also, remember that if hardware isn't on the Hardware Compatibility List (HCL), you're better off just going shopping than wasting a day tinkering with settings.
(Modern PCI cards may use interrupt numbers higher than 15.) Common add-on devices which use an IRQ include
With only IRQ 9, 10, and 11 to choose from on many systems, it would be impossible to install all of these cards unless
If two ISA devices (or an ISA and a PCI device) try to share an IRQ, a system lockup will usually take place, or at best, neither device will work. A common cause of this a few years ago was when a serial mouse was attached to COM 1 and a fax/modem was assigned to COM 3. As you can see from the IRQ table, both of these ports use IRQ 4. The system worked until the user tried to operate the modem; then, the system locked up. MS-DOS and old versions of Windows didn't always use the printer (LPT) ports' IRQs, enabling IRQ 7 (LPT1) and IRQ 5 (LPT2) to be used by other devices. However, Windows XP uses the IRQs assigned to a device, so that sharing can only take place under these circumstances:
As shown Figure 30.11, IRQ steering is enabled automatically by Windows XP when the system supports it. In some cases, however, some motherboards might not permit IRQs to be shared, even by PCI devices. If you find yourself short on IRQs or if you have two devices attempting to use the same IRQ and creating a conflict, you can try these possible solutions:
DMA Channels
A typical PC has eight DMA channels, labeled 0 to 7. DMA channels are used for rapidly transferring data between memory and peripherals without the help of the CPU. Some cards even use several of these channels at once. (For example, the SoundBlaster 16 WaveEffects sound card uses two DMA channels.) Typical users of DMA channels are
While recent EIDE hard drives use a variation of DMA called Ultra DMA (UDMA) for fast data transfer, DMA transfers performed by PCI-based devices don't use specific DMA channels. The only time a PCI device ever needs to use a DMA channel is if it's emulating an ISA device that uses one, such as a PCI-based sound card emulating an ISA-based sound card. Sharing DMA channels is even worse than sharing IRQs. Because DMA channels are used to transfer data, not simply activate devices, you should never share DMA channels used by network cards, scanners, or SCSI host adapters, as a DMA conflict could result in data loss. Fortunately, with relatively few devices requiring DMA channels today, it's normally quite easy to avoid sharing a DMA channel. Table 30.4 shows the typical assignments.
TIP Some devices are hidden from view in the Device Manager. Hidden devices include nonPlug and Play devices (devices with earlier Windows 2000 device drivers) and devices that have been physically removed from the computer but have not had their drivers uninstalled. To see hidden devices in the Device Manager list, choose View, Show Hidden Devices. A check mark should appear on the menu, indicating that hidden devices are showing. Click it again to hide them. I/O Port Assignments
Using DMA is the fastest way to transfer data between components in the PC. However, an older technology called memory-mapped I/O is still in use today. (I/O means input/output.) In PC architecture, I/O ports are mapped into system memory and therefore are accessed by the CPU using memory addresses. As you might expect, each device that uses an I/O port must have a different port address, or data intended for one device will end up at another. Check out the I/O folder off the Hardware Resources node in Computer Management, as shown in Figure 30.12, to see a sample list of I/O addresses and assignments. As you can see, this folder contains quite a few assignments. Note that the addresses are in standard memory-mapping parlancehexadecimal. Figure 30.12. Typical I/O assignments in a Windows XP machine are numerous. Notice the scrollbar. Only about half the assignments are visible in this figure.
NOTE A common source of I/O contention occurs among video cards, SCSI devices, and network cards. However, most devices can use a choice of several I/O port address ranges to avoid conflicts.
Memory Addresses
Similar to the I/O port address, the base memory address is the beginning memory address that some cards or motherboard hardware use to communicate with the CPU. Sometimes this setting is called the RAM starting address (or start address). Some older cards (you'll notice this often with network adapters or SCSI cards which have an onboard BIOS) must have their base memory address set by a jumper or software. Then the device driver for that component needs its software setting to match the jumper. A typical base memory address reads like this: 0xA0000 or just A0000. Sometimes the last digit is dropped, like this: A000. If you open Computer Management and go to System Information, Hardware Resources, Memory, you'll see memory addresses such as the following: 0xA0000-0xBFFFF PCI bus This address means the memory area between A0000 and BFFFF is assigned to the PCI bus. (The 0x indicates that it is a hexadecimal address.) So, when setting memory addressing, you need to consider not only the base addresses, but also the amount of RAM space the addresses will occupy. Some cards use 16KB of space, and others use 32KB or more. Check the card's manual for options. Using more memory can, in some cases, improve the operation of the card, but it decreases your system's memory availability because that space will be occupied. The end result depends on the type of card. When you specify a memory address for a card, the operating system reserves that memory area for it. Regular RAM in that area is not used by the CPU, to prevent conflicts that could result from trying to write data or program code into system RAM at that address. Instead, the reserved area is used only by the device driver for your piece of hardware. Most older ISA cards use an upper memory address that falls somewhere between A000 and FFFF. However, many VL-Bus, PCI, and some ISA cards can use address space above 1MB, or even above 16MB in the case of 32-bit cards. If your card can utilize a high address, it's better to do so because it minimizes the chances of conflicting with the operating system. |