7 DMA[1]


Systemy Wbudowane
Systemy Wbudowane
dla kierunku
dla kierunku
MECHATRONIKA
MECHATRONIKA
Część 7
Część 7
DMA
DMA
Backup Domain
Backup Domain
Reset
Reset
dr inż. Marek Galewski
Politechnika Gdańska
Wydział Mechaniczny
Katedra Mechaniki i Mechatroniki
1
Transfer danych z / do pamięci
Transfer danych z / do pamięci
" Procedura  klasyczna
 CPU wyznacza adres zródła i celu transferu
 CPU realizuje przesłanie (skopiowanie) danej
 Procedura musi być powtórzona dla każdego transferu,
każdej danej
" Wady
 Procedura powolna i mocno obciążająca CPU
" Możliwe rozwiązanie problemu
 Obsługę transferu (wyznaczanie adresów) przekazać
osobnemu układowi
 W czasie transferu CPU mogłoby wykonywać inne
operacje
" Pod warunkiem, że akurat nie potrzebuje dostępu do magistrali
2
DMA
DMA
" Bezpośredni dostęp do pamięci  Direct Memory
Access  DMA
 Technika pozwalająca wykonać transfer danych bez
udziału CPU
 Możliwy jest transfer
" Z pamięci do pamięci
" Z pamięci do urządzenia peryferyjnego
Wg zródła i celu
" Z urządzenia peryferyjnego do pamięci
" Z urzÄ…dzenia peryferyjnego do innego
urzÄ…dzenia peryferyjnego
" Przesyłane z/do pojedynczych adresów
Wg długości
" Przesyłanie bloków
 Maksymalnie 65535 elementów
3
DMA
DMA
" Działanie układu DMA w STM32
 Kontroler DMA podłączony jest do Bus Matrix  układu
łączącego magistrale w MCU
 Przydział dostępu do Bus Matrix wg. algorytmu
karuzelowego (round robin) z zajmowaniem /
podkradaniem cykli (bus stealing)
" Działanie
 Gdy przyjdzie kolej na kontroler DMA, otrzymuje on dostęp do
magistrali na jeden cykl
 Po jednym cyklu CPU odzyskuje kontrolÄ™
" Zalety
 CPU i DMA na zmianę otrzymują dostęp do magistral
 Transfer DMA dużego bloku nie zablokuje pracy CPU (tylko ją
spowolni)
4
DMA
DMA
 Procedura wykorzystania DMA (w skrócie)
" Skonfigurowanie DMA
 W szczególności ustawione zostają adresy zródła i celu
" Transfer danych
 Wykonywany bez udziału CPU
 W tym czasie procesor może wykonać inne operacje
 Najczęstsze zastosowania DMA
" Transfer dużych bloków danych
 Np. skopiowanie tablicy danych z pamięci do urządzenia
" Transfer pojedynczych danych, ale cyklicznie powtarzany
 Np. przy transmisji danych (Ethernet, UART, itp..)
5
DMA
DMA
" Możliwości DMA w ARM
 1 lub 2 kontrolery DMA (zależnie od modelu MCU)
 12 kanałów DMA - 7 kanałów w DMA1 i 5 w DMA2
" Każdy kanał może mieć określony 1 z 4 priorytetów
 Najwyższy (Very high)
 Wysoki (High)
 Åšredni (Medium)
 Niski (Low)
" Jeśli 2 kanały mają ustawiony ten sam priorytet
 kanał o niższym numerze będzie miał pierwszeństwo
" Wywołanie DMA następuje po:
 Wywołaniu programowym (przy transferze pomiędzy komórkami
pamięci)
 Zgłoszeniu przez urządzenie zdarzenia
6
DMA
DMA
 Przypisania zdarzeń
zgłaszanych przez
urzÄ…dzenia do
kanałów układu
DMA1
7
DMA
DMA
 Przypisania zdarzeń
zgłaszanych przez
urzÄ…dzenia do
kanałów układu
DMA2
8
DMA
DMA
" Konfiguracja DMA
 yródło i cel transferu
" Należy określić adresy:
 Pierwszej komórki pamięci, z której dane mają być przesyłane
Np. adres poczÄ…tku tablicy danych
 Pierwszej komórki pamięci, do której dane mają być przesyłane
" Jeśli celem lub zródłem jest urządzenie peryferyjne
 Podajemy adres odpowiedniego rejestru tego urzÄ…dzenia
Wynika on z mapy pamięci MCU
 Kierunek transferu
" Należy podać np. że zródłem ma być urządzenie peryferyjne
 Rozmiar i ilość danych
" Word (32-bity), Half-word (16-bitów) lub Byte (8-bitów)
" Maksymalnie 65536 elementów
9
DMA
DMA
 Tryb pracy
" Normalny
 Po zakończeniu transferu, nie jest on powtarzany
" Cykliczny
 Po zakończeniu transferu, rozpoczyna się nowy cykl
 Komórka lub blok będą przesłane ponownie
Stały jest zakres adresów
Dane w nich zawarte mogą się zmieniać
 Autoinkrementacja adresów
