lecture 04 dsp/bios. chapter 4 dsp/bios part 1 - introduction

79
Lecture 04 Lecture 04 DSP/BIOS DSP/BIOS

Upload: aleesha-willis

Post on 05-Jan-2016

244 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Lecture 04Lecture 04

DSP/BIOSDSP/BIOS

Page 2: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4Chapter 4

DSP/BIOSDSP/BIOS

Part 1 - IntroductionPart 1 - Introduction

Page 3: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 3

Learning ObjectivesLearning Objectives

Introduce DSP/BIOS and its components.Introduce DSP/BIOS and its components. Introduce the software tools for managing Introduce the software tools for managing

DSP/BIOS components and objects.DSP/BIOS components and objects. Run some examples.Run some examples.

Page 4: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 4

DSP/BIOSDSP/BIOS

The DSP/BIOS is an operating system that can provide:The DSP/BIOS is an operating system that can provide: A graphical interface for static system setup.A graphical interface for static system setup. Real-time scheduling.Real-time scheduling. Real-time analysis (RTA).Real-time analysis (RTA). Real-time data exchange (RTDX).Real-time data exchange (RTDX).

Page 5: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 5

DSP/BIOS ComponentsDSP/BIOS Components

The user writes code (‘C’/assembly) using the DSP/BIOS The user writes code (‘C’/assembly) using the DSP/BIOS library.library.

The user can use the configuration tools to setup the The user can use the configuration tools to setup the system.system.

All the files generated constitute a project.All the files generated constitute a project.

Page 6: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 6

DSP/BIOS ComponentsDSP/BIOS Components

The project is then compiled, assembled and linked by the The project is then compiled, assembled and linked by the code generation tools in order to generate an executable code generation tools in order to generate an executable file (*.out).file (*.out).

There are also some DSP/BIOS plug-ins that can be used, There are also some DSP/BIOS plug-ins that can be used, for instance, as program test while the target is running.for instance, as program test while the target is running.

Page 7: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 7

DSP/BIOS ComponentsDSP/BIOS Components

Code composer simulator/debugger and the host emulator support are Code composer simulator/debugger and the host emulator support are also part of the code composer studio.also part of the code composer studio.

The host and target communicate through the JTAG (Joint Test The host and target communicate through the JTAG (Joint Test Action Group) connection (Action Group) connection (ssya002c.pdfssya002c.pdf).).

Page 8: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 8

Graphical Interface for Static System SetupGraphical Interface for Static System Setup

Static system setup is performed using the DSP/BIOS GUI configuration Static system setup is performed using the DSP/BIOS GUI configuration tool.tool.

The configuration tool has an interface similar to windows explorer.The configuration tool has an interface similar to windows explorer. It lets you:It lets you:

Specify a wide range of parameters used by the DSP/BIOS real-time library.Specify a wide range of parameters used by the DSP/BIOS real-time library. Create run-time objects that are used by the target application’s DSP/BIOS API calls.Create run-time objects that are used by the target application’s DSP/BIOS API calls.

Note: API: Application Programming Interface Note: API: Application Programming Interface

Page 9: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 9

Graphical Interface for Static System SetupGraphical Interface for Static System Setup

The DSP/BIOS main objects are:The DSP/BIOS main objects are:(1)(1) Hardware interrupts (HWI).Hardware interrupts (HWI).

(2)(2) Software interrupts (SWI).Software interrupts (SWI).

(3)(3) Tasks (TSK, IDL).Tasks (TSK, IDL).

(4)(4) Data and I/O streams (RTDX, SIO, PIP, HST).Data and I/O streams (RTDX, SIO, PIP, HST).

(5)(5) Synchronization and Communication (SEM, MBX, Synchronization and Communication (SEM, MBX, LCK).LCK).

(6)(6) Timing (PRD, CLK).Timing (PRD, CLK).

(7)(7) Logging and statistics (LOG, STS, TRC).Logging and statistics (LOG, STS, TRC).For a complete list see: For a complete list see: SPRU303.pdfSPRU303.pdf (Page 1-5). (Page 1-5).

Page 10: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 10

Graphical Interface for Static System SetupGraphical Interface for Static System Setup

How to create a configuration file:How to create a configuration file: Open CCS and create a new project and name it Open CCS and create a new project and name it

“bios_lab1.pjt”.“bios_lab1.pjt”. Create a new configuration file by using a pre-built template Create a new configuration file by using a pre-built template

file:file:

FFile: ile: NNew: DSP/BIOS Configurationew: DSP/BIOS Configuration

Page 11: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 11

Graphical Interface for Static System SetupGraphical Interface for Static System Setup How to create a configuration file:How to create a configuration file:

Double click on the “dsk6416.cdb” icon and the Double click on the “dsk6416.cdb” icon and the following configuration will appear:following configuration will appear:

Page 12: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 12

Graphical Interface for Static System SetupGraphical Interface for Static System Setup Open Open SystemSystem::

Click on Click on Global SettingsGlobal Settings Change PropertiesChange Properties

Page 13: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 13

Graphical Interface for Static System SetupGraphical Interface for Static System Setup Open Open SchedulingScheduling, and HWI – HW Interrupt Service Manager, and HWI – HW Interrupt Service Manager

Click on Click on HWI-INT13HWI-INT13 Change PropertiesChange Properties

Page 14: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 14

Graphical Interface for Static System SetupGraphical Interface for Static System Setup Open Open SchedulingScheduling,, andand SWI Software Interrupt Manager SWI Software Interrupt Manager::

