DSP/BIOS Real-Time Operating System (RTOS)
DSP/BIOS™ kernel is a scalable real-time multi-tasking kernel, designed specifically for the TMS320C6000™, TMS320C55x™, and TMS320C28x™ DSP platforms. Together with its associated networking, microprocessor-DSP communications, and driver modules, DSP/BIOS kernel provides a solid foundation for even the most sophisticated DSP applications. DSP/BIOS kernel has been proven in thousands of customer designs and is one of the world’s mostly widely used real-time operating systems. DSP/BIOS kernel requires no runtime license fees and is backed by Texas Instruments worldwide training and support organizations.
DSP/BIOS kernel provides standardized APIs across C6000™, C55x™ and C28x™ DSP platforms to support rapid application migration and is also optimized to run on the DSP cores on OMAP™ devices. DSP/BIOS kernel is available both standalone and as an integral part of the Code Composer Studio™ Interactive Development Environment (IDE) and includes graphical Kernel Object Viewer and Real-Time Analysis tools specifically focused on debugging and tuning multitasking applications.
DSP/BIOS kernel is backed by an experienced development team that regularly adds new capabilities, such as variable length message passing and power management.
More Than a Kernel
In addition to the core, DSP/BIOS multitasking kernel services and development tools, TI provides other DSP/BIOS-compatible modules that simplify application development:
- Network Developer’s Kit: A TCP/IP stack including higher level services such as HTTP server and telnet.
- DSP/BIOS Link: See below for more information: Microprocessor-DSP communications and control software that enables a microprocessor to bootload and communicate with a DSP.
- Processor Support Package (PSP): The PSP includes DSP/BIOS drivers for devices such as serial ports and EMACs, as well the low-level software layer for the all the DSP peripherals (Chip Support Library). Most PSPs are available for download in the applicable Software Development Kits (DVSDK and SDKs).
- Multimedia Framework Products: These systems software modules are augmented by DSP/BIOS-compatible Multimedia Framework Products, including the xDAIS Developer’s Kit, Codec Engine, Framework Components that eliminate many of the issues associated with developing and integrating multi-function DSP applications.
DSP/BIOS Kernel Overview
DSP/BIOS kernel provides a rich set of C-callable deterministic kernel services that enable developers to create sophisticated applications without compromising real-time deadlines. DSP/BIOS kernel is highly scalable with multithreading configurations requiring as few as 1K words.
DSP/BIOS kernel is configurable to minimize memory footprint. Configuration can be done either statically through graphical or scripting tools or dynamically using operating system calls. In addition to excluding unused modules, static configuration further reduces target memory footprint by eliminating the code required to dynamically create and delete operating system objects such as threads and semaphores.
|DSP/BIOS includes the following kernel modules:|
|Hardware Interrupts (HWI)||Interface from hardware interrupts to DSP/BIOS kernel|
|Software Interrupts (SWI)||Lightweight preemptible threads that use program stack but cannot yield|
|Tasks (TSK)||Independent threads of execution that can yield the processor|
|Periodic Functions (PRD)||Time-triggered lightweight threads|
|Message Queues (MSGQ)||Variable-length zero copy messages|
|Mailboxes (MBX)||Synchronized data exchange between tasks|
|Locks (LCK)||Nestable binary semaphores|
|Semaphores (SEM)||Counting semaphores|
|Queues (QUE)||Atomic link lists|
|Clock (CLK)||Interface to hardware timers|
|Streams (SIO)||Streaming I/O|
|General I/O (GIO)||Extensible I/O module with support for asynchronous I/O & synchronous read/write|
|Memory Manager (MEM)||Low overhead dynamic memory allocation|
|Buffer Manager (BUF)||Fast, deterministic fixed-size buffer allocation|
|Power Manager (PWRM)||Power management functions|
|Cache Control (BCACHE)||Cache configuration and management|
To provide the fast response required by DSP applications, DSP/BIOS kernel augments the traditional tasking model with additional threading mechanisms. Software Interrupts are lightweight pre-emptible threads that share a common stack. This results in lower memory overhead and faster context switch times, as there is no need to save and restore a task stack. Periodic Functions are time-triggered high-priority threads that can be easily set up to process samples of data arriving at fixed time intervals, simplifying the design of multirate systems.
DSP/BIOS IPC Mechanisms
DSP/BIOS kernel offers several IPC mechanisms for interthread communication. Semaphores and Locks provide basic synchronization and resource locking. Mailboxes enable synchronous transfer of fixed sized messages between tasks. Message queues enable zero copy, variable-length message passing between any DSP/BIOS kernel thread type. The exact memory for each message is allocated when the message needs to be sent. Message passing is transparent at the application level and can be within a single DSP or between multiple DSPs. For inter-DSP communication, a Message Queue Transport is required. Some of these (for example, Serial RapidIO®) are available pre-tested from TI.
DSP/BIOS Multicore Support
DSP/BIOS kernel fully supports TI’s multicore DSP solutions. For devices designed to execute the same image on multiple cores, DSP/BIOS kernel provides shared image support, maximizing the amount of local core memory available for data. In addition, a shared memory transport is provided to enable core-to-core communication using the DSP/BIOS MSGQ module. This transport utilizes the underlying hardware features such as atomic access monitors or hardware semaphores to provide the most efficient implementation.
DSP/BIOS Interrupt Management
DSP/BIOS kernel includes a comprehensive set of services for interrupt management. The interrupt dispatcher enables developers to write ISRs in C by performing low-level operations such as context save/restore and temporary disabling of the scheduler. This approach reduces code size by eliminating the need to specifically add such code to each ISR. To reduce data memory requirements, all ISRs use a common stack rather than the stack of the task they interrupt, with the exception of the first interrupt context, which is stored on the task stack for performance reasons. The HWI and Event Combiner modules provide additional APIs for enabling/disabling interrupts and multiplexing multiple interrupt sources on to a single pin.
DSP/BIOS Power Management
For TI DSPs used in portable applications where power consumption is a key consideration, such as the TMS320C5509 DSP, DSP/BIOS kernel offers a range of power management features. These may include automatically idling the CPU when in the IDL task, voltage and frequency scaling APIs, sleep or hibernate APIs, automated idling of peripherals when the peripheral domain is not in use, and a register/notify mechanism for coordinating complex system-wide power management.
DSP/BIOS OS-Aware Analysis & Debug
In conjunction with Code Composer Studio™ IDE, DSP/BIOS kernel provides several tools to aid debugging and optimization of multithreaded applications. The Kernel Object Viewer enables a developer to check the status of OS objects such as tasks, mailboxes, and semaphores, including whether a task is ready, running, or blocked, and which tasks are blocked on an IPC. The Real-Time Analysis tools display the thread execution and switching sequence, average and maximum execution times for a thread, and system CPU load, as well as providing a very low overhead printf capability.
Many DSP-based applications, ranging from digital cameras to communications switches, use a microprocessor (GPP) to control one or more DSPs. To meet this need, TI is increasingly delivering devices that offer an ARM® and DSP core in the same package. DSP/BIOS Link is software designed to facilitate communication between the ARM and the DSP in SoC devices.
To develop applications that reside on GPP+DSP solutions, developers must implement communications software that enables data and control information to be exchanged between the GPP and the DSP. In addition, the GPP must also boot the DSP and often control which algorithms the DSP executes for a specific task. DSP/BIOS Link eliminates the need to create these functions from scratch by providing a robust set of MCU-DSP communications services including:
- Variable-length messaging between the GPP and DSP
- Ring buffer communication between GPP and DSP
- Point-to-point, asynchronous data streaming between the GPP and DSP
- Bootload the DSP from GPP
- Pre-tested GPP-DSP communications driver support for select devices
DSP/BIOS Link is available for both SoC devices, such as DaVinci™, where the ARM and DSP communicate using shared memory, and discrete DSPs offering a PCI interface. DSP/BIOS Link is provided as a source code porting kit and includes pre-tested ports for some versions of embedded Linux.