2013 w05 DMA HWI 2013zid 28362


Procesory DSP  2012
Materiały ilustracyjne do wykładu
cz - V
Podstawowe mechanizmy
organizacji transmisji
Przygotowane z wykorzystaniem materiałów
DMA i HWI
udostępnionych przez firmę Texas Instruments
Dr inż. Krzysztof Kardach
(ver. 8.0 pazdziernik 2012)
1
Wykaz wykorzystanych materiałów
Li Tan  Digital Signal Processing  Fundamentals and Applications ;
 Digital Signal Processing  ;
 Digital Signal Processing  ;
 Digital Signal Processing  ;
DeVry University Decatur, Georgia, Elsevier 2008
S.M Kuo, B.H.Lee  Real-Time Digital Signal Processing 
 Real-Time Digital Signal Processing 
 Real-Time Digital Signal Processing 
 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
 An Introduction To Digital Signal Processors ;
 An Introduction To Digital Signal Processors ;
 An Introduction To Digital Signal Processors ;
Sherbrooke
TMS320C5515 DSP System Users Guide [sprufx5d.pdf ]
TMS320C5515 DSP System Users Guide
TMS320C5515 DSP System Users Guide
TMS320C5515 DSP System Users Guide
TMS320C55x Technical Overview [spru393g.pdf]
TMS320C55x Technical Overview
TMS320C55x Technical Overview
TMS320C55x Technical Overview
TMS320C55x CPU Reference Guide [spru371f.pdf]
TMS320C55x CPU Reference Guide
TMS320C55x CPU Reference Guide
TMS320C55x CPU Reference Guide
TMS320C55x DSP v3.x CPU Reference Guide [swpu073e.pdf]
TMS320C55x
TMS320C55x
TMS320C55x
TMS320C5515 Fixed-Point Digital Signal Processor [sprs645e.pdf]
TMS320C55x CPU Mnemonic Instruction Set RG [swpu067e.pdf]
TMS320C55x CPU Mnemonic Instruction Set RG
TMS320C55x CPU Mnemonic Instruction Set RG
TMS320C55x CPU Mnemonic Instruction Set RG
TMS320C55x Assemby Language UG [spru280i.pdf]
TMS320C55x Assemby Language UG
TMS320C55x Assemby Language UG
TMS320C55x Assemby Language UG
3 November 2012 Procesory sygnałowe 1 / V
2
1
Co jest naszym celem
CPU DMA
buffer0 buffer1
Kanał
Przekaz ramki zakończony
Uruchomienie przekazu przez kanał strumienia danych 
przeniesienie zawartości 0-wego bufora do 1-go bufora
Oba bufory są już w pamięci danych
Szkoda używać do tego CPU  przekaz ma być ciągły
Dostawą danych do bufora 0 zajmie się ktoś inny
Musimy zapewnić sygnalizację zakończenia przekazu
bufora  rozumiemy go jako  ramkę
3 November 2012 Procesory sygnałowe 1 / V
3
Co dalej?
By do przekazu nie angażować CPU najlepiej użyć DMA
Zatem jak
Użyć DMA do transferu danych z jednego miejsca
pamięci do drugiego
Zasygnalizować koniec przekazu bufora  może być
sygnałem startu do użycia gotowej zawartości bufora 1
Sygnalizować może kontroler DMA sygnałem
sprzętowego przerwania wewnętrznego kanału DMA
Zatem trzeba
Zaprogramować knał do przekazu i sygnalizacji
Zaprogramować CPU by zareagował na przerwanie
sprzętowe
3 November 2012 Procesory sygnałowe 1 / V
4
2
Co chcemy rozpoznać
Co to jest DMA i HWI  gdzie to jest potrzebne?
Czym jest DMA?
Co to jest HWI?
Charakterystyka DMA
Przykład DMA
Programowanie DMA z CSL
Inne przydatne możliwości DMA
HWI (przerwanie DMA do CPU)
Uwagi o przykładowym programie
3 November 2012 Procesory sygnałowe 1 / V
5
DMA
DMA  to mechanizm bezpośredniego dostępu do
pamięci, pozwalający na przemieszczanie danych
pomiędzy zasobami procesora bez angażowania CPU
Transfery odbywają się pod nadzorem kontrolera DMA
Organizowane są w indywidualnie konfigurowane i
pracujące drogi przekazu zwane kanałami
Konfigurowanie kanałów i inicjalizację ich pracy
prowadzi CPU zgodnie z przygotowanym programem
Transfer może być synchronizowany ze zdarzeniami w
procesorze oraz z działaniem innych zasobów systemu
w tym np. Timerów czy interfejsów jak McBSP
Podstawowym sposobem synchronizacji jest
wykorzystanie sygnałów sprzętowych przerwań - HWI
3 November 2012 Procesory sygnałowe 1 / V
6
3
HWI
HWI to określenie mechanizmu sprzętowych przerwań.
Mechanizm przerwań służy do synchronizacji z programem
zdarzeń względem niego niesynchronicznych czyli zdarzeń,
których dokładnego momentu czasu wystąpienia nie
jesteśmy w stanie przewidzieć w chwili przygotowywania
programu sterującego.
Przerwania sprzętowe pochodzą od sprzętowych zasobów
systemu i związanych z nimi zdarzeń
Przygotowanie i obsługę HWI ułatwia dostępny w
środowisku narzędzi deweloperskich (narzędzi do
przygotowania i testowania kodu) manager systemu
operacyjnego czasu rzeczywistego DSP/BIOS
DSP/BIOS jest elementem firmowego środowiska Code
Composer Studio producenta procesorów TMS320C5515,
3 November 2012 Procesory sygnałowe 1 / V
7
Co chcemy rozpoznać
Co to jest DMA i HWI  gdzie to jest potrzebne?
Charakterystyka DMA
Organizacja DMA?
Możliwości obsługi DMA?
Przykład DMA
Programowanie DMA z CSL
Inne przydatne możliwości DMA
HWI (przerwanie DMA do CPU)
Uwagi o przykładowym programie
3 November 2012 Procesory sygnałowe 1 / V
8
4
Direct Memory Access (DMA)
Prowadzi transfer danych bez angażowania CPU
SOURCE DEST
SRC addr DST addr
Element 1 Frame 1
Element 2 Frame 2
Element 3 Frame 3
Element: podstawowa jednostka transferu (1, 2, or 4 bajty)
Frame: (ramka) grupa od 1 do 64K elementów
Block: grupa od 1 do 64K ramek (frames)
Max wydolność: 2 transfery 16-bitowe (R/W) na cykl
Priorytet transferu DMA
CPU ma ustalony wyższy priorytet nad DMA
DMA kanały mogą być wstawione w kolejki cyrkulacji Hi/Low
Transfer można synchronizować z 20 zdarzeniami (np. DRR ready)
Elastyczne tryby indeksacji (+/-, elem/frm index) wsparte sortowaniem
Autoinit: Automatyczne ustawienie kanału do następnego transferu
3 November 2012 Procesory sygnałowe 1 / V
9
Kotrolery DMA
4 kontrolery DMA (0  3)
Każdy obsługuje 4 kanały
Każdy kanał dysponuje
własnym rejestrem FIFO
DMA obsługuje bufory w
układzie Ping-Pong
3 November 2012 Procesory sygnałowe 1 / V
10
5
Rejestry i środki DMA
Gdzie sięga DMA
DMA Channels 0-3
Source Destination
DARAM
Elem Count Frame Count
SARAM
EMIF
Elem Index Frame Index
DMA
Peryferia
Control Status
Bus
Każdy z kanałów dysponuje FIFO by odczyt mógł wyprzedzać zapis
(gdy zasoby docelowe są zajęte)
Program użytkownika zapisuje  config registers . Gdy DMA zaczyna
transfer, config registers przepisywane są do working registers:
Rejestry konfiguracji
Rejestry robocze
Config Registers
Working Registers
DMA Start
Src Dest Src Dest
Elem Cnt Frame Cnt Copy Elem Cnt Frame Cnt
Elem Ind Frame Ind Autoinit Elem Ind Frame Ind
3 November 2012 Procesory sygnałowe 1 / V
11
Możliwości kontrolerów DMA
3 November 2012 Procesory sygnałowe 1 / V
12
6
Przepustowość DMA
Na przepustowość DMA wpływają:
1
CPU, który ma ustalony priorytet nad DMA  zatem sięgając do
SARAM, DARAM, EMIF, peryferii wpływa na działanie DMA
Ważność kanału, k.DMA mogą być włączane w kolejki cyrkul. High / Low
2
- W każdym włączeniu w kolejce kanał kolejce przenosi jeden element
- koło LOW rusza gdy High kończy ramki (xfr) lub czeka na  sync event
HIGH LOW
Kan-3 Kan-0 Kan-0 Kan-1
Kan-2 Kan-2
3 Kanały można ustawić w tryb burst-przesłania 4-ech 32-bitowych
elementów na transfer dając  podwyższenie priorytetu względem
kanałów o tym samym priorytecie w kolejce (zwiększa wydajność)
3 November 2012 Procesory sygnałowe 1 / V
13
Co chcemy rozpoznać
Co to jest DMA i HWI  gdzie to jest potrzebne?
Charakterystyka DMA
Przykład DMA
Organizacja danych do przesłania
Wpływ sposobu synchronizacji
Programowanie DMA z CSL
Inne przydatne możliwości DMA
HWI (przerwanie DMA do CPU)
Uwagi o przykładowym programie
3 November 2012 Procesory sygnałowe 1 / V
14
7
DMA Transfer (SARAM D/A)
Problem: - Prześlij blok  pixeli z SARAM do D/A
- Wyjście poprzez McBSP/DMA z synchr. z D/A (Ready)
McBSP
16-bit/pixels
DXR
8 9 1011 D
(SARAM)
14151617
D/A
Dest: DXR
DMA
20212223
Src: mem_8
Ready
EXT_INT4
15 14 13 12 9 8 7 6 5 2 1 0
DST BEN DST SRC BEN SRC DATA TYPE
Rejestr n (DMA_CSDPn) zawiera parametry zródła i przeznacz. kanału DMA
Pole Opis Opcje Wybór?
2
DATA TYPE Rozmiar Elem rozmiary 1, 2, lub 4 bajty
SRC/DST Wybór portu SA/DARAM, EMIF, Peryfer. SARAM/Periph
SRC/DST BEN. Włącz Burst bez burst, 4 element. burst
no burst
To jeszcze nie wszystko w ustawieniach dla kanału DMA ...
3 November 2012 Procesory sygnałowe 1 / V
15
DMA Transfer (SARAM D/A)
Problem: - Prześlij blok  pixeli z SARAM do D/A
- Wyjście poprzez McBSP/DMA z synchr. z D/A (Ready)
McBSP
16-bit/pixels
DXR
8 9 1011 D
(SARAM)
14151617
Dest: DXR D/A
DMA
20212223
Src: mem_8
Ready
EXT_INT4
15 14 13 12 11 10 9 8 7 6 5 4 0
DST AMODE SRC AMODE AUTO INIT EN PRIO FS SYNC
Rejestr n (DMA_CCRn) sterowania kanałem DMA
Pole Opis Opcje Wybór?
SYNC co Synch 20 opcji (plus bez synch) EXT_INT4
FS Frame Sync 0: element, 1: frame 0
PRIO Priorytet 0: low, 1: hi 0 (lub 1)
EN Kan. enable 0: disable, 1: enable 1
AUTO INIT Auto init 0: none, 1: auto init 0
SRC/DST AMODE Addr index none, +, elem indx, frm indx frm indx/ none
3 November 2012 Procesory sygnałowe 1 / V
16
8
DMA Transfer - Przykład
Problem: - Prześlij blok  pixeli z SARAM do D/A
- Wyjście poprzez McBSP/DMA z synchr. z D/A (Ready)
McBSP
16-bit pixels DXR
8 9 1011
D
(SARAM)
14151617
Dest: DXR D/A
DMA
20212223
Src: mem_8
Ready
EXT_INT4
DMA_CSSA_Un DMA_CSSA_Ln DMA_CDSA_Un DMA_CDSA_Ln
mem_8[23:16] mem_8[15:0] DXR[23:16] DXR[15:0]
SRC adres startowy BAJTOWY DEST Adres startowy BAJTOWY
Uwaga: etykieta danych, np. mem_8 musi być adresem BAJTOWYM
DMA_CENn DMA_CFNn
DMA_CEIn DMA_CFIn
4 3 1 5
# of Elements # of Frames Element Index Frame Index
(w bajtach) (w bajtach)
EI/FI w oparciu o adr..ostatniego obsłuż. bajtu 17
Co chcemy rozpoznać
Co to jest DMA i HWI  gdzie to jest potrzebne?
Charakterystyka DMA
Przykład DMA
Programowanie DMA z użyciem CSL
Niezbędne kroki
Niezbędne elementy
Inne przydatne możliwości DMA
HWI (przerwanie DMA do CPU)
Uwagi o przykładowym programie
3 November 2012 Procesory sygnałowe 1 / V
18
9
(DMA) 6-cio krokowa procedura CSL ...
Włącz niezbędne zbiory nagłówkowe
1
#include
#include
2 Deklaruj uchwyt  handle (wskaże na 1 z 4 kanałów DMA )
DMA_Handle hMyChan;
3
Otwórz kanał (inicjuje handle by wskazywał kanał)
hMyChan = DMA_open(DMA_CHA_ANY, DMA_OPEN_RESET);
4 Wypełnij strukt. konfiguracji (dane do umieszczenia w rejestrach)
DMA_Config myConfig
{
wyspecyfikuj tutaj wszystkie wartości rejestrów / bitów
}
Teraz trochę więcej o strukturze konfiguracji
3 November 2012 Procesory sygnałowe 1 / V
19
DMA_Config gDmaConfig = {
Struktura do
DMA_DMACSDP_RMK( // DMACSDP
DMA_DMACSDP_DSTBEN_NOBURST,
DMA_DMACSDP_DSTPACK_OFF,
konfiguracji DMA
DMA_DMACSDP_DST_DARAM,
DMA_DMACSDP_SRCBEN_NOBURST,
Obok dokładna struktura
DMA_DMACSDP_SRCPACK_OFF,
DMA_DMACSDP_SRC_DARAM,
DMA potrzebna do użycia.
DMA_DMACSDP_DATATYPE_16BIT
),
Nie należy w niej nic
DMA_DMACCR_RMK( // DMACCR
DMA_DMACCR_DSTAMODE_POSTINC,
zmieniać, ani pól ani
DMA_DMACCR_SRCAMODE_POSTINC,
DMA_DMACCR_ENDPROG_OFF,
rejestrów.
DMA_DMACCR_REPEAT_ALWAYS,
DMA_DMACCR_AUTOINIT_ON,
RMK (register make)
DMA_DMACCR_EN_STOP,
DMA_DMACCR_PRIO_HI,
składa wartości hex z opcji
DMA_DMACCR_FS_ENABLE,
DMA_DMACCR_SYNC_NONE
wybranych przez ciebie
),
DMA_DMACICR_RMK( // DMACICR
DMA_DMACICR_BLOCKIE_ON,
Dla adresów src/dest z
DMA_DMACICR_LASTIE_OFF,
DMA_DMACICR_FRAMEIE_OFF,
przykładu przyjęto wartość
DMA_DMACICR_FIRSTHALFIE_OFF,
DMA_DMACICR_DROPIE_OFF,
ZERO
DMA_DMACICR_TIMEOUTIE_OFF
),
Po więcej informacji o
0, // DMACSSAL
APIs i nazwach symboli 0, // DMACSSAU
0, // DMACDSAL
sięgnij do  API Ref Guide 0, // DMACDSAU
BUFFSIZE, // DMACEN
(SPRU433A)
1, // DMACFN
0, // DMACFI
0 // DMACEI
};
3 November 2012 Procesory sygnałowe 1 / V
20
10
5
5. Programowanie adresów Src/Dest
Z zasady kompilator przypisuje wszystkim symbolom danych
adres słowowy [word addresses]  bajtowy adres parzysty
DMA używa adresu bajtowego [byte address]
Zatem musimy adres bajtowy przesunąć w lewo o 1,  <<1
Musimy również zamaskować odpowiednie bity (młodsze lub starsze)
aby wytworzyć składowe całego adresu
Młodsza / Starsza część adresu zródła
gDmaConfig.dmacssal = (DMA_AdrPtr)(((Uint32)(&gBuffer0) <<1) & 0x00FFFF);
gDmaConfig.dmacssau = (Uint16)(((Uint32)(&gBuffer0) <<1) & 0xFF0000);
Młodsza / Starsza część adresu przeznaczenia
gDmaConfig.dmacdsal = (DMA_AdrPtr)(((Uint32)(&gBuffer1) <<1) & 0x00FFFF);
gDmaConfig.dmacdsau = (Uint16)(((Uint32)(&gBuffer1) <<1) & 0xFF0000);
3 November 2012 Procesory sygnałowe 1 / V
21
(DMA) 6-cio krokowa procedura CSL
Włącz niezbędne zbiory nagłówkowe
1
#include
#include
2
Deklaruj uchwyt  handle (wskaże na 1 z 6 kanałów DMA )
DMA_Handle hMyChan;
Otwórz kanał (inicjuje handle by wskazywał kanał)
3
hMyChan = DMA_open(DMA_CHA_ANY, DMA_OPEN_RESET);
4 Wypełnij strukt. konfiguracji (dane do umieszczenia w rejestrach)
DMA_Config myConfig
{ wyspecyfikuj tutaj wszystkie wartości rejestrów / bitów }
5
Inicjuj adresy zródeł / przeznaczeń
gDmaConfig.dmacssal =
6
Konfiguruj kanał
(inicjuj rejestry konfiguracji zawartością struktury konfiguracji)
DMA_config (hMyChan, &myConfig);
1 / V
3 November 2012 Procesory sygnałowe Przejrzyjmy jeszcze kilka problemów DMA 22
11
Co chcemy rozpoznać
Co to jest DMA i HWI  gdzie to jest potrzebne?
Charakterystyka DMA
Przykład DMA
Programowanie DMA z użyciem CSL
Inne przydatne możliwości DMA
Autoinicjalizacja
Sposoby synchronizacji
HWI (przerwanie DMA do CPU)
Uwagi o przykładowym programie
3 November 2012 Procesory sygnałowe 1 / V
23
Przydatne możliwości DMA
Autoinicjalizacja (Może być używana na dwa sposoby):
Repetitive Operation: za każdy razem te same config regs.
Continuous operation: zmiana zawartości config regs w czasie akt.
blok xfr. Kolejna xfr użyje nowych wartości. Bez zatrzymania DMA.
Przerwanie do CPU (Jedno przerwanie dla kanału)
Wyzwalane gdy kończą się blok, ramka,
1/2 ramki, start ostatniej ramki w bloku.
Warunki przerwań są powiązane razem funkcją OR
Zdarzenia synchronizujące (20 możliwości)
6 przerwań zewnętrznych
2 przerwań czasowych zegara
4 zdarzenia dla każdego z 3 McBSPs (np: gdy DRR gotów do odcz.)
Pełną listę rejestrów DMA zawiera dokumentacja procesora
24
12
Co chcemy rozpoznać
Co to jest DMA i HWI  gdzie to jest potrzebne?
Charakterystyka DMA
Przykład DMA
Programowanie DMA z użyciem CSL
Inne przydatne możliwości DMA
HWI przerwania sprzętowe
Organizacja
Działanie
Uwagi o przykładowym programie
3 November 2012 Procesory sygnałowe 1 / V
25
Przerwanie do CPU
IFR IER INTM
Interrupt  Individual  Master
Flag Enable Enable
DMA
0
McBSP
Timers
 C5510