Insert SWIInsert SWI Click on Click on SWI0SWI0, change Name to , change Name to SWI_for_algorithm_1SWI_for_algorithm_1 Change PropertiesChange Properties

Page 15: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 15

Graphical Interface for Static System SetupGraphical Interface for Static System Setup Open Open SchedulingScheduling,, andand TSK - Task Manager TSK - Task Manager::

Insert TaskInsert Task Click on Click on TSKTSK, change Name to , change Name to TaskOneTskTaskOneTsk Change PropertiesChange Properties

Page 16: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 16

Graphical Interface for Static System SetupGraphical Interface for Static System Setup Open Open SynchronizationSynchronization,, andand SEM - Semaphore SEM - Semaphore::

Insert SemaphoreInsert Semaphore Click on Click on SEM0SEM0, change Name to , change Name to taskOneSemtaskOneSem

Page 17: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 17

Graphical Interface for Static System SetupGraphical Interface for Static System Setup

Open Open CSL – Chip Support LibraryCSL – Chip Support Library,, andand TIMER TIMER:: Choice Choice TIMER Configuration ManagerTIMER Configuration Manager Insert on Insert on timerCfg0timerCfg0

Page 18: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 18

Graphical Interface for Static System SetupGraphical Interface for Static System Setup

Open Open CSL – Chip Support LibraryCSL – Chip Support Library,, andand TIMER TIMER:: Change Properties of Change Properties of timerCfg0timerCfg0

Page 19: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 19

Graphical Interface for Static System SetupGraphical Interface for Static System Setup Open Open CSL – Chip Support LibraryCSL – Chip Support Library,, andand TIMER TIMER::

Click on Click on TIMER Resource ManagerTIMER Resource Manager Change Properties ofChange Properties of Timer_Device1 Timer_Device1

Page 20: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 20

Graphical Interface for Static System SetupGraphical Interface for Static System Setup How to create a configuration file:How to create a configuration file:

Now that you have selected the .cdb, save it in your current Now that you have selected the .cdb, save it in your current working directory, e.g: MyProjects\BIOS_Lab1\bios_lab.cdb.working directory, e.g: MyProjects\BIOS_Lab1\bios_lab.cdb.

Finally, add the “*.cdb” configuration file to the project.Finally, add the “*.cdb” configuration file to the project.

Page 21: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 21

Graphical Interface for Static System SetupGraphical Interface for Static System Setup

Files created by the configuration tools:Files created by the configuration tools: Once the lab1.cdb file is modified, saved and added Once the lab1.cdb file is modified, saved and added

to the project, the configuration manager will create to the project, the configuration manager will create and load the following files:and load the following files: Bios_labcfg.s62Bios_labcfg.s62 Assembly fileAssembly file Bios_labcfg_c.cBios_labcfg_c.c C fileC file Bios_labcfg.hBios_labcfg.h Header file for CHeader file for C Bios_labcfg.h62Bios_labcfg.h62 Header file for assemblyHeader file for assembly

A file called “Bios_labcfg.cmd” is also created but A file called “Bios_labcfg.cmd” is also created but must be loaded by the user.must be loaded by the user.

Note:Note: the user must add the *.cdb and *.cmd the user must add the *.cdb and *.cmd files to the project.files to the project.

Page 22: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 22

Graphical Interface for Static System SetupGraphical Interface for Static System Setup

Files used to create the DSP/BIOS program:Files used to create the DSP/BIOS program: The abbreviation 62 is used for the C6000 The abbreviation 62 is used for the C6000

processors.processors.

Programs generated by the userPrograms generated by the user

Programs/Files generated by the Programs/Files generated by the configuration managerconfiguration manager

Page 23: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4Chapter 4

DSP/BIOSDSP/BIOS

Part 2 - Real Time SchedulingPart 2 - Real Time Scheduling

Page 24: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 24

Learning ObjectivesLearning Objectives

What is a real-time scheduler?What is a real-time scheduler? Why do we need a real-time scheduler?Why do we need a real-time scheduler? DSP/BIOS Thread Types.DSP/BIOS Thread Types. Example.Example.

Page 25: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 25

Real-time schedulingReal-time scheduling

Before embarking into real-time scheduling let Before embarking into real-time scheduling let us first state the problem:us first state the problem:

main ()main ()

{{

for (;;);for (;;);

}}

ISR1()ISR1()

{{

algorithm1();algorithm1();

}}

ISR2()ISR2()

{{

algorithm2();algorithm2();

}}

Once ISR1 or 2 is called, algorithm 1 or 2 runs to Once ISR1 or 2 is called, algorithm 1 or 2 runs to completion. Can this cause a problem?completion. Can this cause a problem?

Page 26: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 26

Real-time schedulingReal-time scheduling

Before embarking into real-time scheduling let Before embarking into real-time scheduling let us first state the problem:us first state the problem:

main ()main ()

{{

for (;;);for (;;);

}}

ISR1()ISR1()

{{

algorithm1();algorithm1();

}}

ISR2()ISR2()

{{

algorithm2();algorithm2();

}}

Once ISR1 or ISR2 is called, algorithm 1 or 2 runs to Once ISR1 or ISR2 is called, algorithm 1 or 2 runs to completion. Can this cause a problem?completion. Can this cause a problem?

There is no guarantee of meeting the There is no guarantee of meeting the real-time deadlines because:real-time deadlines because:

(1)(1) The algorithms can run at different The algorithms can run at different rates.rates.

(2)(2) One algorithm can overshadow the One algorithm can overshadow the other.other.

