The Best of Both Worlds
Although many multimedia applications spend the majority of their
processor cycles on signal processing, there are many higher-level
functions that a consumer-ready product must implement. User interface
and display functions, networking and file manipulation are just a few.
Because these features are not time critical, the fine-level control
of DSP/BIOS is not required. Here, the resource abstraction provided by
the Linux driver model is preferred for the benefits of greater
flexibility and reduced development time, not to mention the wealth of
open-source application code available in the Linux community.
A solution in which the Linux and DSP BIOS operating systems run
concurrently on the same device involves the use of a virtualizer
to provide the system developer or integrator with advantages of both
systems (Figure 2 below).
 |
| Figure
2. Linux and DSP/BIOS running concurrently on a DM643x DSP Device |
The virtualizer acts as a fast and predictable switch to share DSP
resources between Linux and DSP/BIOS operating systems. It guarantees
the best possible performance for DSP/BIOS threads by making a
speculative switch to the context of the DSP/BIOS operating system
whenever an interrupt is received.
If the newly arrived interrupt corresponds to an event recognized
within the DSP/BIOS context, it will be handled within the DSP/BIOS
context, which is already loaded and ready to run.
While the virtualizer is DSP/BIOS enabled, the application is given
direct access to needed system resources without affecting the user and
kernel spaces maintained within the (suspended) Linux environment.
Once the application has completed its high performance signal
processing calculations within the DSP/BIOS environment, the
virtualizer forces a transition back to the Linux environment, which
provides access to the higher-level features available there.
The virtualizer-mediated sub-10 microsecond switch time between
operating systems allows programmers to meet real-time performance
requirements with little penalty compared to a native DSP/BIOS-only
system. This solution incurs a penalty of only about 1.5 percent
processing overhead for a typical multimedia device.
Additional Advantages to the
Dual-OS System
Perhaps the simplest advantage to extending a Linux-based product to
include the DSP/BIOS operating system is the ability to use algorithms
from the hundreds of associated third parties with no porting effort.
Compliance to the xDAIS standard guarantees seamless integration of
these third party algorithms into a DSP/BIOS environment.
Another advantage of extending a Linux-based system to include
DSP/BIOS is that applications executing in the DSP/BIOS environment are
free from the constraints of the GNU
General Public License (GPL) of the Linux kernel.
When implementing a Linux-based solution, it is not always obvious
exactly what the licensing requirements of unique, developer produced
software intellectual property are. By executing IP within the context
of the DSP/BIOS OS instead of the Linux OS, it is possible to avoid
this legal concern.
Conclusion
Using the technique described in this article, Linux and DSP BIOS may
be run concurrently on a single DSP core. This provides all the
functionality of a Linux solution while providing the precision and
hardware control available under DSP/BIOS.
Programmers may take advantage of application code written for Linux
and signal processing code written for DSP/BIOS without the effort of
having to port one into the other environment.
For a designer who requires the features of Linux in a real-time,
embedded application, upgrading to include the DSP BIOS toolset through
the use of a virtualizer adds significantly improved signal-processing
performance at a small cost in terms of system resources.
Dave Beal is director of product management for VirtualLogix, Inc., Steve
Preissig is an instructor in Texas
Instruments' Technical Training Organization, and Aurelien Jacquiot
is Project Manager at VirtualLogix, France.