|
|
 |
 |
In addition to reducing development time, however,
the BSP can also help the customer exploit the full range
of the SBC's built-in capabilities. The research cited above
also showed that the principal criterion for selection of
an onboard real-time operating system (RTOS) is performance.
The BSP provides the foundation for the overlying RTOS, and
helps to ensure its overall speed and reliability. Far from
being "a necessary evil," the BSP can be regarded as a vital
element of your sales support strategy, helping to package
your SBC attractively for your target markets. |
 |
|
|
 |
|
 |
 |
The firmware component is essential for every
board; it contains routines that initialize the processor(s)
and bus(es), set arbitration, set configuration registers,
and so on. The basic driver set contains, at minimum, drivers
for timers and a serial port (if present), as well as optional
drivers for Ethernet, SCSI, and other interfaces. |
 |
|
|
 |
|
 |
The boot monitor is an application that allows
the user to connect to the SBC via serial or Ethernet link
and download the rest of the system, including the OS and
applications. If the OS is already in onboard FLASH, the boot
monitor can load and execute code immediately. The boot monitor
provides a method of downloading code to a target SBC without
use of hardware-assisted tools such as JTAG debuggers. |
 |
 |
|
 |
|
|
 |
Within
certain architectures, you may have even tighter control on
code size vs. speed; for example, ARM THUMB compatible processors
permit the selection of a 16-bit or 32-bit instruction set
within the same file for different blocks of code. As a general
rule, limit the assembly to a single file in the BSP, and
make sure to provide extensive comments for both code and
data. At this stage in development, you can benefit from the
use of a hardware-assisted debugging tool, such as JTAG, that
is able to directly access the hardware on the board. The
best tools may even be provided with predefined register sets
for your board (or similar boards), ready for editing and
download. |
 |
 |
|
 |
|
|
 |
 |
If you plan to use different operating systems
for your SBC, the next logical step may be to define and develop
specific API, plus underlying functions, to handle most or
all of the components you have on board. This is sometimes
referred to as a microcode library - the idea is to provide
developers with building blocks for any specific applications
and operating systems they may work with. This approach provides
greater flexibility, but consumes more time and engineering
effort, because the structure, design, and effectiveness of
API become high priorities. Such APIs can be found in sample
development systems like the ARM Integrator family or the
Intel IXP1200. |
 |
|
|
 |
|
 |
In most cases, however, you will be focusing
on developing a BSP for a specific operating system. In this
situation, you can start developing basic drivers after completing
the initialization code. These will often include drivers
for timers and the serial port. Timer support is essential
for OS function, except in those cases when the timer is built
into the processor, with support included in the OS core.
A serial port driver is essential if you plan to use a boot
monitor; Ethernet may be used as a higher speed option to
serial. |
 |
 |
|
 |
|
|
 |
 |
In developing drivers, try to avoid static resource
configurations when possible, especially when using PCI bus.
Some extra effort invested here, to support dynamic coding,
will likely pay dividends during later stages of development,
when you need to add support for other devices. It's important
to make your code as modular as possible - code for different
components must be located in different files, with a clear
header file structure, and well-documented configuration files
must be included. |
 |
|
|
 |
|
 |
Is a boot monitor essential? The final decision
is yours, but it can be a convenient and attractive option
for the end user. A boot monitor represents a big chunk of
code and you should approach its development from the OS side,
as a component. This means you need to decide if it should
be written hardware-independent. Because it will use drivers
that you provide, it's possible to write it once and compile
for each specific processor family, rather than for a specific
board. This eliminates the burden of integrating such support
into new designs, but the boot monitor should be tested carefully
and source code should be provided. |
 |
 |
|
 |
|
|
 |
 |
It isn't necessary to provide a boot monitor
if you are sure that your customer will be developing additional
drivers or components using tools like JTAG debugger. These
tools perform the function of a boot monitor, and are bundled
with many additional features and options, using the same
physical interfaces between host and SBC. |
 |
|
|
 |
|
 |
You should select development and debugging
tools based on a track record of stable and proven performance,
instead of using highly sophisticated versions that have been
only recently released. You should carefully select the blend
of hardware and software that permits the development of reliable,
compact, and optimized code. If you are working with the first
prototypes of a newly-designed SBC, a bus analyzer, to help
detect hardware errors, can be a valuable investment. |
 |
 |
|
 |
|
|
 |
A
new BSP should always be tested using a written and clearly
identified test specification. The specification should cover
all possible combinations of system and bus speeds, caches
on and off, data size and transfer speeds, polling and interrupt
modes, and error checking. Software, especially when developed
for a new hardware platform, is rarely error-free; a solid
testing specification will help you identify and promptly
resolve problems. |
 |
 |
|
 |
|
|
 |
 |