(3)(3) The timing can be non-The timing can be non-deterministic.deterministic.

etc.etc.

Page 27: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 27

Real-time schedulingReal-time scheduling

The answer depends on the application.The answer depends on the application. If we want to process two algorithms in real-time If we want to process two algorithms in real-time

then we have to answer the following questions:then we have to answer the following questions: Are ISR1 and ISR2 synchronized? If yes, then we can use only Are ISR1 and ISR2 synchronized? If yes, then we can use only

an ISR that processes both algorithms (assuming that we have an ISR that processes both algorithms (assuming that we have enough processing power to complete algorithm 1 and 2 on enough processing power to complete algorithm 1 and 2 on time).time).

What happens if the algorithms are not synchronized?What happens if the algorithms are not synchronized? Which algorithm has a higher priority?Which algorithm has a higher priority? Can the algorithm of lower priority be pre-empted (stopped)?Can the algorithm of lower priority be pre-empted (stopped)?

Page 28: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 28

Real-time schedulingReal-time scheduling

Example: Simple application.Example: Simple application. System description:System description:

Algorithm 1 and 2 are not synchronised.Algorithm 1 and 2 are not synchronised. Assume algorithm 1 has the highest priority.Assume algorithm 1 has the highest priority. Algorithm 2 can be pended.Algorithm 2 can be pended.

Algorithm 1Algorithm 1

Algorithm 2Algorithm 2

CPU processing CPU processing Algorithm 1Algorithm 1

CPU processing Algorithm 2CPU processing Algorithm 2

MISSED!MISSED!

Remember: there is only one CPU and therefore only Remember: there is only one CPU and therefore only one algorithm can be processed at a time.one algorithm can be processed at a time.

Page 29: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 29

Real-time schedulingReal-time scheduling

Example: Simple application.Example: Simple application. Solution 1: Algorithm decomposition:Solution 1: Algorithm decomposition:

The algorithm can be decomposed into sub-functions:The algorithm can be decomposed into sub-functions:

When the CPU is not processing algorithm1 it can When the CPU is not processing algorithm1 it can process one of the sub-functions (to completion) as process one of the sub-functions (to completion) as shown:shown:

algorithm2 ();algorithm2 (); function1();function1();

function2();function2();

function3();function3();

Algorithm 1Algorithm 1

Algorithm 2Algorithm 2function1function1 function2function2 function3function3

Page 30: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 30

Real-time schedulingReal-time scheduling

Example: Simple application.Example: Simple application. Problems with this solution:Problems with this solution:

Difficult to write (as timing is critical).Difficult to write (as timing is critical). Difficult to change (what happens if algorithm is Difficult to change (what happens if algorithm is

modified or another algorithm is added).modified or another algorithm is added).

Page 31: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 31

Real-time schedulingReal-time scheduling

Example: Simple application.Example: Simple application. Solution 2: Using an operating systemSolution 2: Using an operating system

Advantages:Advantages: Easy to write (algorithms are written independently).Easy to write (algorithms are written independently). Easy to maintain or change (operating system takes care of the scheduling).Easy to maintain or change (operating system takes care of the scheduling). Enables fast time to market.Enables fast time to market.

Which operating system? Depends on:Which operating system? Depends on: The processor being used.The processor being used. The DSP platform (single/multi processors).The DSP platform (single/multi processors).

Page 32: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 32

Real-time scheduling: DSP/BIOSReal-time scheduling: DSP/BIOS

For all TI DSPs there is a DSP/BIOS operating system which includes:For all TI DSPs there is a DSP/BIOS operating system which includes: Small sized real-time library.Small sized real-time library. An API for using the library services.An API for using the library services. Easy-to-use configuration tools.Easy-to-use configuration tools. Real-time analysis programs.Real-time analysis programs.

DSP/BIOS scheduling solution provides:DSP/BIOS scheduling solution provides: Fixed-priority preemptive scheduler.Fixed-priority preemptive scheduler. Multiple thread types.Multiple thread types.

Page 33: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 33

Real-time scheduling: TerminologyReal-time scheduling: Terminology

No preemption:No preemption: Resources cannot be preempted; which means that the only way of Resources cannot be preempted; which means that the only way of releasing a resource is by the process of holding it.releasing a resource is by the process of holding it.

Object:Object: Term for data and code structures provided by DSP/BIOS, e.g. an event, task, Term for data and code structures provided by DSP/BIOS, e.g. an event, task, semaphore.semaphore.

Pending:Pending: Wait for an event Resource preemption: Release of a resource. Wait for an event Resource preemption: Release of a resource.

Post:Post: Signal an event, e.g. post a software interrupt, that is make a software interrupt ready. Signal an event, e.g. post a software interrupt, that is make a software interrupt ready.

Preemption:Preemption: A higher priority function (or thread) interrupts other functions (or threads) A higher priority function (or thread) interrupts other functions (or threads) of lower priority.of lower priority.

Priority scheduling:Priority scheduling: Priority scheduling can be either preemptive or non-preemptive. A Priority scheduling can be either preemptive or non-preemptive. A preemptive priority scheduling algorithm will preempt (release) the CPU if another preemptive priority scheduling algorithm will preempt (release) the CPU if another process of higher priority arrives.process of higher priority arrives.

Process:Process: A task or thread of execution. A task or thread of execution.

Scheduler:Scheduler: System software to manage the execution of threads. System software to manage the execution of threads.

Scheduling:Scheduling: The planning used to share a resource. The planning used to share a resource.