1
RTC
CPU
0
External
IFR  Interrupt Flag Reg INTM  Global Int Enable
Pamięć przerwań Dopuszcza wszystkie
odblokowane przerwania
IER  Interrupt Mask Reg
Indywidualna blokada każdego z przerwań
3 November 2012 Procesory sygnałowe 1 / V
26
13
Tabela wektorów przerwań CPU
Gdy wystąpi HWI , CPU sięga do tablicy wektorów
dla ustalenia którą ISR uruchomić.
Każde HWI jest powiązane z lokacją w tabeli
wektorów przerwań.
Każda z lokacji w tablicy wektorów zawiera skok
do ISR [procedury obsługi przerwania]
Ponieważ wybieramy DOWOLNY kanał, skąd
wiadomo które zdarzenie (HWI) wystąpiło?
?
eventId = DMA_getEventId(hMyChan);
Jak zaprogramować skok do ISR na właściwym
miejscu w tabeli wektorów przerwań?
IRQ_plug(eventId, &dmaHwi);
interrupt void dmaHwi()
Słowo kluczowe
{
interrupt informuje
kompilator o potrzebie
<>
zachowania/odtworzenia
}
stanu procesora
3 November 2012 Procesory sygnałowe 1 / V
27
DMA ISR
interrupt void dmaHwi()
{
DMA
 C5515
DMA_RGETH(hDma, DMACSR);
Count = -1
CPU
blockSine(gBuffer0, BUFFSIZE);
Interrupt
DMA_start(hMyChan);
}
Gdy transfer osiągnie koniec bloku:
Przerwanie DMA jest wysyłane do CPU
Rejestry konfiguracji są reinicjalizowane (autoinit)
Gdy wystąpi przerwanie:
bit flagi IFR jest automatycznie kasowany
INTM (global enable) jest wyłączona OFF (aż do powrotu z ISR)
W procedurze ISR, użytkownik musi:
1. Zachować/odtworzyć kontekst (dzięki słowu  interrupt )
2. Skasować DMACSR (albo nie wystąpi nowe przerwanie)
3. Inicjuje kolejny transfer używając sync event lub DMA_start()
3 November 2012 Procesory sygnałowe 1 / V
28
14
(HWI) 6 kroków procedury CSL
1 Włącz niezbędne zbiory nagłówkowe
#include
2 Pobierz EventId
eventId = DMA_getEventId(hMyChan);
3 Ulokuj skok do ISR w tablicy wektorów przerwań
IRQ_plug(eventId, &dmaHwi);
4 Skasuj odpowiedni bit IFR
IRQ_clear(eventId);
5 Ustaw odpowiedni odblokowania przerwania IER
IRQ_enable(eventId);
Włącz wszystkie przerwania [global interrupts]
6
IRQ_globalEnable();
3 November 2012 Procesory sygnałowe 1 / V
29
Co chcemy rozpoznać
Co to jest DMA i HWI  gdzie to jest potrzebne?
Charakterystyka DMA
Przykład DMA
Organizacja
Programowanie DMA z użyciem CSL
Działanie
Inne przydatne możliwości DMA
HWI przerwania sprzętowe
Uwagi o przykładowym programie
3 November 2012 Procesory sygnałowe 1 / V
30
15
Co chcemy rozpoznać
Co to jest DMA i HWI  gdzie to jest potrzebne?
Charakterystyka DMA
Przykład DMA
Programowanie DMA z użyciem CSL
Inne przydatne możliwości DMA
HWI przerwania sprzętowe
Uwagi o przykładowym programie
Koncept pracy buforami
Działanie (transfer całego bufora między próbkami!).
3 November 2012 Procesory sygnałowe 1 / V
31
Przykł.  Programowanie DMA
CPU DMA
gBuffer0 gBuffer1
DMA
Transfer ramki zakończony
Pseudo Code
1. CPU generuje 256 wartości sinusoidy do gBuffer0
2. DMA przenosi 256 elementów z gBuffer0 do gBuffer1
3. DMA wysyła przerwanie  transfer complete do CPU
4. Go to 1
3 November 2012 Procesory sygnałowe 1 / V
32
16
Co to i do czego służą, jak działają?
" Mechanizm DMA " Mechanizm przerwań
" Kanał DMA " Organizacja przerwań
" Element w DMA " IFR
" Ramka w DMA " IER
" Blok w DMA " INTM
" Rejestry konfiguracji " NMI
" Auto-inicjalizacja " HWI
" Zdarzenia synchronizacji " ISR
" Priorytety w DMA " Tablica wektorów przerwań
" CSL " Definiowanie ISR
" Funkcje CSL " Wiązanie procedury ze zdarzeniem
" Przebieg konfiguracji " CSL  włączanie przerwań
" Inicjalizacja pracy DMA " &
3 November 2012 Procesory sygnałowe 1 / V
33
17


Wyszukiwarka

Podobne podstrony:
2013 w05 1 INT uzu dla?515 13z
Filozofia religii cwiczenia dokladne notatki z zajec (2012 2013) [od Agi]
W 4 zadanie wartswa 2013
Zagadnienia z fizyki Technologia Chemiczna PolSl 2013
klucze office 2013
Przechowalnictwo pytania 2013 1
Podstawy diagnozowania pedagogicznego Pedagogika S 2012 2013
test zawodowy probny 2013 14
TEST 2013 2014 Wojewodzki Konkurs Fizyczny etap rejonowy
wyklad 7 zap i, 11 2013
4 Sieci komputerowe 04 11 05 2013 [tryb zgodności]
2013 10 05 angielski (czasy Present S i Present C)

więcej podobnych podstron