background image

1

Procesory DSP – 2012

Procesory DSP – 2012

Materiały ilustracyjne do wykładu

Materiały ilustracyjne do wykładu

 

 

 

       

cz - VI

Planowanie działań 

[Scheduling]

DSP-BIOS

Przygotowane z wykorzystaniem 
materiałów 
udostępnionych przez firmę Texas 
Instruments 
Dr inż. Krzysztof Kardach 
(ver. 8.0 październik 2012) 

background image

2

Wykaz wykorzystanych materiałów 

Wykaz wykorzystanych materiałów 

Li Tan „Digital Signal Processing – Fundamentals and 
Applications” ;
  DeVry University Decatur, Georgia, Elsevier 2008

S.M Kuo, B.H.Lee „Real-Time Digital Signal Processing” – 
implementations, applications, and experiments with the 
TMS320C55x”; John Wiley & Sons, 2006

CCS v5 WIKI - 

http://processors.wiki.ti.com/index.php/Category:Code_Composer
_Studio_v5

 

Bruno Pillard „An Introduction To Digital Signal 
Processors”;
 Uniwersytet Sherbrooke 

TMS320C5515 DSP System Users Guide [sprufx5d.pdf ]

TMS320C55x Technical Overview  [spru393g.pdf]

TMS320C55x  CPU Reference Guide  [spru371f.pdf]

TMS320C55x DSP v3.x CPU Reference Guide [swpu073e.pdf]

 

TMS320C5515 Fixed-Point Digital Signal Processor  
[sprs645e.pdf]

TMS320C55x CPU Mnemonic Instruction Set RG  
[swpu067e.pdf]

TMS320C55x Assemby Language UG  [spru280i.pdf]

January 3, 2013

Procesory sygnałowe 1 / VI

background image

3

Co chcemy dzisiaj zrozumieć

Co chcemy dzisiaj zrozumieć

 

CPU

DMA

RCVCHAN

gBufferRcv

  

 A

D

C

DAC

McBSP2

Rcv

Xmt

XMTCHAN

gBufferXmt

COPY

+

P

o

n

g

P

o

n

g

P

i

n

g

P

i

n

g

Zamiana  HWI na SWI, dodanie funkcji LED do migania

Równoległe uruchomienie wątków COPY i LED 

Flash LEDs 

January 3, 2013

Procesory sygnałowe 1 / VI

background image

4

Co chcemy rozpoznać …

Co chcemy rozpoznać …

Nowe wymagania systemu i możliwe rozwiązania

January 3, 2013

Procesory sygnałowe 1 / VI

 Rozwiązanie w DSP/BIOS 

 Ustawianie zależności czasowych

 Funkcje okresowe

 Czas rzeczywisty i I/O – analiza

 Uwagi o przykładowym programie

background image

5

TI DSP

Oczekiwania

Oczekiwania

  - 

  - 

 

 

Abstra

Abstra

k

k

c

c

yjne 

yjne 

życzenia

życzenia

Dotychczasowe wymagania

Przenoszenie przez DSP i dodanie sinusa

Nowe wymaganie

Dodaj inną funkcję o własnym 
rytmie np. migania diodami LED

Migaj LED niezależnie od 
addSine/copy

Problemy:

Czy mamy wystarczające moc 
(MIPS)?

Czy procedury nie będą sobie 
nawzajem przeszkadzać?

Możliwe rozwiązania ?

addSine/copy

LEDs

January 3, 2013

Procesory sygnałowe 1 / VI

background image

6

Możliwe rozwiązanie

Możliwe rozwiązanie

 – 

 – 

pętla 

pętla 

while 

while 

LEDs

addSine/copy

main
{

while(1)
 {

  }
}

Algorytmy działają w różnych 
rytmach:

 addSine/copy – 188Hz 
(48KHz/256)

 LEDs 

     – 2Hz

Co będzie, jeśli jeden z 
algorytmów pozbawi inny szans 
na zadziałanie lub opóźni jego 
zadziałanie?

  Wprowadź każdą z procedur do 
    niekończącej się pętli  w main

January 3, 2013