Semaphore:Semaphore: Synchronization system object that enables tasks to synchronize their activities. Synchronization system object that enables tasks to synchronize their activities.

Thread:Thread: An independent function. An independent function.

Page 34: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 34

DSP/BIOS Thread TypesDSP/BIOS Thread TypesP

rio

rity

Pri

ori

tyHWIHWI

Hardware InterruptsHardware Interrupts

HWI priorities set by hardwareHWI priorities set by hardware

One ISR per interrupt.One ISR per interrupt.

HWI triggered by hardware interrupt.HWI triggered by hardware interrupt.

IDL runs as the background thread.IDL runs as the background thread.

What causes a SWI or TSK to run?What causes a SWI or TSK to run?

SWISWISoftware InterruptsSoftware Interrupts

14 SWI priority levels14 SWI priority levels

Multiple SWIs at each level.Multiple SWIs at each level.

TSKTSKTasksTasks

15 TSK priority levels15 TSK priority levels

Multiple TSKs at each level.Multiple TSKs at each level.

IDLIDLBackgroundBackground

Multiple IDL functionsMultiple IDL functions

Continuous loop.Continuous loop.

Page 35: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 35

Triggering SWI or TSKTriggering SWI or TSK

SWI cannot pend.SWI cannot pend.

SWI always returnsSWI always returns

from function.from function.

SWISWI

startstart

endend

SWI_postSWI_post

““run torun to

completion”completion”

TSK only returns when no TSK only returns when no

longer needed, otherwiselonger needed, otherwise

normally an infinite loop.normally an infinite loop.

TSKTSK

SEM_pendSEM_pend

startstart

endend

blockblock

SEM_postSEM_post

Page 36: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 36

Considerations in Selecting Thread TypesConsiderations in Selecting Thread Types

Thread latency and data rates.Thread latency and data rates. Multi-tiered response to interrupts:Multi-tiered response to interrupts:

HWI is fast (for sample-by-sample response time).HWI is fast (for sample-by-sample response time). SWI is slower (triggered to process frame).SWI is slower (triggered to process frame).

Priority of thread.Priority of thread. Stack needs:Stack needs:

O.K. to share system stack? then use SWI.O.K. to share system stack? then use SWI. Need private stack? then use TSK.Need private stack? then use TSK.

Synchronization and communication methods:Synchronization and communication methods: SWI and TSK have different methods.SWI and TSK have different methods.

User preference or ease-of-use.User preference or ease-of-use.

Page 37: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 37

Thread Preemption ExampleThread Preemption Example

HWIHWI

SWI 2SWI 2

SWI 1SWI 1

IDLIDL

main()main()

TSK 2TSK 2

TSK 1TSK 1

interruptinterrupt

pend pend sem2sem2

returnreturn

interruptinterrupt

interruptinterrupt

pend pend sem2sem2

pend pend sem1sem1

interruptinterrupt

returnreturn

returnreturn

post post swi1swi1 returnreturn post post

swi2swi2 returnreturn post post sem2sem2 returnreturn post post

swi2swi2 returnreturn

post post sem1sem1

post post sem2sem2

returnreturn

pend pend sem2sem2

pend pend sem1sem1

Events over timeEvents over time

Page 38: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 38

Laboratory ExerciseLaboratory Exercise

Laboratory objectives:Laboratory objectives:(1)(1) Set the internal timer 1 to generate ticks at 8kHz.Set the internal timer 1 to generate ticks at 8kHz.

(2)(2) Set a hardware interrupt that is triggered by internal timer 1.Set a hardware interrupt that is triggered by internal timer 1.

(3)(3) Create a software interrupt that can be posted by the hardware interrupt.Create a software interrupt that can be posted by the hardware interrupt.

(4)(4) Create a task that can be posted by the hardware interrupt.Create a task that can be posted by the hardware interrupt.

(5)(5) Create a semaphore that can be used by the task functions.Create a semaphore that can be used by the task functions.

Page 39: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 39

(1) Setting Internal Timer 1(1) Setting Internal Timer 1

(1)(1) Create a new project and call it “bios_lab.pjt”.Create a new project and call it “bios_lab.pjt”.

(2)(2) Add the “dsk6416.cdb” file and rename it Add the “dsk6416.cdb” file and rename it “bios_lab2.cdb”.“bios_lab2.cdb”.

(3)(3) Set a timer configuration by using the “Timer Set a timer configuration by using the “Timer Configuration Manager” and call it “timerCfg0” and Configuration Manager” and call it “timerCfg0” and set the properties:set the properties:

The GUI interface will generate the “bios_labcfg.c”, see The GUI interface will generate the “bios_labcfg.c”, see bios_labcfg.pdfbios_labcfg.pdf

Page 40: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 40

(2) Setting the Hardware Interrupt(2) Setting the Hardware Interrupt

(1)(1) Open the CDB file.Open the CDB file.

(2)(2) Select the “HWI - Hardware Interrupt Service …”.Select the “HWI - Hardware Interrupt Service …”.

((3)3) Select HWI_INT15 and right click to Select HWI_INT15 and right click to select properties.select properties.

Source = Timer_1Source = Timer_1

Function = _timerIsrFunction = _timerIsr

Page 41: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 41

(2) Setting the Hardware Interrupt(2) Setting the Hardware Interrupt

(4)(4) Write the Interrupt Service Routine in C.Write the Interrupt Service Routine in C.

void timerIsr (void)void timerIsr (void)

{{

/* Put your code here *//* Put your code here */

}}

Page 42: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 42