" Automatyczne zwiększanie adresów o 1 po każdym transferze
jednego elementu
" Przydatne, gdy celem lub zródłem jest tablica danych
10
DMA
DMA
" Konfiguracja DMA w C  przykład
 transfer 100 wartości z urządzenia peryferyjnego do
tablicy danych
" Przygotowanie tablicy danych
 Np. tablica 100 liczb 16 bitowych
unsigned short int bufor[100]={0};
" Ustawienia DMA
 Zmienna strukturalna opisujÄ…ca konfiguracjÄ™ DMA
DMA_InitTypeDef DMA_InitStructure;
 Adres urzÄ…dzenia
DMA_InitStructure.DMA_PeripheralBaseAddr =
(unsigned long int)adres_urzadzenia;
 Adres tablicy danych
DMA_InitStructure.DMA_MemoryBaseAddr =
(unsigned long int)&bufor;
 Ustawienie kierunku transferu
Z urządzenia (do pamięci)
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC
Wyłączenie transferu z pamięci do pamięci
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
11
DMA
DMA
 Liczba elementów do transferu
DMA_InitStructure.DMA_BufferSize = 100;
 Wyłączenie autoinkrementacji adresu po stronie urządzenia peryferyjnego
DMA_InitStructure.DMA_PeripheralInc =
DMA_PeripheralInc_Disable;
 Włączenie autoinkrementacji adresu po stronie pamięci
Umożliwi łatwe, automatyczne wypełnienie bufora
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
 Określenie rozmiaru pojedynczej danej do transmisji
Po stronie urzÄ…dzenia - Half word = 16-bit
DMA_InitStructure.DMA_PeripheralDataSize =
DMA_PeripheralDataSize_HalfWord;
Po stronie pamięci - Half word = 16-bit
DMA_InitStructure.DMA_MemoryDataSize =
DMA_MemoryDataSize_HalfWord;
Rozmiary po obu stronach nie muszą być takie same i wynikają
z zadeklarowanych rozmiarów danych, długości rejestrów itp.
Od tego zależy jak faktycznie będą wyznaczane kolejne adresy przy
autoinkrementacji
12
DMA
DMA
 Tryb działania kontrolera DMA
Np. cykliczne powtarzanie transferu po zakończeniu bloku
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
 Ustawienie priorytetu DMA
DMA_InitStructure.DMA_Priority =
DMA_Priority_High;
 Zapis konfiguracji dla wybranego kanału DMA
DMA_Init(DMA1_Channel5, &DMA_InitStructure);
 Włączenie kanału i układu DMA
DMA_Cmd(DMA1_Channel5, ENABLE);
13
DMA
DMA
" Oprócz konfiguracji DMA należy pamiętać o:
 Konfiguracji urzÄ…dzenia peryferyjnego
W tym, włączenie sygnału taktującego
 Włączenie sygnału taktującego układ DMA
 Konfiguracji NVIC  skonfigurowaniu i włączeniu obsługi przerwań
od DMA (jeśli są wykorzystywane)
Przerwania mogą być zgłaszane w przypadku
- Zakończenia transmisji całego bloku
- Zakończenia połowy transmisji bloku
Å" Przydatne gdy np. chcemy przesyÅ‚ać dane z tablicy, i majÄ… siÄ™
one zmieniać w czasie trwania transmisji. Gdy przesyłana jest
druga połowa tablicy, pierwszą można wypełniać nowymi
wartościami. Potem następuje zamiana.
- Błędu transmisji
14
Backup Domain
Backup Domain
" Grupa rejestrów chronionych przed utratą danych
 Ich zawartość nie jest kasowana w przypadku:
" Resetu procesora
" Przejścia w tryb głębokiego uśpienia
" Utraty zasilania głównego
 Potrzebne jest podłączenie zasilania bateryjnego
 Rejestry Backup Domain
" 10 lub 42 rejestry 16-bitowe ogólnego przeznaczenia  BKP_DRx
" Rejestr konfiguracji RTC  BKP_RTCCR
" Rejestr konfiguracji Backup Domain  BKP_CR
" Rejestr statusu Backup Domain  BKP_SCR
" Prescaler i licznik RTC
 Kasowanie rejestrów
" Sprzętowo  po zmianie stanu wejścia TAMPER
" Programowo  funkcjÄ… RCC_BackupResetCmd()
15
Backup Domain
Backup Domain
 Przeznaczenie
" Rejestry Backup Domain pozwalają przechować kluczowe dla
działania systemu dane, które zostałyby utracone, gdyby
pozostały w pamięci operacyjnej
" Szczególnie przydatne w systemach autonomicznych
 Pozwalają kontynuować pracę, np. po resecie, od miejsca,
w którym ją przerwano
 Wybrane przykłady wykorzystania
" Awaria zasilania głównego
 MCU przechodzi na zasilanie bateryjne i w tryb uśpienia
 Zawartość pamięci operacyjnej jest tracona
 Po przywróceniu zasilania najważniejsze dane mogą być
odtworzone z rejestrów chronionych
" Zablokowanie jednego z podukładów systemu
 Np. zablokowanie układu komunikacji
 By go odblokować  system musi zostać zresetowany
 Po resecie, możliwy powrót programu do stanu sprzed resetu
