Download presentation
Presentation is loading. Please wait.
Published byJemima Fowler Modified over 9 years ago
1
DSP/BIOS for C6000/C5000
2
What is DSP/BIOS Real-time Environment –Thread execution model Threads, Mailboxes, Semaphores –Device independent I/O Logging, Streaming I/O RTDX (Real-time data exchange) Real-time Analysis –Debug facility ( with CCS) Device Configuration and Management –GUI based configuration in CCS
3
DSP/BIOS Modules Kernel ModuleDescription Hardware InterruptsInterface from hardware interrupts to DSP/BIOS kernel Software InterruptsLightweight pre-emptible threads that use program stack TasksIndependent threads of execution that can yield the processor Periodic FunctionsTime-triggered lightweight threads MailboxesSynchronized data exchange between tasks LockNestable binary semaphores SemaphoresCounting semaphores QueuesAtomic link lists ClockInterface to hardware timers StreamsStreaming I/O for tasks PipesStreaming I/O for software interrupts Memory ManagerLow overhead dynamic memory allocation
4
DSP/BIOS Configuration
6
DSP/BIOS Real-time Kernel
7
DSP/BIOS Task Synchronization
8
DSP/BIOS Real-time Analysis
9
DSP/BIOS Real-time Analysis Features Low overhead (formatting done in IDE) Real-time Analysis Operations C5000 CPU Cycles Time (usec) for 100 MHz 5410 C6000 CPU Cycles Time (usec) for 200 MHz 6201 Log operations LOG_event590.59330.165 LOG_printf590.59360.18 Statistics operations STS_set190.19140.07 STS_add420.42150.075 STS_delta480.48210.105
10
DSP/BIOS Execution Graph
11
DSP/BIOS Statistics View
12
DSP/BIOS Input/Output Capability
13
DSP/BIOS I/O Example AudioFilter( inputPipe, outputPipe ) { PIP_get(inputPipe); /* dequeue full frame */ PIP_alloc(outputPipe); /* dequeue empty frame */ copy algorithm; /* read/write data frames */ PIP_free(inputPipe); /* recycle input frame */ PIP_put(outputPipe); /* enqueue output frame */ return; /* wait for next frame pair */ }
14
DSP/BIOS Audio I/O Example Void audio(PIP_Obj *in, PIP_Obj *out) { Uns *src, *dst; Uns size; if(PIP_getReaderNumFrames(in) == 0 || PIP_getWriterNumFrames(out)==0){ error(); } /* get input data and allocate output buffer */ PIP_get(in); PIP_alloc(out); /* copy input data to output buffer */ src = PIP_getReaderAddr(in); dst = PIP_getWriterAddr(out); size = PIP_getReaderSize(in); PIP_setWriterSize(out,size); for (; size > 0; size++) { *dst++ = *src++; } /* output copied data and free input buffer */ PIP_put(out); PIP_free(in); }
15
CSL and Peripheral Configuration
16
Peripheral Configuration using IDE
17
System Configuration Allows detailed specification of target –Memory: Data and Code location Generates peripheral initialization code –Interrupts, Timers, McBSP, DMA etc. Generates linker configuration file (.cmd)
18
Conclusions Royalty-free real-time kernel for production use Allows for rapid development of product from concept Can be integrated with another real-time OS Small footprint (can be as small as 1K words) –Modules used are controlled by the user Allows for on-the-fly debug/analysis in the field Available with C6000 and C5000 processors
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.