(3) Creating a Software Interrupt(3) Creating a Software Interrupt

(1)(1) Open the cdb file and select the “SWI - Software Interrupt Manager”Open the cdb file and select the “SWI - Software Interrupt Manager”

and create a new software interrupt called “SWI_for_algorithm_1”.and create a new software interrupt called “SWI_for_algorithm_1”.

Page 43: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 43

(3) Creating a Software Interrupt(3) Creating a Software Interrupt

(2)(2) Change the properties of the “SWI_for_algorithm_1” to:Change the properties of the “SWI_for_algorithm_1” to:

Page 44: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 44

(3) Creating a Software Interrupt(3) Creating a Software Interrupt

(3)(3) Create a software interrupt function in C.Create a software interrupt function in C.

void algorithm_1 (void)void algorithm_1 (void)

{{

/* Put your code here *//* Put your code here */

}}

Page 45: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 45

(4) Creating a Task(4) Creating a Task

(1)(1) Open the cdb file and select the “TSK - Task Manager”Open the cdb file and select the “TSK - Task Manager”

and create a new task called “TaskOneTsk”.and create a new task called “TaskOneTsk”.

Page 46: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 46

(4) Creating a Task(4) Creating a Task

(2)(2) Change the properties to:Change the properties to:

Page 47: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 47

void ProcessTask (void)void ProcessTask (void)

{{

/* Put your algorithm here *//* Put your algorithm here */

}}

(4) Creating a Task(4) Creating a Task

(3)(3) Create a task function in C:Create a task function in C:

Page 48: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 48

(5) Creating a Semaphore(5) Creating a Semaphore(1)(1) Open the cdb file and select the “SEM - Semaphore Manager” and Open the cdb file and select the “SEM - Semaphore Manager” and

create a new semaphore called “taskOneSem”.create a new semaphore called “taskOneSem”.

(2)(2) Change the properties of the “taskOneSem” to:Change the properties of the “taskOneSem” to:

Page 49: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 49

Posting Software Interrupts and TasksPosting Software Interrupts and Tasks

(1)(1) Software InterruptsSoftware Interrupts

The software interrupts can be posted simply by writing:The software interrupts can be posted simply by writing:

(2)(2) TasksTasks

The task can be removed from semaphore queue and put it on the ready queue:The task can be removed from semaphore queue and put it on the ready queue:

SWI_post (&SWI_for_algorithm_1);SWI_post (&SWI_for_algorithm_1);

SEM_post (&taskOneSem);SEM_post (&taskOneSem);

Page 50: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 50

More on Tasks… More on Tasks…

A task can be pending where as Software Interrupts (SWI) run to completion.A task can be pending where as Software Interrupts (SWI) run to completion. Tasks normally run in an infinite loop and within the loop the task tests for a semaphore.Tasks normally run in an infinite loop and within the loop the task tests for a semaphore. A task can preempt itself, e.g:A task can preempt itself, e.g:

void ProcessTask (void)void ProcessTask (void)

{{

while (1)while (1)

{{

SEM_pend (&taskOneSem, SYS_FOREVER);SEM_pend (&taskOneSem, SYS_FOREVER);

/* Insert your code here *//* Insert your code here */

}}

}}

Page 51: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 51

Putting it all together… Putting it all together… void main (void)void main (void){{

/* Put all your setup code here *//* Put all your setup code here */return; /*DSP BIOS starts after the return */return; /*DSP BIOS starts after the return */

}}

/* Hardware Interrupt *//* Hardware Interrupt */void timerIsr (void)void timerIsr (void){{

/* Put your code here *//* Put your code here */SWI_post (&SWI_for_algorithm_1);SWI_post (&SWI_for_algorithm_1);SEM_post (&taskOneSem);SEM_post (&taskOneSem);

}}

/*Software Interrupt *//*Software Interrupt */void algorithm_1 (void)void algorithm_1 (void){{

/* Put your code here *//* Put your code here */}}

/* Task *//* Task */void ProcessTask (void)void ProcessTask (void){{

while (1)while (1){{

SEM_pend (&taskOneSem, SYS_FOREVER);SEM_pend (&taskOneSem, SYS_FOREVER);/* Insert your code here *//* Insert your code here */

}}}}

Page 52: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 52

Putting it all together… Putting it all together… void main (void)void main (void){{

/* Put all your setup code here *//* Put all your setup code here */return; /*DSP BIOS starts after the return */return; /*DSP BIOS starts after the return */

}}

/* Hardware Interrupt *//* Hardware Interrupt */void timerIsr (void)void timerIsr (void){{

/* Put your code here *//* Put your code here */SWI_post (&SWI_for_algorithm_1);SWI_post (&SWI_for_algorithm_1);SEM_post (&taskOneSem);SEM_post (&taskOneSem);

}}

/*Software Interrupt *//*Software Interrupt */void algorithm_1 (void)void algorithm_1 (void){{

/* Put your code here *//* Put your code here */}}

/* Task *//* Task */void ProcessTask (void)void ProcessTask (void){{

while (1)while (1){{

SEM_pend (&taskOneSem, SYS_FOREVER);SEM_pend (&taskOneSem, SYS_FOREVER);/* Insert your code here *//* Insert your code here */

}}}}

Page 53: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 53

Putting it all together… Putting it all together…

See example located in:See example located in:

Bios_Lab1\bios_lab.pjtBios_Lab1\bios_lab.pjt

Page 54: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4Chapter 4

DSP/BIOSDSP/BIOS

Part 3 - Real Time Analysis ToolsPart 3 - Real Time Analysis Tools