Procesory sygnałowe 1 / VI

background image

7

Inne rozwiązanie

Inne rozwiązanie

 – 

 – 

użycie przerwań

użycie przerwań

TI DSP

main
{

while(1);

}

Timer1_ISR
{

}

Timer2_ISR
{

}

Gubione przerwanie…

Procedura

  

Okres  Obliczenia  Użycie CPU 

addSine/copy:

   5.3ms

75 s     1.4%

LEDs:

     500 ms

1.1 s

    ~ 0%

    1.4%

LEDs

addSine/copy

  System sterowany przerwaniami  łączy
  każdą funkcję z własną procedurą ISR.

działa

Czas

1

2

3

5

4

6

7

0

LED

addSine

January 3, 2013

Procesory sygnałowe 1 / VI

Uśpiona (idle)

background image

8

Zgoda na zagłębiane przerwania

Zgoda na zagłębiane przerwania

 - HWI

 - HWI

Użycie obsługi HWI DSPBIOSa do   
kontekstowego zachowania i odtworzenia, 
umożliwienia zawieszania przerwań

Rozsądne podejście gdy ograniczona jest 
liczba przerwań 

Ograniczenie: liczba HWI i ich priorytetów 
są ustalone statycznie – jedna funkcja HWI 
do każdego przerwania

działa

Czas

1

2

3

5

4

6

7

0

Zagłębianie przerwań

 pozwala sprzętowym

przerwaniom na wzajemne zawieszanie.

 

main
{

while(1);

}

Timer1_ISR
{

}

Timer2_ISR
{

}

LEDs

addSine/copy

January 3, 2013

Procesory sygnałowe 1 / VI

Uśpiona (idle)

background image

9

Co chcemy rozpoznać …

Co chcemy rozpoznać …

 Nowe wymagania systemu i możliwe rozwiązania

 Rozwiązanie w DSP/BIOS

January 3, 2013

Procesory sygnałowe 1 / VI

  Ustawianie zależności czasowych

 Funkcje okresowe

 Czas rzeczywisty i I/O – analiza

 Uwagi o przykładowym programie

background image

10

Użycie przerwań programowych 

Użycie przerwań programowych 

SWI

SWI

main
{ …
// return to O/S;
}
DSP/BIOS

Każdy z algorytmów niezależnym 
przerwaniem programowym

Obsługę czasową SWI poprzez  DSPBIOS

Funkcje HWI wyzwala sprzęt

Funkcje SWI są wyzwalane programowo 
np.  call to SWI_post()

Dlaczego używać  SWI?

Nie ma ograniczeń liczby funkcji  SWI, a 
ich priorytety definiuje użytkownik

Funkcje SWI można wyzwalać 
zdarzeniami sprzętowymi lub 
programowymi

Można przekazywać przetwarzanie z 
HWI do SWI,  tzn. staruje HWI i 
uruchamia SWI

LEDs

addSine/copy

Jak pracują razem funkcje  HWI i  SWI ?

January 3, 2013

Procesory sygnałowe 1 / VI

background image

11

HWI 

HWI 

wyzwalające 

wyzwalające 

SWI

SWI

DMA INT

HWI:

kod startowy

  

SWI_post();

SWI

Blokada INT

Preferowane w tym czasie

ping czy 

pong?

addSine i copyData

HWI

 

Minimalne opóźnienie INT

Minimum przełączania 

kontekstowego  

Tylko wysoki priorytet

Może przywołać SWI 

Może pominąć przerwanie gdy 

wykonuje  ISR

SWI

Dłuższa odpowiedź

Wykonuje przełączenie 

kontekstowe

Wybierany priorytet

Może przywołać inny SWI

Wykonanie kierowane wg 

kolejności

January 3, 2013

Procesory sygnałowe 1 / VI

background image

12

Własności 

Własności 

SWI 

SWI 

January 3, 2013

Procesory sygnałowe 1 / VI

background image

13

Obsługa priorytetu 

Obsługa priorytetu 

 SWI 

 SWI 

Podnieść przenieś i upuść 
SWI dla zmiany priorytetu

