DSP/BIOS Link or DSPLINK is an IPC (interprocessor communications) scheme for passing messages and data in multiprocessor systems. In the case of the DaVinci DSP family from Texas Instruments, this scheme would allow passing of messages and data between an ARM client and a DSP server. DSPLINK can be used to implement a layer of software abstraction called a RPC that allows a remote function on the DSP to appear as local function calls in the ARM application code. The Codec Engine IPC communication layer is implemented using a RPC call scheme built on top of DSP/BIOS LINK.
The shared memory protocol for IPC is implemented as follows:
- The ARM and DSP are programmed to a pre-determined memory address where a message will be sent from the ARM to the DSP; and another for messages sent from the DSP to the ARM.
- One processor sends messages to the other by writing the message into the pre-determined address and then sending an interrupt to signal the other processor that a new message is available. When transferring data buffers, only a pointer to a given buffer needs to be passed since the buffer resides in shared memory that is accessible to both the processors. ARM buffer addresses must be translated into physical addresses when being presented to the DSP, as the DSP does not have an MMU or a concept of virtual addressing.
- Once the processor receiving the message has read it, it marks a flag in shared memory to indicate that the message memory is now available to be rewritten with another message.
The DSP included in many DaVinci-based devices generally runs TI's DSP/BIOS RTOS. When multiple, heterogeneous cores are included in the device (e.g. DM644x), DSP/BIOS Link drivers run on both the ARM processor and the DSP to provide communication between the two.
ARM Operating System Support
A number of ARM9 operating systems support DSP/BIOS Link drivers:
- Montavista Linux
- TimeSys Linux
- Mentor Graphics Nucleus OS
- Green Hills Software INTEGRITY RTOS
- QNX Neutrino
- Windows CE
- LEOs (RTOS)