16
Backup Domain
Backup Domain
" Inne rozwiązanie umożliwiające zachowanie
danych
 Zapis danych do pamięci EEPROM
" Zalety
 Nie wymaga podtrzymania bateryjnego
" Wady (w stosunku do rejstrów Backup)
 Wolniejszy dostęp
 Ograniczona trwałość układu pamięci / ograniczona liczba
zapisów (przy częstych zmianach danych można ją szybko
przekroczyć)
17
Backup Domain
Backup Domain
 Dostęp do rejestrów Backup Domain
" Funkcje:
 BKP_ReadBackupRegister(BKP_DRx)  odczyt rejestru
 BKP_WriteBackupRegister(BKP_DRx, dana)  zapis rejestru
 Praca z rejestrami Backup Domain
" W zasadniczej części programu
 Daną, którą chcemy zabezpieczyć, należy zapisywać do rejestru
BKP_DRx
" W procedurach inicjalizujÄ…cych, na poczÄ…tku programu
 Po stracie systemu należy sprawdzić czy system jest włączany po
raz pierwszy, czy po resecie
Jeśli jest to strat po resecie  sprawdzić przyczynę i odczytać
zawartość rejestrów chronionych
18
Backup Domain
Backup Domain
 Uwagi dodatkowe
" Do działania układu Backup Domain potrzebne jest:
 Włączenie taktowania układów kontroli zasilania i samego Backup
Domain
Funkcja:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR |
RCC_APB1Periph_BKP,
ENABLE)
 Zezwolenie na dostęp do rejestrów chronionych
Funkcja: PWR_BackupAccessCmd(ENABLE)
19
Reset w ARM
Reset w ARM
" Reset w procesorach ARM
 3 sygnały resetu
" Systemowy
" Od napięcia zasilania
" ZerujÄ…cy rejestry chronione
 Przyczyny resetu systemowego
" Stan niski na wejściu RST (np. z przycisku reset)
" Watchdog
" Reset programowy
" Wykonanie procedury wejścia w tryb obniżonego poboru mocy
lub uśpienia
 (jeśli włączono resetowanie zamiast wejścia w te tryby)
20
Reset w ARM
Reset w ARM
 Istnieje możliwość wykrycia przyczyny restartu systemu
i zaprogramowanie odpowiedniej obsługi tych zdarzeń
" Sprawdzenie przyczyny resetu  funkcja:
RCC_GetFlagStatus(Flaga)
 Dostępne flagi:
RCC_FLAG_LPWRRSTF  reset wywołany brakiem zasilania
RCC_FLAG_WWDGRSTF  reset wywołany przez watchdog
okienkowy
RCC_FLAG_IWDGRSTF  reset wywołany przez watchdog
niezależny
RCC_FLAG_SFTRSTF  reset wywołany programowo
RCC_FLAG_PORRSTF  włączenie lub wyłączenie
zasilania
RCC_FLAG_PINRSTF  reset wywołany sprzętowo
(przez przycisk reset)
21
Reset w ARM
Reset w ARM
" Dygresja
 W urzÄ…dzeniach z procesorami ARM wykonanie
resetu nie gwarantuje, że startujemy z  czystym
systemem
" Jeśli reset nie pomaga  należy całkowicie odłączyć
zasilanie (także bateryjne)
22


Wyszukiwarka

Podobne podstrony:
ultra dma pl 9
ultra dma 4 upmksqkbx6o7mppq4ntllrv5pdoontt6jvkv7kq upmksqkbx6o7mppq4ntllrv5pdoontt6jvkv7kq
ultra dma pl
2013 w05 DMA HWI 2013zid(362
ultra dma xehhp5qe3wd4ftlp2q2u5gb4b7xedkbcbzucrcq xehhp5qe3wd4ftlp2q2u5gb4b7xedkbcbzucrcq
dom doi 25 dma stereoselective synth
ultra dma 10 3pg7rkr2wiaygfrh43pslaexeoc4jdxu4gtyhsa 3pg7rkr2wiaygfrh43pslaexeoc4jdxu4gtyhsa
ultra dma pl 2
ultra dma pl 3
ultra dma 6 fm7wpyo3eqcdh5zzhftge7z53sen7jlobot7tbi fm7wpyo3eqcdh5zzhftge7z53sen7jlobot7tbi
Mikrokontrolery STM32 Wykorzystanie ADC i DMA
Ultra DMA pl
Ultra DMA pl (2)
ultra dma pl 4
ultra dma 3 sbvsehqhjorlnl2qfwuln7ecygvxyegzxnwwsua sbvsehqhjorlnl2qfwuln7ecygvxyegzxnwwsua
12 DMA 15 www
ultra dma 1 skgwtgadbp6ofulw4c4bmozje2zrmxw6gv4c5oq skgwtgadbp6ofulw4c4bmozje2zrmxw6gv4c5oq
ultra dma 7 afqlndfahnto6ltzrrkiwjoebuftlogjwwmvlty afqlndfahnto6ltzrrkiwjoebuftlogjwwmvlty
ultra dma pl 7

więcej podobnych podstron