SWI o identycznym 
priorytecie działają w 
kolejności przywołania

Podnieść przenieś i upuść 
SWI dla zmiany priorytetu

SWI o identycznym 
priorytecie działają w 
kolejności przywołania

Jak przekazać informacje do  SWI ?

January 3, 2013

Procesory sygnałowe 1 / VI

background image

14

Przekaz wartości do 

Przekaz wartości do 

 SWI 

 SWI 

poprzez 

poprzez 

skrzynkę

skrzynkę

HWI:

SWI_or (&SWIname, wartość);

SWI:
 

wartość

Po co przekaz wartości? By SWI wiedział „kto przywołał”?

SWI_or() sprawdza wartość ze skrzynki i uruchamia SWI 

SWI_getmbox() wewnątrz SWI czyta stan skrzynki

Każda SWI ma własną skrzynkę

SWI może opcjonalnie użyć: SWI_inc(), SWI_dec(), 

SWI_andn()

Skrzynka 

[mailbox]

temp = SWI_getmbox();

Jak poprawnie używać  HWI w  BIOS ?

January 3, 2013

Procesory sygnałowe 1 / VI

background image

15

Przełącznik 

Przełącznik 

HWI 

HWI 

HWI_dispatchPlug(eventIdRcv, (Fxn)dmaHwi, NULL) 

interrupt void dmaHwi(void)

{

}

Dla ISR używamy słowa kluczowego  interrupt :

Nakazuje kompilatorowi wykonanie context save/restore

Dla aplikacji  BIOS, sterowanie HWI oraz  context save/restore jest 

wywoływane przez prog. zarządzający [ Dispatcher], zatem musimy :

Usunąć słowo kluczowe  interrupt  z  dmaHwi()

Użyć  HWI_dispatchPlug() by uruchomić rozdzielacz dla dmaHwi() i

umieścić odpowiedni adres w tabeli wektorów HWI:

eventIdRcv:  wybrane HWI przez  CSL (0-31)

dmaHWI:  nazwa funkcji ISR 

NULL:  Inne dostępne opcje  (których nie używamy)

January 3, 2013

Procesory sygnałowe 1 / VI

background image

16

Co chcemy rozpoznać …

Co chcemy rozpoznać …

 Nowe wymagania systemu i możliwe rozwiązania

 Rozwiązanie w DSP/BIOS

 Ustawianie zależności czasowych

January 3, 2013

Procesory sygnałowe 1 / VI

 Funkcje okresowe

 Czas rzeczywisty i I/O – analiza

 Uwagi o przykładowym programie

background image

17

Przełączanie wątków w oparciu o 

Przełączanie wątków w oparciu o 

priorytety

priorytety

HWI 2

HWI 1

SWI 3

SWI 2

SWI 1

MAIN

IDLE

int1

rtn

post2 rtn

int2

post3

rtn

post1

rtn

rtn

rtn

Użytkownik ustala priorytety ... a BIOS realizuje przełączanie

Jak kreujemy  SWI i ustalamy priorytety?

(Priorytet najwyższy)

(Priorytet najniższy)

SWI_post(&swi2);

January 3, 2013

Procesory sygnałowe 1 / VI

background image

18

Inne rozwiązanie 

Inne rozwiązanie 

 – 

 – 

zadania 

zadania 

[

[

Tasks

Tasks

]

]

 

 

(TSK)

(TSK)

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

DSP/BIOS

Zadania DSPBIOS [tasks] (TSK) są podobne 
do SWI, ale udostępniają dodatkowe cechy

TSK jest bardziej podobny do zadań w 
tradycyjnych systemach operacyjnych

Cechy TSK

Przełączanie kontekstowe SWI jest 
szybsze niż  TSK

Moduły TSK mają  większy kod

TSK mają własny stos

Preferencje użytkownika i potrzeby 
systemu decydują zwykle o użyciu SWI, 
TSK  lub obu

LEDs

addSine/copy

Jakie są główne różnice miedzy SWI  i  TSK ?

January 3, 2013

Procesory sygnałowe 1 / VI

background image

19

SWI 

SWI 

 i

 i

 

 

 

 

