Home

  Device Drivers

In order to use KwikPeg, you must provide a video controller capable of rendering the graphical images required by your application. Most applications will also require an input device such as a keyboard (or equivalent) and/or a pointing device such as a mouse. For each of these physical devices, you must have an associated device driver. KwikPeg includes a number of device drivers for video and input controllers commonly found in embedded systems.

Video Drivers
Custom Screen Drivers
Input and Pointing Devices

  Video Drivers

KwikPeg is designed to work with and take full advantage of a broad range of video output devices and display screens. KwikPeg includes a variety of video device drivers, also called screen drivers, ready for use with video controllers which support any of the common video interfaces including LCD, HGA, CGA, VGA and SVGA devices.

KwikPeg can be configured for monochrome, 4 grays, 16 grays, 16 colors, 256 colors, 65535 colors and true 24-bit RGB color output. Furthermore, the video characteristics may be fixed (producing the smallest footprint) or dynamically determined at run time during initialization of the video controller.

A full range of VGA and LCD display devices are supported, including LCD devices of unique x-y resolutions or orientations. The KwikPeg display driver handles common resolutions such as 640x480 VGA or 320x240 LCD screens just as easily as unique or small x-y pixel resolutions.

All KwikPeg screen interface operations are performed by a library class named PegScreen. This class defines the drawing primitives and other operations that are available in every KwikPeg system, no matter what display type or video controller is used. Specific derived versions of PegScreen are then provided for each color depth, resolution, and video controller.

All KwikPeg screen drivers can draw lines, write text and transfer bitmap information into the video memory frame buffer. In fact, the software algorithms required to draw any KwikPeg object are provided with every KwikPeg screen driver.

It is unreasonable to expect KwikPeg to provide optimized video driver software for every high end video controller available. In fact, it is highly probable that a custom video device driver will be required to get best performance from a high end video controller. The key words are optimized and high end. KwikPeg strives to provide the best video performance possible by providing fully tuned and optimized driver templates for each video controller class.

There are a growing number of KwikPeg screen drivers for specific video controllers. Each screen driver is ready for use on the target hardware platform on which it was tested. Note that all available screen drivers are NOT delivered with KwikPeg. However, any of these fully functional screen drivers is available upon request.

Video Controller
PC compatible VGA Controller
(for use in real or protected mode)
PC compatible SVGA Controller
(for AMX 86 real mode use only; requires PC BIOS access)
Win32 for PC running Microsoft Windows
(also used by KwikPeg GUI Testing facility)
EPSON SED8106 8-bpp VGA LCD/CRT Controller
EPSON SED1330 and SED1353 4-bpp LCD Controllers
EPSON SED1354 8-bpp LCD/CRT Controller
EPSON SED1355 8-bpp LCD/CRT Controller
EPSON SED1356 8-bpp LCD/CRT/TV Controller
Cirrus Logic GD5430 8-bpp PCI Controller
Chips & Technology 65535 and 65545 Controllers
Sharp LH77790 LCD Controller
Motorola MPC823 PowerPC LCD Controller
Silicon Motion LynxEM+ LCD/CRT Controller

KwikPeg provides other screen drivers, called template drivers, which are ready for use with specific types of video controllers. These template drivers include generic support for each screen resolution and color depth handled by the video controller. The template drivers delivered with KwikPeg provide support for the following types of video output:

Video Controller
Linear monochrome
Linear 2 bit-per-pixel grayscale or CGA
Linear 4 bit-per-pixel
Linear 8 bit-per-pixel
Linear 16/32 bit-per-pixel

The following template drivers operate in profile mode to support the physical rotation of the display device. The direction of rotation, clockwise or counter-clockwise, is defined in the template driver header file. Unless altered by you, the rotation is clockwise.

Video Controller
Profile monochrome
Profile 2 bit-per-pixel grayscale or CGA
Profile 4 bit-per-pixel
Profile 8 bit-per-pixel
Profile 16/32 bit-per-pixel

  Hardware Acceleration

KwikPeg takes full advantage of video controllers which support hardware acceleration capabilities such as hardware cursor or hardware bit-blit. These capabilities are always provided in the display driver software or via software emulation if the video controller does not provide a specific hardware feature. When video hardware acceleration is available, some of the functions in the display driver are minimized as they take advantage of the feature.

Many embedded controllers such as the Elan, ARM and PowerPC processors provide integrated video control functionality with few acceleration features. These controllers work best using one of the screen driver templates provided with KwikPeg.