Page 55: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 55

Learning ObjectivesLearning Objectives

Introduction to the analysis tools.Introduction to the analysis tools. Using the LOG module.Using the LOG module. Using the STS module.Using the STS module. Defining DSP/BIOS objects using the Defining DSP/BIOS objects using the

configuration tools.configuration tools. Example.Example.

Page 56: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 56

IntroductionIntroduction

Traditionally analysis was performed by Traditionally analysis was performed by halting the processor and examining variables halting the processor and examining variables or memory.or memory.

This traditional method is invasive and does This traditional method is invasive and does not represent the reality of real-time issues.not represent the reality of real-time issues.

Real-time analysis is the analysis of data Real-time analysis is the analysis of data acquired during real-time operation of a system acquired during real-time operation of a system without having to stop or interfere with the without having to stop or interfere with the target.target.

The API’s and Plug-ins provided with The API’s and Plug-ins provided with DSP/BIOS enable the programmer to monitor DSP/BIOS enable the programmer to monitor data while the target is running.data while the target is running.

Page 57: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 57

IntroductionIntroduction

So how can data be monitored without So how can data be monitored without stopping the target?stopping the target?

Target-host communications is performed in the Target-host communications is performed in the background (IDL) thread (e.g. the CPU is background (IDL) thread (e.g. the CPU is performing NOPs or waiting for an interrupt).performing NOPs or waiting for an interrupt).

Data formatting is done by the host and therefore Data formatting is done by the host and therefore releases the CPU to perform useful tasks.releases the CPU to perform useful tasks.

For more details see Chapter 3 of the For more details see Chapter 3 of the DSP/BIOS Users Guide (DSP/BIOS Users Guide (SPRU303.pdfSPRU303.pdf).).

Page 58: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 58

DSP/BIOS - API ModulesDSP/BIOS - API Modules

Instrumentation/Real-Time AnalysisInstrumentation/Real-Time Analysis

LOGLOG Message Log mangerMessage Log mangerSTSSTS Statistics accumulator manager Statistics accumulator manager TRCTRC Trace manager Trace manager RTDXRTDX Real-Time Data Exchange manager Real-Time Data Exchange manager

Thread Types Thread Types

HWIHWI Hardware interrupt manager Hardware interrupt manager SWISWI Software interrupt manager Software interrupt manager TSKTSK Multitasking manager Multitasking manager IDLIDL Idle function & processing loop manager Idle function & processing loop manager

Clock and Periodic Functions Clock and Periodic Functions

CLKCLK System clock manager System clock manager PRDPRD Periodic function manger Periodic function manger

Comm/Synch between threadsComm/Synch between threads

SEMSEM Semaphores manager Semaphores manager MBXMBX Mailboxes manager Mailboxes manager LCKLCK Resource lock manager Resource lock manager

Input/OutputInput/Output

PIPPIP Data pipe manager Data pipe manager HSTHST Host input/output manager Host input/output manager SIOSIO Stream I/O manager Stream I/O manager DEVDEV Device driver interface Device driver interface

Memory and Low-level PrimitivesMemory and Low-level Primitives

MEMMEM Memory manager Memory manager SYSSYS System services manager System services manager QUEQUE Queue manager Queue manager ATMATM Atomic functions Atomic functions GBLGBL Global setting manager Global setting manager

Page 59: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 59

LOG ModuleLOG Module

The LOG module contains functions that can be used to The LOG module contains functions that can be used to capture events in Real-Time while the target program is capture events in Real-Time while the target program is running.running.

Functions in LOG module:Functions in LOG module:(1)(1) LOG_disable( ):LOG_disable( ): Disable the system logDisable the system log

(2)(2) LOG_enable( ):LOG_enable( ): Enable the system logEnable the system log

(3)(3) LOG_error( ):LOG_error( ): Write a user error Write a user error event to the system logevent to the system log

(4)(4) LOG_event( ):LOG_event( ): Append unformatted Append unformatted message to a message logmessage to a message log

(5)(5) LOG_message( ):LOG_message( ): Write a user message Write a user message to the system logto the system log

(6)(6) LOG_printf( ):LOG_printf( ): Append a formatted Append a formatted message to a message logmessage to a message log

(7)(7) LOG_reset( ):LOG_reset( ): Reset the system logReset the system log

Page 60: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 60

Moving from “printf” to the faster Moving from “printf” to the faster “LOG_printf”“LOG_printf”

How many cycles does the printf() function require?How many cycles does the printf() function require?

> 34000> 34000

Page 61: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 61

Moving from “printf” to the faster Moving from “printf” to the faster “LOG_printf”“LOG_printf”

(1)(1) Include the following headers in the C file:Include the following headers in the C file:

/* #include <stdio.h> NOT required *//* #include <stdio.h> NOT required */

#include <std.h>#include <std.h> /* this is required by all DSP/BIOS modules *//* this is required by all DSP/BIOS modules */

#include <log.h>#include <log.h> /* this is required by the LOG module *//* this is required by the LOG module */

(2)(2) Include the following external reference to the DSP/BIOS object in the C Include the following external reference to the DSP/BIOS object in the C code:code:

extern far LOG_Obj fastprint; /*fastprint is a user chosen name */extern far LOG_Obj fastprint; /*fastprint is a user chosen name */

Page 62: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 62

Moving from “printf” to the faster Moving from “printf” to the faster “LOG_printf”“LOG_printf”

(3) Create a LOG object using the configuration tool:(3) Create a LOG object using the configuration tool:

