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 9ultra dma 4 upmksqkbx6o7mppq4ntllrv5pdoontt6jvkv7kq upmksqkbx6o7mppq4ntllrv5pdoontt6jvkv7kqultra dma pl2013 w05 DMA HWI 2013zid(362ultra dma xehhp5qe3wd4ftlp2q2u5gb4b7xedkbcbzucrcq xehhp5qe3wd4ftlp2q2u5gb4b7xedkbcbzucrcqdom doi 25 dma stereoselective synthultra dma 10 3pg7rkr2wiaygfrh43pslaexeoc4jdxu4gtyhsa 3pg7rkr2wiaygfrh43pslaexeoc4jdxu4gtyhsaultra dma pl 2ultra dma pl 3ultra dma 6 fm7wpyo3eqcdh5zzhftge7z53sen7jlobot7tbi fm7wpyo3eqcdh5zzhftge7z53sen7jlobot7tbiMikrokontrolery STM32 Wykorzystanie ADC i DMAUltra DMA plUltra DMA pl (2)ultra dma pl 4ultra dma 3 sbvsehqhjorlnl2qfwuln7ecygvxyegzxnwwsua sbvsehqhjorlnl2qfwuln7ecygvxyegzxnwwsua12 DMA 15 wwwultra dma 1 skgwtgadbp6ofulw4c4bmozje2zrmxw6gv4c5oq skgwtgadbp6ofulw4c4bmozje2zrmxw6gv4c5oqultra dma 7 afqlndfahnto6ltzrrkiwjoebuftlogjwwmvlty afqlndfahnto6ltzrrkiwjoebuftlogjwwmvltyultra dma pl 7więcej podobnych podstron