In addition to "basic" test specifications,
it is often advisable to develop stress tests or applications,
especially if the board is intended for the military or communication
markets, where reliability is paramount. A series of well-designed
stress tests can help ensure both you and your customer that
the board has been designed with an adequate safety margin,
capable of withstanding the harshest anticipated working conditions.
As noted at the beginning of this article, superior support
is criterion number one in selecting a single board computer
vendor. The conformance of a new board to test specifications,
both basic and stress, is an essential element in providing
such support. |
 |
|
|
 |
|
 |
A number of vendors and independent organizations
provide validation services, as well. For example, WindRiver
supplies a Validation Test Suite, in source form, along with
its Tornado BSP Developer's Kit. Once your BSP has successfully
passed the test suite in the toolkit, WindRiver will provide
paid verification and compliance certification for BSPs written
for VxWorks RTOS. In most cases, RTOS vendors provide at least
a porting guide, as well as tools similar to those provided
by WindRiver. |
 |
 |
|
 |
|
|
 |
For example, Cirrus Logic's MSP (Market Specific
Processor) Maverick EP72111 integrates an ARM720T core with
an audio interface, LCD controller, DRAM controller, synchronous
serial, ROM, SDRAM, UARTs, infrared, general purpose I/O,
Ethernet, keyboard, and PCMCIA. Intel's IXP1200 architecture
combines a StrongARM core with six additional specific cores
known as microengines. In systems such as these, it's not
uncommon for the size of your firmware to be comparable to,
or even exceed, the OS plus applications image. |
 |
 |
|
 |
|
|
 |
 |
In the world of SOC designs, new interfaces
- including Universal Serial Bus (USB) and FireWire (IEEE
1394) - are migrating from the PC world. The USB port included
in new PCs stands a good chance of becoming the de facto interface
of choice, with the adoption of the new USB 2.0 specification
promising far higher speeds than the USB 1.1 in common use
today. |
 |
|
|
 |
|
 |
Many RTOS vendors, including Microware and WindRiver,
have already built USB support into their operating systems;
Microware claims USB 2.0 compatibility. It is only a matter
of time before USB replaces or coexists with Ethernet in single
board computers. For developers, of course, this means the
addition of USB support into board support packages. |
 |
 |
|
 |
|
|
 |
 |
FireWire, providing 400 Mbit/sec real-time performance
today, represents an attractive solution for those applications
that deal with video information. It is unlikely to replace
USB, but there will be a place for FireWire in many new SBCs. |
 |
|
|
 |
|
 |
Within the telecom market, there is strong demand
for Hot-Swap capable applications. The addition of Hot-Swap
support, especially for CompactPCI systems, can make your
BSP far more attractive to developers serving this market.
Several tools are available (for example, the GO-HotSwap toolkit
from Jungo) that simplify the development of Hot-Swap aware
drivers. |
 |
 |
|
 |
|
|
 |
 |
All of this increased functionality comes at
the price of consistent increases in firmware size and complexity.
To provide the needed support environment for developers,
BSPs must be better organized than ever, and built in modular
fashion. An excellent example of this approach is provided
by VisionWare, from WindRiver. VisionWare includes a basic
initialization/boot code called vBase, along with additional
modules, including console interface, protocol stacks, software
monitor, loader, flash file system, HTML server and a diagnostic
module. vBuilder IDE enables developers to select modules
to integrate into their firmware, and to add customized modules
as needed. However, even VisionWare does not provide the ability
to dynamically add drivers and modules, in an on-demand fashion,
to the system while running. |
 |
|
|
 |
|
 |
The most flexible and powerful BSP solution
will include a device manager, capable of interacting with
applications, the OS core, and the user, in addition to serving
requests for the dynamic loading and unloading of drivers,
system modules, or services (see Figure 1). Such a design
could potentially provide field upgradeability, flexibility,
minimal code size, Hot-Swap capability, serviceability, and
long product life. |
 |
 |
|
 |
|
|
 |
One would hope to see implementation of such
solutions in 2001, but the amount of work that needs to be
done will probably require the dedicated, close cooperation
of several companies. The overall message, however, is clear:
investments made now in design concepts for board support
packages will significantly shape the future of single board
computers. Whether made in a collaborative approach or by
individual companies, such investments promise to create advantages
for all developers working in this environment. |
 |
 |
|
 |
|
|
 |
 |
Editor's Note: Alexander Kaliadin is
Business Development Manager for RTSoft Inc., a leading provider
of complete software and support solutions for the embedded
systems market, based in Moscow, Russia. RTSoft offers services
including the development of board support packages (BSPs),
custom firmware, device drivers, and network protocols, as
well as OS porting, application programming and technical
support. The company, which employs over 200 people worldwide
and maintains relationships with suppliers in Europe and North
America, has successfully completed projects in telecommunications,
electronics, and avionics; and has developed solutions for
oil and gas, power distribution, and metallurgy industries. |
 |
|
|
 |
|
 |
|
 |
 |
|
 |
|
|
|
Copyright
2000 - 2004 © RTSoft |
|
|
|
|