DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All...

29
DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserve Technical Training Organization T TO

Transcript of DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All...

Page 1: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

DSP/BIOS Scheduling

Chapter 9

C6000 Integration Workshop

Copyright © 2005 Texas Instruments. All rights reserved. Technical Training

Organization

T TO

Page 2: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Goals for Lab 9

CPUEDMA

RCVCHAN gBufRcvADC

DAC

McBSP

Rcv

Xmt

XMTCHAN gBufXmt

COPY

L

R

L

R

+

Technical TrainingOrganization

T TO Add a function to flash the LEDs and add a load Make “load” and “copy” operate simultaneously

Page 3: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Outline

New System Requirements and Possible Solutions

DSP/BIOS Solution Scheduling Periodic Functions Real-time Analysis Tools and I/O Lab 9

Technical TrainingOrganization

T TO

Page 4: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

TI DSP

Lab 9 Requirement - Abstract

Previous Requirement DSP pass-through and addSine

New Requirement Add function to flash LEDs and add load LED/Load independent of addSine/copy Issues:

Do we have enough bandwidth (MIPS)? Will one routine conflict with the other?

addSine/copy

LED/load

What are some possible solutions ?Technical Training

Organization

T TO

Page 5: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

main{ while(1) {

}}

Possible Solution – while Loop

LED/load

addSine/copy Algos run at different rates:

addSine/copy: 94Hz LED/load: 4Hz

What if one algorithm starves the other for recognition or delays its response?

Put each routine into an endless loop under main

How are these problems typically solved?Technical Training

Organization

T TO

Page 6: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Possible Solution - Use Interrupts (HWI)

running

idle

Time 1 2 3 54 6 70

Period Compute CPU Usage

addSine/copy: 11ms 7 s 6%

main{ while(1);}

Timer1_ISR{

}

Timer2_ISR{

}LED/load

addSine/copy

An interrupt driven system places each function in its own ISR

Interrupt is missed…

LED/load: 250 ms 100 ms 40%

46%

How could we prevent this?Technical TrainingOrganization

T TO

Page 7: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Allow Preemptive Interrupts - HWI

Use DSP/BIOS HWI dispatcher for context save/restore, and allow preemption

Reasonable approach if you have limited number of interrupts/functions

Limitation: Number of HWIs and their priorities are statically determined, only one HWI function for each interrupt

running

idle

Time 1 2 3 54 6 70

Nested interrupts allow hardwareinterrupts to preempt each other.main

{ while(1);}

Timer1_ISR{

}

Timer2_ISR{

}LED/load

addSine/copy

What option is there besides Hardware interrupts?Technical TrainingOrganization

T TO

Page 8: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