Several popular external video controllers are used in embedded applications when higher performance is required. Most of the KwikPeg video device drivers for these external video controllers include PegScreen driver classes tuned to take advantage of the available hardware acceleration features.


  Double Buffering

Double buffered video output is optionally supported in every KwikPeg configuration. Double buffering allows all intermediate drawing operations to be performed to an off-screen or local memory buffer. At the conclusion of a drawing operation, the invalidated region of the local memory buffer is transferred to the visible video memory, using hardware bit-blitting if provided. This mode of operation provides flicker free animation and scrolling. Double buffered output, while always supported, is not required. KwikPeg can be configured to unconditionally draw directly to visible video memory.


  PC Prototyping Screen Drivers

It is often useful to use KwikPeg to prototype your GUI on a conventional desktop PC before your final target hardware becomes available, thereby allowing software and hardware development to proceed in parallel, shortening the time to market for a new design. All of the video device drivers provided with KwikPeg can be used with the KwikPeg GUI Testing facility to test your GUI on the Windows desktop.


  Custom Screen Drivers

Custom screen drivers can be derived from the screen driver templates provided with KwikPeg. These template drivers are designed to work with any processor architecture which supports direct, linear access to the video memory buffer. Examples of such architectures include:

80x86 systems operating in real mode with <= 64Kb of video memory
80x86 systems operating in protected mode using the 32-bit flat model
Motorola 68xxx and 683xx (CPU32)
Motorola ColdFire
Motorola MPC821, MPC823 PowerPC
ARM, StrongARM and XScale
MIPS32
AMD Elan

To adapt one of the KwikPeg screen driver templates, you must edit the following three functions. You can usually follow the example provided by the fully implemented screen drivers which are provided with KwikPeg for most common controllers and display devices.

GetVideoAddress() - This function must return the base address of the video frame buffer. The implementation varies depending on architecture and operating mode.
SetPalette() - This function must program the controller palette registers when operating in a palletized mode. For low end video output devices and for 16-bit and 24-bit color output for which no palette programming is necessary, this function is not required.
ConfigureController() - This function must configure the video controller registers to generate controller output signals which match the timing specifications of the display device.

  Input and Pointing Devices

  Mouse

KwikPeg includes complete support for mouse or joystick input. The driver can be configured to draw various pointer bitmaps or to use hardware cursor capabilities if they exist. Mouse input drivers are provided for several different platforms. The KwikPeg Configuration Manager allows you to exclude mouse support from the KwikPeg Library if it is not required, thereby minimizing your memory footprint.

Mouse connected to an Intel 8250 or NS16550 compatible serial interface
Mouse connected to a PC compatible PS/2 keyboard/mouse interface port
Mouse accessed using PC BIOS services (for AMX 86 only)

  Touch Screen

Touch Screen input is fully supported. When operating with a touch screen, KwikPeg can be configured to eliminate the drawing of the mouse pointer and the highlighting of the object that has input focus. These options minimize your memory footprint and reduce the drawing overhead when a touch screen is used. When used with a touch screen, KwikPeg eliminates all pointer movement tracking and restricts pointer events to simple touch and release operations.


  Keyboard / Keypad

Full keyboard support is available for navigation through menus, windows, and dialogs. Keyboard support may range from a full QWERTY keyboard to a small set of user defined membrane keys. Full navigation and operation can be accomplished with as few as three unique input keys. The KwikPeg Configuration Manager allows you to exclude keyboard support from the KwikPeg Library if it is not required, thereby minimizing your memory footprint.

Terminal connected to an Intel 8250 or NS16550 compatible serial interface
Keyboard connected to a PC compatible 8042 keyboard controller
Keyboard accessed using PC BIOS services (for AMX 86 only)
Keyboard accessed using AMX 86 PC Supervisor services

  Soft Keys

KwikPeg supports the use of soft keys such as membrane keys placed at the perimeter of a display screen. When soft keys are used, touch and release events are generated. The event is correlated to the screen position adjacent to the membrane key which produced the event. KwikPeg is thereby fooled into operating as though a touch screen is being used. Other input devices can also be serviced using this technique.


Copyright © 1996-2007

















































RTOS
TCP/IP
Graphics
File System
License
Showcase
Targets
Toolsets
Manuals
Demos
Support
What's New
Press
Newsletters
White Papers
Tools
Alliances
Dealers
Contractors
Site Map
Company
Support
Home
FAQ
Get Info