(a)(a) Open the cdb file, select instrumentation and Open the cdb file, select instrumentation and open the “LOG - Event Log Manager”.open the “LOG - Event Log Manager”.

(b)(b) Create a new object, call it “fastprint” and Create a new object, call it “fastprint” and change its properties as shown below:change its properties as shown below:

Page 63: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 63

Moving from “printf” to the faster Moving from “printf” to the faster “LOG_printf”“LOG_printf”

(4) Use the following code when using the LOG_printf function:(4) Use the following code when using the LOG_printf function:

/* #include <stdio.h> NOT required *//* #include <stdio.h> NOT required */

#include <std.h>#include <std.h> /* this is required by all DSP/BIOS modules *//* this is required by all DSP/BIOS modules */

#include <log.h>#include <log.h> /* this is required by the LOG module *//* this is required by the LOG module */

extern far LOG_Obj fastprint;extern far LOG_Obj fastprint;

void algorithm_1 (void)void algorithm_1 (void)

{{

LOG_printf (&fastprint, “Algorithm 1 is running\n”);LOG_printf (&fastprint, “Algorithm 1 is running\n”);

}}

Page 64: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 64

Moving from “printf” to the faster Moving from “printf” to the faster “LOG_printf”“LOG_printf”

(5) To visualise the output of the fastprint log you must open the Message Log window, see below:(5) To visualise the output of the fastprint log you must open the Message Log window, see below:

Note: The complete code can be found in: Note: The complete code can be found in: Bios_Lab2\Bios_Lab2\

Page 65: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 65

STS ModuleSTS Module

The STS module manages objects called statistics The STS module manages objects called statistics accumulators.accumulators.

Each STS object accumulates the following Each STS object accumulates the following information:information:

Count:Count: The number of valuesThe number of values Total:Total: The sum of count valuesThe sum of count values Maximum:Maximum: The longest value encounteredThe longest value encountered

Functions in the STS Module:Functions in the STS Module:

(1)(1) STS_add( ):STS_add( ): Update statistics using provided valueUpdate statistics using provided value

(2)(2) STS_delta( ):STS_delta( ): Update statistics using the difference Update statistics using the difference between the provided value and the set pointbetween the provided value and the set point

(3)(3) STS_reset( ):STS_reset( ): Reset the values stored in the STS objectReset the values stored in the STS object

(4)(4) STS_set( ):STS_set( ): Save a setpoint valueSave a setpoint value

Page 66: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 66

Using the STS ModuleUsing the STS Module

(1)(1) Include the following headers in the C file:Include the following headers in the C file:

/* #include <stdio.h> NOT required *//* #include <stdio.h> NOT required */

#include <std.h>#include <std.h> /* this is required by all DSP/BIOS modules *//* this is required by all DSP/BIOS modules */

/* #include <sts.h> : Created by the tools */

(2)(2) Create an object with the configuration tool:Create an object with the configuration tool:

(a)(a) Open the cdb file, select “Instrumentation” and open Open the cdb file, select “Instrumentation” and open the “STS - Statistics Object Manager”.the “STS - Statistics Object Manager”.

(b)(b) Create a new object and call it “mystsObj”.Create a new object and call it “mystsObj”.

Page 67: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 67

Using the STS ModuleUsing the STS Module

(3)(3) You can use the following code to benchmark the printf function:You can use the following code to benchmark the printf function:

#include <stdio.h> /* Needed for the printf function */#include <stdio.h> /* Needed for the printf function */

#include <std.h>#include <std.h> /* this is required by all DSP/BIOS modules *//* this is required by all DSP/BIOS modules */

#include <sts.h>#include <sts.h>

#include <clk.h>#include <clk.h>

extern far STS_Obj mystsObj;extern far STS_Obj mystsObj;

void algorithm_1 (void)void algorithm_1 (void)

{{

STS_set (&mystsObj, CLK_gethtime());STS_set (&mystsObj, CLK_gethtime());

printf (“Algorithm 1 is running\n”);printf (“Algorithm 1 is running\n”);

STS_delta (&mystsObj, CLK_gethtime());STS_delta (&mystsObj, CLK_gethtime());

}}

Page 68: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 68

Moving from “printf” to the faster Moving from “printf” to the faster “LOG_printf”“LOG_printf”

(4) To visualise the statistics, open the statistics window as shown below:(4) To visualise the statistics, open the statistics window as shown below:

(5)(5) Exercise: Compare the number of cycles the printf and LOG_printf take.Exercise: Compare the number of cycles the printf and LOG_printf take.

Note: The complete code can be found in: Note: The complete code can be found in: Bios_Lab2\Bios_Lab2\

Page 69: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 69

Low Instrumentation OverheadLow Instrumentation Overhead

LOG, STS and TRC module operations are very fast and execute in constant time, as shown in the following list:LOG, STS and TRC module operations are very fast and execute in constant time, as shown in the following list:

LOG_printf and LOG_event:LOG_printf and LOG_event: approx 32 cyclesapprox 32 cycles STS_add:STS_add: approx 18 cyclesapprox 18 cycles STS_delta:STS_delta: approx 21 cyclesapprox 21 cycles TRC_enable and TRC disable:TRC_enable and TRC disable: approx 6 cyclesapprox 6 cycles

Each STS object uses only four words of data memory. This means that the host transfers only four words to upload data from a statistics object.Each STS object uses only four words of data memory. This means that the host transfers only four words to upload data from a statistics object.

Page 70: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4Chapter 4

DSP/BIOSDSP/BIOS

