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)
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
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
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
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
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
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)
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)
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
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
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
12
Własności
Własności
SWI
SWI
January 3, 2013
Procesory sygnałowe 1 / VI
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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