New for SoC-Based Hardware Platforms
Starting with Windows 8, the Windows operating system runs on System on a Chip (SoC) hardware platforms, in addition to PCs. Many of the new driver-support features in Windows 8 should be of special interest to driver developers for SoC-based platforms. This topic briefly summarizes some of these features.
Starting with Windows 8, the following driver-support features are available.
- GPIO Framework Extension
- SPB Framework Extension
- Serial Framework Extension
- Version 3 of DMA_OPERATIONS
- Support for D3cold Device Power State
- Component-Level Power Management
- Thermal Management
- Audio Offloading
- NDIS Packet Coalescing
- NDIS Selective Suspend
A GPIO controller configures a set of GPIO pins to function as low-bandwidth data I/O channels, device-select outputs, or interrupt-request inputs. The GPIO framework extension (GpioClx) in Windows 8 simplifies the task of writing a GPIO controller driver by performing many of the tasks that are common to all GPIO controller drivers. The hardware vendor for the GPIO controller supplies a driver that communicates with GpioClx and that performs all hardware-specific driver tasks for the GPIO controller. For more information, see General-Purpose I/O (GPIO) Drivers.
An SPB controller accesses peripheral devices that are connected to a simple peripheral bus, such as I2C or SPI. These buses are used in hardware platforms that operate on low power and that require low-pin-count connections to devices. The SPB framework extension (SpbCx) in Windows 8 simplifies the task of writing an SPB controller driver by performing many of the tasks that are common to all SPB controller drivers. The device drivers for peripheral devices that are connected to an SPB open logical connections to these devices and then use these connections to send I/O requests to the devices. SpbCx manages the queues of I/O requests for these devices, and works in conjunction with the SPB controller driver to handle the requests. For more information, see Simple Peripheral Bus (SPB) Drivers.
A serial controller accesses peripheral devices that are connected to serial ports on a UART, and uses a standard serial communications protocol, such as RS-232, to communicate with these devices. The serial framework extension (SerCx) in Windows 8 simplifies the task of writing a serial controller driver by performing many of the tasks that are common to all serial controller drivers. SerCx works in conjunction with the serial controller driver to handle I/O requests for peripheral devices that are permanently connected to unnamed serial ports (for example, a peripheral device that is soldered to a motherboard). The device drivers for these peripheral devices open logical connections to the devices and then use these connections to send I/O requests to the devices. To ensure compatibility with drivers and applications written for previous versions of Windows, the system-supplied Serial.sys driver continues to manage the named serial ports (COM1, COM2, and so on) on PCs. For more information, see Extension-Based Serial Controller Driver Design Guide.
Starting with Windows 8, version 3 of the DMA_OPERATIONS interface supports the advanced hardware capabilities of system DMA controllers in SoC-based hardware platforms. The new interface includes improved versions of some familiar DMA routines to simplify the management of scatter/gather lists and to reduce the need for driver intervention during complex DMA transfers. For more information, see Version 3 of the DMA Operations Interface.
Starting with Windows 8, the D3 (off) device power state is divided into two distinct substates, D3hot and D3cold. D3 is the lowest-powered device power state, and D3cold is the lowest-powered substate of D3. Moving idle devices to the D3cold substate can reduce power consumption and extend the time that a mobile hardware platform can run on a battery charge. For more information, see Supporting D3cold in a Driver.
Starting with Windows 8, the run-time power management framework (PoFx) supports power and clock management at the component (or subdevice) level. A device driver registers with PoFx to independently manage power usage in the individual components in a device. PoFx provides the fine-grained control necessary to extend the time that a portable computer, tablet PC, smartphone, or other mobile device can run on a battery charge. PoFx reduces power usage in a way that maintains the appearance of a mobile device that is always on and always connected. For more information, see Overview of the Power Management Framework.
Starting with Windows 8, the thermal management interface enables device drivers to participate in global management of device thermal levels by the operating system. By coordinating device activity across a hardware platform, the operating system balances the processing requirements of user tasks against the need to keep devices cool so that they continue to operate reliably. Thermal management achieves this balance in a way that preserves the user's perception of a hardware platform that is always on and always connected. For more information, see Device-Level Thermal Management.
Starting with Windows 8, audio driver support is available to enable the offloading of audio stream processing from the main processor to a dedicated digital signal processor (DSP). This DSP typically uses only a fraction of the power that would be required to complete the same task on the main processor.
A new set of audio driver properties is defined to support audio offloading. For more information, see KSPROPSETID_AudioEngine.
A new topology node type is available to enable hardware devices to expose their audio-offloading capabilities. For more information, see KSNODETYPE_AUDIO_ENGINE.
Starting with NDIS 6.30, network adapters can support NDIS packet coalescing. This feature reduces the processing time and battery power consumed by the arrival of noisy (random broadcast or multicast) packets. An adapter that supports this feature has built-in filtering capabilities to coalesce noisy packets so that the processor is interrupted less frequently. For more information, see NDIS Packet Coalescing.
Starting with NDIS 6.30, the NDIS selective suspend interface enables NDIS to suspend an idle network adapter so that the adapter stays in a low-power state until a wake-up event occurs. This interface is bus-independent. The miniport driver performs all bus-specific operations (for example, bus I/O control), and NDIS performs all bus-independent operations (for example, idle detection and power transition synchronization). For more information, see NDIS Selective Suspend.