main{ … // return to O/S;}

DSP/BIOS

Use Software Interrupts - SWI Make each algorithm an independent software

interrupt

SWI scheduling is handled by DSP/BIOS HWI function triggered by hardware SWI function triggered by software

for example, a call to SWI_post()

Why use a SWI? No limitation on number of SWIs, and

priorities for SWIs are user-defined! SWI can be scheduled by hardware or

software event(s) Defer processing from HWI to SWI

LED/load

addSine/copy

How do HWI and SWI work together?Technical Training

Organization

T TO

Page 9: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

HWIs signaling SWIsEDMA INT

HWI:urgent code

SWI_post();

SWI

ints disabled rather than all this time

ping or pong? addSine and copyData

HWI Fast response to interrupts Minimal context switching High priority only Can post SWI Could miss an interrupt

while executing ISR

SWI Latency in response time Context switch performed Selectable priority levels Can post another SWI Execution managed by

scheduler

Technical TrainingOrganization

T TO

Page 10: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Another Solution – Tasks (TSK)

main{ …// return to O/S;}

DSP/BIOS

DSPBIOS tasks (TSK) are similar to SWI, but offer additional flexibility

TSK is more like traditional O/S task Tradeoffs:

SWI context switch is faster than TSK TSK module requires more code space TSKs have their own stack

User preference and system needs usually dictates choice, easy to use both!LED/load

addSine/copy

What are the major differences between SWI and TSK?Technical Training

Organization

T TO

Page 11: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

SWIs and TSKs

Similar to hardware interrupt, but triggered by SWI_post()

All SWI's share system software stack

SWI SWI_post

start

end

“run to

completion”

SEM_post() triggers execution

Each TSK has its own stack, which allows them to pause (i.e. block)

TSK

start

end

Pause

SEM_post

(blocked state)

SEM_pend

Technical TrainingOrganization

T TO

Page 12: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

DSP/BIOS Thread TypesP

rio

rity

HWIHardware Interrupts

Used to implement 'urgent' part of real-time event Triggered by hardware interrupt HWI priorities set by hardware

SWISoftware Interrupts

Use SWI to perform HWI 'follow-up' activity SWI's are 'posted' by software Multiple SWIs at each of 15 priority levels

TSKTasks

Use TSK to run different programs concurrently under separate contexts

TSK's are usually enabled to run by posting a 'semaphore‘ (a task signaling mechanism)

IDLBackground

Multiple IDL functions Runs as an infinite loop, like traditional while loop

Page 13: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Enabling BIOS – Return from main()

main{ …// return to BIOS}

DSP BIOS

LED/load

addSine/copy

The while() loop we used earlier is deleted

main() returns to BIOS IDLE allowing BIOS to schedule events , transfer info to host, etc

A while() loop in main() will not allow BIOS to activate

BIOS provides several capabilities…Technical Training

Organization

T TO

Page 14: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

DSP BIOS Consists Of:

Real-time analysis toolsAllows application to rununinterrupted while displayingdebug data

Real-time schedulerPreemptive thread managementkernel

Real-time I/OAllows two-way communicationbetween threads or betweentarget and PC host.

Page 15: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Outline

New System Requirements and Possible Solutions

DSP/BIOS Solution Scheduling Periodic Functions Real-time Analysis Tools and I/O Lab 9

Technical TrainingOrganization

T TO

Page 16: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Priority Based Thread Scheduling

HWI 2

HWI 1

SWI 3

SWI 2

SWI 1

MAIN

IDLE

int1

rtn

post2 rtn

int2

post3 rtn

post1 rtn

rtn

rtn

User sets the priority...BIOS does the scheduling

(highest)

(lowest)

SWI_post(&swi2);

How do you create a SWI and set priorities?Technical Training

Organization

T TO

Page 17: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

SWI Properties

_myFunction

Technical TrainingOrganization

T TO

Page 18: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Managing SWI Priority Drag and Drop SWIs to change

priority Equal priority SWIs run in the order

that they are posted

Drag and Drop SWIs to change priority

Equal priority SWIs run in the order that they are posted

How do you pass information to SWIs?Technical Training

Organization

T TO

Page 19: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Pass Value to SWI Using Mailbox

Each SWI has its own mailbox

HWI:…

SWI_or (&SWIname, value);

value

_myFunction

SWI:

temp = SWI_getmbox();

Why pass a value? Allows SWI to find out “who posted me” SWI_or() ORs value into SWI’s mailbox and posts SWI to run

Other posts that use SWI mailbox: SWI_inc(), SWI_dec(), SWI_andn()

SWI_getmbox() inside SWI reads status of mailbox

Technical TrainingOrganization

T TO

Page 20: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Task Code TopologyVoid taskFunction(…){

// Prolog…

while (‘condition’){

blocking_fxn()

// Process

}

// Epilog

}

Void taskFunction(…){

// Prolog…

while (‘condition’){

blocking_fxn()

// Process

}

// Epilog

}

Initialization (runs once only)

Processing loop - option: termination condition

Suspend until unblocked

Perform desired DSP work...

Shutdown (runs once - at most)

TSK can encompass three phases of activity (prolog, processing, epilog) TSKs can be blocked by using: SEM_pend, MBX_pend, SIO_reclaim, and

several others (suspend execution until unblocked) TSKs can be unblocked by using: SEM_post, MBX_post, SIO_issue, etc.T TO

Technical Training Organization

Page 21: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Outline

New System Requirements and Possible Solutions

DSP/BIOS Solution Scheduling Periodic Functions Real-time Analysis Tools and I/O Lab 9

Technical TrainingOrganization

T TO

Page 22: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

period

LED/load LED/load LED/load

Periodic Functions

Periodic functions run at a specific rate in your system: e.g. LED/load requires 4Hz

Use the CLK Manager to specify the DSP/BIOS CLK rate in microseconds per “tick”

Use the PRD Manager to specify the period (for the function) in ticks

Allows multiple periodic functions with different rates

Can be used to model a system (various functions w/loading)

DSP/BIOSCLK

tick

Let’s use the Config Tool to create a periodic function…Technical TrainingOrganization

T TO

Page 23: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Creating a Periodic Function

period

_func1 _func1 _func1

DSP/BIOSCLK

tick

Technical TrainingOrganization

T TO

Page 24: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Outline

New System Requirements and Possible Solutions

DSP/BIOS Solution Scheduling Periodic Functions Real-time Analysis Tools and I/O Lab 9

Technical TrainingOrganization

T TO

Page 25: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Built-in Real-Time Analysis Tools Gather data on target

(3-10 CPU cycles) Send data during BIOS IDLE

(100s of non-critical cycles) Format data on host

(1000s of host PC cycles) Data gathering does NOT stop target CPU

Analyze time NOT spent in IDLE

CPU Load Graph

Execution Graph Software logic

analyzer Debug event timing

and priority

Technical TrainingOrganization

T TO

Page 26: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Built-in Real-Time Analysis Tools

Statistics View Profile routines w/o

halting the CPU Capture & analyze data

without stopping CPU

LOG_printf (&logTrace, “addSine ENabled”);

Send debug msgs to host Doesn’t halt the DSP Deterministic, low DSP

cycle count More efficient than

traditional printf()

Message LOG

Technical TrainingOrganization

T TO

Page 27: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Outline

New System Requirements and Possible Solutions

DSP/BIOS Solution Scheduling Periodic Functions Real-time Analysis Tools and I/O Lab 9

Technical TrainingOrganization

T TO

Page 28: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

Lab 9

CPUEDMA

RCVCHAN gBufRcvADC

DAC

McBSP

Rcv

Xmt

XMTCHAN gBufXmt

COPY

L

R

L

R

+

Technical TrainingOrganization

T TO Add a function to flash the LEDs and add a load Make “load” and “copy” operate simultaneously

Page 29: DSP/BIOS Scheduling Chapter 9 C6000 Integration Workshop Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO.

ti

Technical TrainingOrganization

Technical TrainingOrganization

T TO