Part 4 - Real-Time Data ExchangePart 4 - Real-Time Data Exchange

Page 71: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 71

Learning ObjectivesLearning Objectives

Introduction.Introduction. Example: Send data from the target Example: Send data from the target

(DSK6416) to the host (PC).(DSK6416) to the host (PC).

Page 72: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 72

RTDX: Real-Time Data ExchangeRTDX: Real-Time Data ExchangePCPCTMS320 DSPTMS320 DSP

IEEEIEEEJTAGJTAG

EM

U H

/WE

MU

H/W

R T

D X

R

T D

X

US

ER

CO

DE

US

ER

CO

DE

Third PartyThird PartyDisplayDisplay

CCSCCS

DisplayDisplay UserUser TITI 3rd Party3rd Party MS COMMS COM

RTDX enables non-obtrusive two-way communication between the RTDX enables non-obtrusive two-way communication between the host PC and the DSP (host PC and the DSP (during IDLduring IDL).).

Since it runs in IDL (by default), it runs lower priority than your Since it runs in IDL (by default), it runs lower priority than your real-time code.real-time code.

RTDX is used by DSP/BIOS RTA, but it is also available directly RTDX is used by DSP/BIOS RTA, but it is also available directly to DSP programmer (useful for testing or if end-equipment is PC to DSP programmer (useful for testing or if end-equipment is PC resident).resident).

Transfer speed limited by:Transfer speed limited by: JTAG connection type (parallel, PCI, etc.).JTAG connection type (parallel, PCI, etc.). DSP activity level.DSP activity level.

Page 73: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 73

RTDX: Flow of DataRTDX: Flow of Data

Code Composer Studio controls the flow of Code Composer Studio controls the flow of data between the host (PC) and the target.data between the host (PC) and the target.

Page 74: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 74

RTDX: Example (1)RTDX: Example (1)

In this application a program is written for In this application a program is written for sending data from the sending data from the DSK6416DSK6416 to the host. to the host.

Code location:Code location:\Bios_Lab3\Bios_Lab3

DSK6416DSK6416bios_lab3.pjtbios_lab3.pjt

HostHosts1l1.cs1l1.c

s1l1.exes1l1.exe

HostHostTargetTarget

DSK6416DSK6416

Page 75: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 75

RTDX: Example (2) - Testing the CodeRTDX: Example (2) - Testing the Code

(1)(1) Connect and power up the Connect and power up the DSK.DSK.

(2)(2) Envoke CCS and load the Envoke CCS and load the program (bios_lab3.out).program (bios_lab3.out).

(3)(3) Enable the RTDX as shown Enable the RTDX as shown opposite.opposite.

(4)(4) Run the code.Run the code.

(5)(5) Run the host code “s1l1.exe” and observe the output.Run the host code “s1l1.exe” and observe the output.

The DSP C code is shown in: The DSP C code is shown in: Main3_RTDX.pdfMain3_RTDX.pdf

Page 76: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 76

FeaturesFeatures BenefitsBenefitsEasy to useEasy to use Saves development timeSaves development timeSmall Footprint (<2Kw)Small Footprint (<2Kw) Easily fits in limited memory systemsEasily fits in limited memory systemsFast Execution Fast Execution Ideal for real time systemsIdeal for real time systemsReal-Time Analysis Real-Time Analysis View system parametersView system parameters while system is executing withoutwhile system is executing without

breakpoints and without additionalbreakpoints and without additionaloverhead - “Test what you fly and flyoverhead - “Test what you fly and flywhat you test”what you test”

Set of Library FunctionsSet of Library Functions Use only what you need to minimize Use only what you need to minimize footprintfootprint

ExtensibleExtensible Full featured kernel allows additional Full featured kernel allows additional OS functions in futureOS functions in future

DSP/BIOS Feature SummaryDSP/BIOS Feature Summary

Page 77: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 77

DSP/BIOS SummaryDSP/BIOS Summary

At present DSP/BIOS does not support At present DSP/BIOS does not support multiprocessors.multiprocessors.

The “VSPWorks” operating system from The “VSPWorks” operating system from WindRiver Systems does support WindRiver Systems does support multiprocessing.multiprocessing.

www.windriver.comwww.windriver.com

Page 78: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4, Slide 78

DSP/BIOSDSP/BIOS

Code location:Code location: Bios_lab_1-3.pjtBios_lab_1-3.pjt

Further Reading:Further Reading:(1)(1) Use the help provided with the CCS (Help also Use the help provided with the CCS (Help also

includes tutorials: includes tutorials: dsk6416dsk6416).).

(2)(2) TMS320C6000 DSP/BIOS: User Guide.TMS320C6000 DSP/BIOS: User Guide.

(3)(3) TMS320C6000 DSP/BIOS: Application Programming TMS320C6000 DSP/BIOS: Application Programming Interface (API) Interface (API) SPRU403SPRU403..

(4)(4) Application Report: DSP/BIOS II Timing Application Report: DSP/BIOS II Timing Benchmarks on the TMS320C6000 DSP Benchmarks on the TMS320C6000 DSP SPRA662.SPRA662.

(5)(5) Application Report DSP/BIOS II Sizing Guidelines Application Report DSP/BIOS II Sizing Guidelines for the TMS320C62x DSP for the TMS320C62x DSP SPRA667.SPRA667.

Page 79: Lecture 04 DSP/BIOS. Chapter 4 DSP/BIOS Part 1 - Introduction

Chapter 4Chapter 4

DSP/BIOSDSP/BIOS

- End -- End -