TSK

TSK

SWI są podobne do 

przerwań sprzętowych ale 

uruchamiane są przez 

program w tym HWI  

SWI_post()

Wszystkie SWI dzielą  stos 

systemowy

SWI

SWI_post

start

stop

“biegną aż do

ukończenia”

SEM_post() zwalnia TSK z 

czekania zależnego od faktu 

Zdarzenie odblokowuje TSK 

do jednego przebiegu i 

ponownego oczekiwania

Każdy  TSK ma własny stos 

co ułatwia wstrzymywanie

TSK

start

stop

czekanie

SEM_post

(stan 

wstrzymania)

SEM_pend

January 3, 2013

Procesory sygnałowe 1 / VI

background image

20

Typy wątków 

Typy wątków 

DSP/BIOS 

DSP/BIOS 

P

rio

ry

te

ty

Do realizacji zdarzeń „

w następstwie 

pracy

” HWI

SWI są 

zgłaszane

 przez program

Możliwe jest wiele  SWI na każdym z  
15 poziomów priorytetów przerwań

Do wykonania różnych programów 

jednocześnie pod różnymi warunkami

TSK zależne są od zgłoszeń  '

semaforów

‘ 

(sygnały)

Wiele „

nieznaczących

” funkcji tła IDL  

Pracują jako pętle bez końca, jak 
tradycyjne while

Wszystkie przesłania BIOS do hosta 
odbywają się tymi funkcjami tła

  Do realizacji pilnych części zdarzeń czasu rzecz.

  Wyzwalane przez przerwania sprzętowe

  Ważność [priorytet] HWI ustalana jest sprzętowo

SWI

Software Interrupts

[przerw. programowe

]

HWI

Hardware Interrupts

[przerwania sprzętowe

]

TSK

Tasks

[zadania]

IDL

Background

[zadania tła

]

January 3, 2013

Procesory sygnałowe 1 / VI

background image

21

Uaktywnienie

Uaktywnienie

 BIOS – 

 BIOS – 

przejście z

przejście z

 main()

 main()

main

// return to BIOS
}

DSP BIOS

LEDs

addSine/copy

W zadaniach bez DSP/BIOSP 
w main występuje pętla  
while(1)

Z DSP/BIOS przechodzimy z 
main() do niego przez Return

main() wraca do BIOS IDLE i  
pozwala  BIOS przełączać 
zdarzenia, transmisję 
informacji do host, etc

Pętla  while() w funkcji  main() 
nie pozwoli uaktywnić się  
BIOS 

BIOS otwiera wiele możliwości …

January 3, 2013

Procesory sygnałowe 1 / VI

background image

22

DSP BIOS 

DSP BIOS 

składa się z:

składa się z:

Narzędzia analizy w czasie 
rzecz. 

Pozwala aplikacji 
nieprzerwanie działać w 
trakcie ekspozycji danych z 
debugowania

Przełącznik czasu 
rzeczywistego 

Jądro przełączania wątków

We/Wy czasu rzeczywistego

Pozwala na dwukierunkową 
komunikację między wątkami 
lub procesorem a PC hostem.

January 3, 2013

Procesory sygnałowe 1 / VI

background image

23

Co chcemy rozpoznać …

Co chcemy rozpoznać …

 Nowe wymagania systemu i możliwe rozwiązania

 Rozwiązanie w DSP/BIOS

 Ustawianie zależności czasowych

Przygotowanie funkcji okresowych

January 3, 2013

Procesory sygnałowe 1 / VI

 Czas rzeczywisty i I/O – analiza

 Uwagi o przykładowym programie

background image

24

Okres migania

LED

LED

LED

Funkcje okresowe

Funkcje okresowe

Funkcje okresowe mogą działać w systemie ze specyficzną 
częstością :
- np. LED wymaga okresu  2Hz

Do dyspozycji manager zegara DSP/BIOS CLK by ustalić odstęp 
w mikrosekundach na  “tick”

Manager  PRD pozwoli określić okres funkcji w „tick-ach”

Pozwoli na ustalenie różnych okresów do różnych funkcji

