IAR Aug 2000
footnotes, and it can require substantial efforts to make sure one is aware of, and can
handle, any changes to the new device.
Design and implementation requires not only programming experience but also
expertise in hardware design and development tools. Coding is error-prone, as it can be
very difficult to initialize and manipulate all configuration and status bits properly in the
Debugging can prove to be particularly tricky as the drivers may not work without
external hardware, and may need to conform to timing constraints or other resource
limitations. They may need to run at full speed and can sometimes not be single-stepped
in a debugger.
In practice, a fairly complete hardware environment with a debug monitor or an emulator
is needed, as are additional laboratory instruments such as an oscilloscope or a logic
analyser. A debug simulator can seldom be used.
To summarize, hand-crafted device driver development requires the following tasks:
Reading the hardware manual and learning the chip internals
Understanding the electronic board design
Designing the device driver library
Implementing the device driver library
Debugging the device driver library
Test and integration.
We are convinced that all of these items can be eliminated entirely or in part using new
innovative development tools, thus decreasing time-to-market and development cost,
while at the same time increasing the utilization of advanced chip features and
A typical example of increased utilization of microcontroller features is copying a
memory block from one address to another. Although an unused DMA channel may be
available in the processor, most programmers still write a software loop to copy bytes
rather than using the faster hardware mechanism. By simplifying the use of peripheral
modules like the DMA controller, more programmers will make better use of the
hardware and deliver more competitive software solutions faster.
Visual device driver development tools
What we need is a Rapid Application Development (RAD) tool that helps the developer
with as much of the chip-specific knowledge and programming efforts as possible, thus
giving him more time to concentrate on the application.