Mogą być użyte do obsługi różnych funkcji systemu (np. 
mignięcie LED)

DSP/BIOS
CLK

tick

January 3, 2013

Procesory sygnałowe 1 / VI

background image

25

Tworzenie funkcji okresowych

Tworzenie funkcji okresowych

period

func1

func1

func1

DSP/BIOS

CLK

tick

January 3, 2013

Procesory sygnałowe 1 / VI

Okres migania

func1

func1

func1

DSP/BIOS
CLK

tick

background image

26

Co chcemy rozpoznać …

Co chcemy rozpoznać …

 Nowe wymagania systemu i możliwe rozwiązania

 Rozwiązanie w DSP/BIOS

 Ustawianie zależności czasowych

Przygotowanie funkcji okresowych

Czas rzeczywisty i I/O - analiza

January 3, 2013

Procesory sygnałowe 1 / VI

 Uwagi o przykładowym programie

background image

27

Wbudowane narzędzie analizy w czasie 

Wbudowane narzędzie analizy w czasie 

rzecz. 

rzecz. 

 Gromadzi dane na systemie docelowym [target] (3-10 cykli 
CPU )

 Przesyła dane podczas BIOS IDL ( ok. 100c )

 Formatowanie danych na komp. PC-host ( ok. 1000c )

 Gromadzenie danych NIE zatrzymuje  CPU docelowego

Execution Graph

Analizuje czas pracy 

poza   BIOS IDL

CPU Load Graph

Programowy analizator 

logiczny

Śledzi zdarzenia i ich 

priorytet

January 3, 2013

Procesory sygnałowe 1 / VI

background image

28

Wbudowane narzędzie analizy w czasie 

Wbudowane narzędzie analizy w czasie 

rzecz.

rzecz.

Śledzi czas procedur bez

zatrzymywania  CPU

Profiling

Przesyła wiadomości z
śledzenia do host

Nie zatrzymuje  DSP

Wnikliwe fizyczne 
liczenie cykli DSP

Bardziej wydajny niż 
tradycyjny  printf()

LOG wiadomości

LOG_printf (&logTrace, “addSine ENabled”);

Jak przekazywać dane pomiędzy DSP a PC-host ?

January 3, 2013

Procesory sygnałowe 1 / VI

background image

29

Co chcemy rozpoznać …

Co chcemy rozpoznać …

 Nowe wymagania systemu i możliwe rozwiązania

 Rozwiązanie w DSP/BIOS

 Ustawianie zależności czasowych

Przygotowanie funkcji okresowych

Czas rzeczywisty i I/O – analiza

 Uwagi o przykładowym programie

January 3, 2013

Procesory sygnałowe 1 / VI

background image

30

Czy bliżej zrozumienia … ? 

Czy bliżej zrozumienia … ? 

 

CPU

DMA

RCVCHAN

gBufferRcv

  

 A

D

C

DAC

McBSP2

Rcv

Xmt

XMTCHAN

gBufferXmt

COPY

+

P

o

n

g

P

o

n

g

P

i

n

g

P

i

n

g

Flash LEDs 

January 3, 2013

Procesory sygnałowe 1 / VI

background image

31

DMA

To komentowaliśmy poprzednio 

To komentowaliśmy poprzednio 

CPU

buffer0

Kanał

Przekaz ramki zakończony

buffer1

Teraz jest fragmentem naszego zadania większego

Przenosi dane z urządzenia wejściowego do bufora 

danych 

I z bufora danych do urządzenia wyjściowego

Dodatkowo przełącza bufory

January 3, 2013

Procesory sygnałowe 1 / V

background image

32

Co to i do czego służą, jak działają?

Co to i do czego służą, jak działają?

• Execution Graph
• CPU Load Graph
• Profiling Statistics
• Massage LOG

• Bufory Ping-Pong
• Realizacja zadań w pętli
• Wykorzystanie procesora – 

sposób liczenia

• HWI
• SWI
• ISR
• DSP/BIOS
• TSK
• Mailbox
• Wykres stanów

January 3, 2013

Procesory sygnałowe 1 / V


Document Outline