1
Podstawy techniki
mikroprocesorowej
ETEW006
DMA
Andrzej Stępień
Katedra Metrologii Elektronicznej i Fotonicznej
Transmisja danych z układu I/O do pamięci
DREQx
DACKx
IOR#
MCU
HRQ
HOLDA
MEMR#
Memory
(pami
ęć
)
Address Bus
(magistrala adresowa)
Data Bus
(magistrala danych)
MEMW#
IOW#
DMA
MEMW#
(MEMory Write
zapis pami
ę
ci)
IOR#
(Input/Output Read
odczyt układu I/O)
I/O
(układ)
–
CPU wysyła
sygnał do układu I/O o gotowo
ś
ci odczytu danych
–
urz
ą
dzenie I/O
umieszcza dane na magistrali danych i sygnalizuje ten fakt
–
CPU zapisuje
przesyłane dane w wewn
ę
trznym rejestrze i sygnalizuje
układowi I/O zako
ń
czenie odczytu
–
CPU wysyła
adres (magistrala adresowa) i dane (magistrala danych)
do pami
ę
ci
– CPU sygnalizuje
pami
ę
ci gotowo
ść
zapisu danych
–
pami
ęć
zapisuje
dane w swojej wewn
ę
trznej strukturze
Programowa transmisja danych
pamięć
←
←
←
←
układ I/O
[1#2]
DREQx
DACKx
IOR#
HRQ
HOLDA
MEMR#
Memory
(pami
ęć
)
MEMW#
IOW#
CPU
─
magistrala adresowa: adres układu I/O
─
sygnał gotowo
ś
ci odczytu
IOR#
, transmisji danych z układu I/O
układ I/O
─
magistrala danych: dane gotowe do transmisji
CPU
─
wpis danych do rejestru Rn
─
koniec sygnału gotowo
ś
ci
IOR#
DMA
MEMW#
(MEMory Write
zapis do pami
ę
ci)
IOR#
(Input/Output Read
odczyt układu I/O)
I/O
(układ)
MCU
Address Bus
(magistrala adresowa)
Data Bus
(magistrala danych)
rejestr Rn jako
element pomocniczy
DREQx
DACKx
IOR#
HRQ
HOLDA
MEMR#
Memory
(pami
ęć
)
MEMW#
IOW#
DMA
MEMW#
(MEMory Write
zapis do pami
ę
ci)
IOR#
(Input/Output Read
odczyt układu I/O)
I/O
(układ)
MCU
Address Bus
(magistrala adresowa)
Data Bus
(magistrala danych)
Mem CS#
MEMW#
wpis
danych
Data
clock
wpis
danych
Programowa transmisja danych
pamięć
←
←
←
←
układ I/O
[2#2]
CPU
─
magistrala adresowa: adres komórki pami
ę
ci
─
MEMW#
: sygnał gotowo
ś
ci zapisu do pami
ę
ci,
transmisja danych do pami
ę
ci
CPU
─
magistrala danych: zawarto
ść
rejestru Rx
─
koniec sygnału gotowo
ś
ci
MEMW#
wpis danych do pami
ę
ci:
─
zboczem
sygnału
MEMW#
─
zboczem
sygnału taktuj
ą
cego
Mem Add
Transmisja danych z układu I/O do pamięci
DREQx
DACKx
IOR#
HRQ
HOLDA
MEMR#
Memory
(pami
ęć
)
MEMW#
IOW#
DMA
MEMW#
(MEMory Write
zapis pami
ę
ci)
IOR#
(Input/Output Read
odczyt układu I/O)
I/O
(układ)
CPU
─
magistrala adresowa: adres układu I/O
─
IOR#
: sygnał gotowo
ś
ci odczytu danych z układu I/O
układ I/O
─
magistrala danych: dane gotowe do transmisji
CPU
─
wpis danych do rejestru Rx
─
koniec sygnału gotowo
ś
ci
IOR#
CPU
─
magistrala adresowa: adres komórki pami
ę
ci
─
MEMW#
: sygnał gotowo
ś
ci zapisu do pami
ę
ci,
transmisja danych do pami
ę
ci
CPU
─
magistrala danych: zawarto
ść
rejestru Rx
─
koniec sygnału gotowo
ś
ci
MEMW#
Address Bus
(magistrala adresowa)
MCU
Data Bus
(magistrala danych)
powtórzenie
cyklu
przesłania
Transmisja danych w PC
Programowy transfer
512 bajtów z urz
ą
dzenia o adresie 0x380 do bufora w pami
ę
ci RAM:
przeslij_dane:
mov
bx, bufor
; adres pami
ę
ci RAM
mov
cx, 512
; liczba transmitowanych bajtów
mov
dx, 380h
; adres portu
loop:
in
al, dx
; odczyt zawarto
ś
ci portu
mov
[bx], al
; wpis do pami
ę
ci RAM
inc
bx
; przygotowanie do kolejnego wpisu
dec
cx
; dekrementacja liczby przesłanych bajtów
jnz
loop
; zamkni
ę
cie p
ę
tli przesła
ń
ELEC 464 : MICROCOMPUTER SYSTEM DESIGN.
1996/97 WINTER SESSION TERM 1
2
Cortex-M0
Transmisja bloku danych
[1#2]
Programowy transfer 10 słów – 149 cykli maszynowych:
unsigned int i
;
unsigned int tab1[]
= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
unsigned int tab2[10]
;
for(
i=0; i<11; i++
)
tab2[
i
]
=
tab1[
i
]
;
www.keil.com
→
→
→
→ µµµµ
Vision v.4.70
Cortex-M0
Transmisja bloku danych
[2#2]
for(
i=0; i<11; i++
)
tab2[
i
]
=
tab1[
i
]
;
//
149 cykli maszynowych
www.keil.com
→
→
→
→ µµµµ
Vision v.4.70
0x0000030C 2400
MOVS
r4, #0x00
; i = 0
0x0000030E E006 B
0x0000031E
0x00000310
00A0 LSLS
r0, r4, #2
; r0
←
r4 << 2 (ofset)
0x00000312
A90A ADD
r1, sp, #0x28
; r1
←
adres tab1[0] (baza)
0x00000314
5808
LDR
r0, [r1, r0]
; r0
←
(r1 + r0)
0x00000316
00A1 LSLS
r1, r4, #2
; r0
←
r4 << 2 (ofset)
0x00000318
466A MOV
r2, sp
; r2
←
adres tab2[0] (baza)
0x0000031A 5050
STR
r0, [r2, r1]
; (r0)
←
(r2 + r1)
0x0000031C 1C64 ADDS
r4, r4, #1
; i++
0x0000031E 2C0B CMP
r4, #0x0B
; 0x0B = 11
0x00000320
D3F6 BCC
0x00000310
; je
ś
li mniejsze to skok
Cortex-M0 (LPC1114) / Cortex-M0+ (STM32L053)
STM32 Microcontrollers
CPU Transfer or DMA Transfer
http://www.embedds.com/
using-direct-memory-access-dma-in-stm23-projects
544
µ
s je
ś
li kopiowanie z udziałem CPU
214
µ
s je
ś
li kopiowanie z udziałem DMA
Kopiowanie 800 słów 32-bitowych
(STM32VLDiscovery – ST32F100RB MCU,
Cortex-M3,
pojedynczy, 7-kanałowy kontroler DMA)
DMA
(Direct Memory Access)
tryb bezpo
ś
redniego dost
ę
pu do pami
ę
ci
z pomini
ę
ciem jednostki
centralnej
(CPU)
w trakcie wymiany danych
przewa
ż
nie jako
transfer
(wymiana)
danych
mi
ę
dzy układami we/wy
(nap
ę
dy FDD, pami
ę
ci masowe HDD, karty d
ź
wi
ę
kowe, bufory
kontrolerów portów szeregowych, szybkie przetworniki A/C i C/A itp.),
a pami
ę
ci
ą
komputera / systemu procesorowego
redukcja energii
niezb
ę
dnej przy przesyle danych
Kontroler DMA
Kontroler DMA
sprz
ę
towa realizacja funkcji transmisji danych do pami
ę
ci :
uaktywnienie urz
ą
dzenia wej
ś
ciowego
pobranie danych z urz
ą
dzenia wej
ś
ciowego
wpis danych do pami
ę
ci RAM
inkrementacja adresu pami
ę
ci RAM
dekrementacja liczby przesyłanych bajtów
okre
ś
lenie ko
ń
ca transmisji danych
W
komputerach PC kontroler DMA
przesyła:
dane z urz
ą
dzenia wej
ś
ciowego do pami
ę
ci RAM w czasie
jednego
cyklu
maszynowego (brak mapowania urz
ą
dze
ń
we/wy w przestrzeni pami
ę
ci)
dane z pami
ę
ci RAM o adresie addr1 do pami
ę
ci RAM o adresie addr2 w
czasie
dwóch
cykli maszynowych (mapowanie urz
ą
dze
ń
we/wy w
przestrzeni pami
ę
ci)
Kontroler DMA
Sygnały
DREQx
(Dma REQuest)
DACKx#
(DMA ACKnowledge)
HRQ
(Hold ReQuest)
HOLDA
(HOLD Acknowledge)
MEMR#
(MEMory Read)
MEMW#
(MEMory Write)
IOR#
(Input/Output Read)
IOW#
(Input/Output Write)
DREQx
DACKx
IOR#
MCU
HRQ
HOLDA
MEMR#
Memory
(pami
ęć
)
Address Bus
(magistrala adresowa)
Data Bus
(magistrala danych)
MEMW#
IOW#
DMA
(kontroler)
I/O
(układ)
3
Kontroler DMA - rejestry
DREQx
DACKx
IOR#
MCU
HRQ
HOLDA
MEMR#
Memory
(pami
ęć
)
Address Bus
(magistrala adresowa)
Data Bus
(magistrala danych)
MEMW#
IOW#
DMA
(kontroler)
rejestr
ź
ródłowy
(source address)
, inkrementowany lub dekrementowany
rejestr docelowy
(destination address)
, inkrementowany lub
dekrementowany
rejestr powtórze
ń
(transfer count)
rejestr inicjalizuj
ą
cy tryb DMA
(trigger source(s)
I/O
(układ)
Inicjalizacja trybu DMA
[1#2]
1.
DREQx
(
DMA Request
) –
żą
danie dost
ę
pu do trybu DMA
2.
HRQ
(
Hold Request
) – ’zawieszenie’ procesora (wstrzymanie dost
ę
pu
procesora do magistral), ’zawieszenie ’ sterowania pami
ę
ci i układów I/O
3.
HOLDA
(
HOLD Acknowledge
) – akceptacja CPU kontrolera DMA o pocz
ą
tku
lub ko
ń
cu ’zawieszenia’ procesora
4.
DACKx#
(
DMA Acknowledge
) – potwierdzenie
żą
dania dost
ę
pu DMA
DREQx
DACKx
IOR#
MCU
HRQ
HOLDA
MEMR#
Memory
(pami
ęć
)
Address Bus
(magistrala adresowa)
Data Bus
(magistrala danych)
MEMW#
IOW#
DMA
(kontroler)
I/O
(układ)
Inicjalizacja trybu DMA
[2#2]
DREQx
DACKx
IOR#
MCU
HRQ
HOLDA
MEMR#
Memory
(pami
ęć
)
Address Bus
(magistrala adresowa)
Data Bus
(magistrala danych)
MEMW#
IOW#
DMA
(kontroler)
I/O
(układ)
DREQ (
DMA Request
):
żą
danie transferu danych
HRQ/HOLDRQ (
Hold Request
):
żą
danie zwolnienia magistral
HOLDA (
HOLD Acknowledge
): potwierdzenie zwolnienia magistral
DACK (
DMA Acknowledge
): potwierdzenie otwarcia kanału DMA
sterowanie przesłaniem bloku danych: pami
ęć
←
←
←
←
układ I/O
nieaktywny HOLD i ACK: zamkni
ę
cie kanału DMA po zako
ń
czonej transmisji
bloku danych lub nieaktywnym DREQ
Typy transmisji DMA
wielokrotna, z powtórzeniami (
Burst Mode
)
z wykradaniem cykli
(Cycle stealing mode)
Jest mo
ż
liwe jednoczesne
u
ż
ycie
tylko 1
kanału DMA
je
ś
li mikrokontroler ma
1
magistral
ę
adresów i danych
pojedyncza
(Single Transfer)
blokowa
(Block Transfer)
blokowa z przeplotem dost
ę
pu CPU (
Burst-Block Transfer
)
pojedyncza z powtórzeniem
(Repeated Single Transfer)
blokowa z powtórzeniem
(Repeated Block Transfer)
’rozrzu
ć
-zbierz’
(
Scatter-Gather Transfers)
Tryby DMA
Pojedynczy, blokowy, z przeplotem
Tryb pojedynczy
(Single Transfer)
:
−
na ka
ż
de
żą
danie wykonywany jest pojedynczy transfer danych
−
kontroler DMA zwi
ę
ksza lub zmniejsza adres o liczb
ę
transferowanych
bajtów (1 lub 2 lub 4 bajty)
−
transfer danych (DMA) odcina CPU od magistral
Tryb blokowy
(Block Transfer)
:
−
na
żą
danie transferowany jest blok danych
−
DMA ko
ń
czy prac
ę
po transmisji całego bloku danych
−
kontroler DMA odcina CPU od magistral na czas transferu bloku danych
Tryb blokowy z przeplotem
(Burst-Block Transfer)
:
−
podobie
ń
stwo do trybu blokowego ale z przeplotem dost
ę
pu DMA i CPU
do magistral
−
zmniejsza wydajno
ść
o 20% ale CPU nie jest odcinane od magistral na
czas transmisji DMA
−
tryb ko
ń
czony po transmisji całego bloku danych
Ganier CJ: What is Direct Memory Access (DMA) ?
http://cnx.org
Tryb pojedynczy
(Single Transfer)
:
−
na ka
ż
de
żą
danie wykonywany jest pojedynczy transfer danych
−
kontroler DMA zwi
ę
ksza lub zmniejsza adres o liczb
ę
transferowanych
bajtów (1 lub 2 lub 4 bajty)
−
transfer danych (DMA) odcina CPU od magistral
Tryb blokowy
(Block Transfer)
:
−
na
żą
danie transferowany jest blok danych
−
DMA ko
ń
czy prac
ę
po transmisji całego bloku danych
−
transfer odcina CPU od magistral na czas transferu bloku danych
Tryb pojedynczy z powtórzeniem
(Repeated Single Transfer)
–
analogicznie jak tryb pojedynczy ale nie jest blokowany do mamentu
zako
ń
czenia transmisji wszystkich danych (bloku danych)
Tryby DMA
Pojedynczy z powtórzeniem
4
Tryby DMA
Transfer Scatter-Gather
dotyczy procesu zbierania danych
(gathering data from)
i rozproszenia-
rozrzucania danych
(scattering data into)
(
http://en.wikipedia.org/wiki/Vectored_I/O - "Scatter-Gather" (dosł.: rozrzu
ć
-zbierz
)
technika transferu nieci
ą
głych bloków danych jako seria małych
spójnych, ci
ą
głych bloków danych
(
http://www.latticesemi.com/products/intellectualproperty/ipcores/scatter-
gatherdirectmemor/index.cfm
)
procedura DMA, Scatter-Gather (dosł.: „rozrzu
ć
-zbierz”), pozwalaj
ą
ca
przenosi
ć
dane do wielu obszarów pami
ę
ci w pojedynczym transferze;
pod wzgl
ę
dem skutków jest to równowa
ż
ne poł
ą
czeniu ła
ń
cuchowemu
kilku transferów, jednak jest wyra
ź
nie szybsze
(
http://pl.wikipedia.org/wiki/DMA
)
Tryby DMA
Buforowanie Ping-Pong
Galda M.: Audio Output Options for Kinetis.
Using DMA and PWM, DAC, or I2S Audio Bus. Freescale Semi. AN4369, 02/2012
dwa niezale
ż
ne bufory napełniane naprzemiennie danymi, np. próbkami audio
po
opró
ż
nieniu
jednego
bufora,
odwrócenie
ról
realizacja
przez
przeł
ą
czanie
wska
ź
ników
(adresów)
buforów
Figure 1. Audio input-output data processing stream
Tryby DMA
Transfer z w
ykradaniem cykli
SH7211 Group. Data Transfer between
On-chip RAM Areas with DMAC (Cycle-Stealing Mode). Renesas, March 2008
CPU nie ma dost
ę
pu do magistral w trakcie DMA, np. wykonuje program
z wewn
ę
trznej pami
ę
ci podr
ę
cznej (cache); kontroler DMA zawiesza
dost
ę
p CPU do magistral
kontroler DMA przejmuje kontrol
ę
nad magistralami tylko je
ś
li CPU nie
korzysta z magistral; wykrada cykle
(Cycle stealing mode)
CPU decyduje o momencie transferu danych przez DMA
transfer DMA ulega spowolnieniu ale CPU i DMA maj
ą
dost
ę
p do
magistral
Tryby DMA
wg Cypress Semiconductor
Anu M. D.: An Introduction to DMA
Cypress Semiconductor Corp. March 2012
kontroler DMA
(DMA controller - DMAC)
nadzoruje transfer danych bez
udziału CPU; CPU programuje kontroler DMA
typy transferów przy du
ż
ej liczbie danych:
–
punkt – punkt
(Point-to-Point)
–
punkt – tablica
(Point-to-Array)
–
tablica – punkt
(Array-to-Point)
–
tablica – tablica
(Array-to-Array)
–
podwójne, przemienne buforowanie
(Ping Pong Buffering)
po
ka
ż
dym
transferze
licznik transferów jest
dekrementowany o 1
(burst count)
transfer
jest
ko
ń
czony
je
ś
li
licznik transferów
osi
ą
ga warto
ść
0
DMA Operations
Example 1: Point-to-Point Transfer
Anu M. D.: An Introduction to DMA
Cypress Semiconductor Corp. March 2012
Fig. 1
sygnał ko
ń
ca konwersji (
E
nd
o
f
C
onversion) przetwornika wymusza
żą
danie
transmisji DMA (
DMA request
)
układ
DMA
odczytuje dane z przetwornika ADC i wpisuje do rejestrów
przetwornika
DAC
w ka
ż
dym cyklu
żą
dania DMA (on each
DMA request
)
DMA Operations
Example 2: Point-to-Array Transfer
Anu M. D.: An Introduction to DMA
Cypress Semiconductor Corp. March 2012
kontroler
DMA zapisuje 2-batowy
wynik konwersji przetwornika
ADC do
bufora w pami
ę
ci
RAM
po ka
ż
dorazowym wyst
ą
pieniu
żą
dania transmisji
wska
ź
nik bufora pami
ę
ci RAM
jest
inkrementowany
po ka
ż
dorazowym
transferze danych
Po
przesłaniu zaprogramowanej liczby wyników przetwarzania układ
DMA
sygnalizuje zako
ń
czenie transferu danych
Fig. 3
5
DMA Operations
Example 3: Array-to-Point Transfer
Anu M. D.: An Introduction to DMA
Cypress Semiconductor Corp. March 2012
przetwornik DAC jest periodycznie aktualizowany
warto
ś
ciami zapisanymi
w pami
ę
ci Flash (lookup table)
na wyj
ś
ciu przetwornika
DAC
tworzony jest
sygnał sinusoidalny
żą
danie transmisji DMA
jest
periodycznie wymuszane przez licznik
(sygnał zegarowy)
cz
ę
stotliwo
ść
żą
da
ń
transmisji DMA
(DMA trigger
clock) oraz
wielko
ść
tablicy
w pami
ę
ci
Flash decyduj
ą
o parametrach
sinusoidy.
Fig. 5
DMA Operations
Example 4: Array-to-Array Transfer
Anu M. D.: An Introduction to DMA
Cypress Semiconductor Corp. March 2012
w pami
ę
ci
RAM
jest tworzona kopia tablicy z pami
ę
ci
Flash
(8-bytowe dane)
z wykorzystaniem transferu DMA (from memory to Memory)
transfer jest wymuszany przez CPU
(CPU request)
koniec
transferu
jest
sygnalizowany
przez sygnał
NRQ
, który
uruchamia
przerwanie
ISR_DMADone
i
wy
ś
wietla
zawarto
ść
pami
ę
ci
RAM
na
LCD
Fig. 7
DMA Operations
Example 5: Ping-Pong Buffer
[1#2]
Anu M. D.: An Introduction to DMA
Cypress Semiconductor Corp. March 2012
Fig. 10
wyniki przetwarzania przetwornika ADC dane s
ą
zapisywane w buforze 1 w
pami
ę
ci RAM (RAM Buffer 1)
po
zapełnieniu
bufora 1
(RAM Buffer
1), dane s
ą
zapisywane
w buforze 2
(RAM Buffer
2)
DMA Operations
Example 5: Ping-Pong Buffer
[2#2]
Anu M. D.: An Introduction to DMA
Cypress Semiconductor Corp. March 2012
Fig. 13
naprzemienne wykorzystanie
dwóch kanałów DMA
PC DMA Channels 0..3
http://www.pcguide.com/
DMA0
– reserved for use by the internal Dynamic RAM refresh circuitry
– used only for system memory on almost all PCs and not available for
use by peripherals
DMA1
– "low" DMA channel, normally taken by the sound card (one must be
chosen from DMAs 1, 2 or 3, while the other can be any free DMA
channel)
– also a popular choice for many other peripherals
DMA2
– used on virtually every PC for the floppy disk controller
DMA3
– normally the only one free on the first controller (DMAs 0 to 3) when you
are using a sound card
– one of the most common uses of this channel is by ECP parallel ports,
which require a DMA channel unlike other parallel port modes
– on very old XT systems, DMA channel 3 is used by the hard disk drive
PC DMA Channels 4..7
DMA4
– reserved for cascade the two DMA controllers on systems with a 16-
bit ISA bus. It is not available for use by peripherals
DMA5
– "high" DMA channel for sound card
– other Common Uses: SCSI host adapters, network cards
DMA6
– normally open and available for use by peripherals
– one of the least used channels in the system and is an alternative
location for the "high" sound card DMA channel or other devices
DMA7
– normally open and available for use by peripherals
– one of the least used channels in the system and is an alternative
location for the "high" sound card DMA channel or other devices
http://www.pcguide.com/
6
MSP430x4xx
DMA Controller Features
kontroler DMA
(
direct memory access
) przesyła dane z jednego adresu
do innego, bez interwencji jednostki centralnej procesora (
CPU
), w całym
zakresie adresów; np. kontroler DMA mo
ż
e zapisywa
ć
wyniki
przetwarzania przetwornika ADC12 do pami
ę
ci RAM
kontroler DMA
zwi
ę
ksza wydajno
ść
układów peryferyjnych
wykorzystanie transferu
DMA redukuje pobór mocy
przez mikrokontroler
przez wprowadzenie CPU w tryb redukcji
mocy (
low-power mode
), np. u
ś
pienia (
sleep mode
), bez konieczno
ś
ci
zmiany trybu pracy przy transmisji danych do/z układów peryferyjnych
MSP430x4xx Family. User’s Guide.
Mixed Signal Products. Texas Instruments, 2007, SLAU056G
MSP430x4xx
DMA Controller
zapis danych w pami
ę
ci RAM w trybie
DMA
:
ź
ródłem danych jest
12-bitowy przetwornik ADC12
,
12-bitowy przetwornik DAC12
w trybie 8- lub 12-bitowym,
ź
ródłem danych lub układem docelowym jest
USART0
(
kontroler standardu
I2C-Bus, zgodny ze standardem Philips I
2
C, wersja 2.1
)
−
w trybie podstawowym (
standard mode, 100 kbps
MAX
) lub szybkim (
fast
mode, 400 kbps
MAX
),
−
adresowanie 7-bitowe lub 10-bitowe,
−
praca w trybie master lub slave,
−
dwa dedykowane kanały DMA obsługuj
ą
ce 16-bitowy transfer I
2
C
automatyczny transfer danych do pami
ę
ci Flash
– transfer DMA bez
udziału CPU, niezale
ż
nie od wybranego trybu redukcji mocy (
low-power
modes
)
MSP430x4xx Family. User’s Guide.
Mixed Signal Products. Texas Instruments, 2007, SLAU056G
MSP430x4xx
DMA Controller
Block Diagram
up to three independent
transfer channels
configurable DMA channel
priorities
only 2 MCLK clock cycles
byte or word and mixed
byte/word transfer capability
block sizes up to 65535 bytes
or words
configurable transfer trigger
selections
selectable edge or level-
triggered transfer
four addressing modes
single, block, or burst-block
transfer modes
Inicjalizacja
transferu DMA
Wyzwalanie zboczem lub poziomem
transfer DMA
nie jest
przerywany
przez kontroler
przerwa
ń
procesora
MSP430x4xx
Tryby adresowania DMA
oba stałe adresy
stały adres – adresy bufora
adresy bufora 1 –
– adresy bufora 2
adresy bufora – stały adres
4 tryby adresowania
ka
ż
dy kanał DMA programowany niezale
ż
nie
Transfer:
– byte-to-byte,
– word-to-word,
– byte-to-word,
– lub word-to-byte
STM32L053
Direct Memory Access
RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM
®
-based 32-bit MCUs. STMicroelectronics, April 2014
do 7 niezale
ż
nych, programowalnych kanałów DMA (
requests
)
sprz
ę
towe lub programowe wyzwalanie ka
ż
dego kanału DMA
programowalne 4 poziomy priorytetów transferów DMA (
very high, high,
medium, low priorities
)
niezale
ż
ne
ź
ródło (
source
) / przeznaczenie (
destination
), typ transferu (
byte
,
half word, word
); prawidłowy sposób adresowania (so
urce/destination
addresses must be aligned on the data size
)
wsparcie realizacji bufora kołowego (circular buffer)
3 znaczniki (
DMA Half Transfer, DMA Transfer complete and DMA Transfer
Error
); logiczny OR dla pojedynczego przerwania ka
ż
dego z kanałów DMA
transfery: memory-to-memory, peripheral-to-memory oraz memory-to-
peripheral i peripheral-to-peripheral transfers (
access to Flash, SRAM, APB
and AHB peripherals as source and destination
)
2-bajtowa liczba transmitowanych danych (
maksymalnie 65535 transferów
)
STM32 Microcontrollers
Direct Memory Access
http://www.embedds.com/
using-direct-memory-access-dma-in-stm23-projects
Core
ARMv7-M
Ibus
Dbus
System
DMA
AHB
B
u
s
m
a
tr
ix
Peripherals
Peripherals
do
14 kanałów DMA
(
single unit
) w procesorach ST32
mało
(
Low
) i
ś
rednio
(
Medium
) zło
ż
onych
dwa kontrolery DMA
z maksymalnie
12
niezale
ż
nymi
kanałami
w
procesorach ST32
bardzo
(
High
) zło
ż
onych
Flash
RAM
APB1
APB2
7
STM32L053
DMA Transfer
RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM
®
-based 32-bit MCUs. STMicroelectronics, April 2014
odczyt
danych z rejestrów układów peryferyjnych lub komórki pami
ę
ci
adresowanej wewn
ę
trznym rejestrem adresowym
adres pocz
ą
tkowy pierwszego transferu DMA
w rejestrze:
-
DMA_CPARx
(
peripheral base address of the data register from/to
which the data will be read/written
)
- or
DMA_CMARx
(
memory base address area from/to which
the data will be read/written
)
dekrementacja 16-bitowego rejestru licznikowego
(
DMA_CNDTRx –
DMA channel x number of data register
) po ka
ż
dym transferze danych
(
post-decrementing
)
STM32L053
DMA Channel x Configuration Register DMA_CCRx
[1#3]
RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM
®
-based 32-bit MCUs. STMicroelectronics, April 2014
31:15
Reserved
14
MEM2MEM: Memory to memory mode
(
bit set & cleared by software
)
0: Memory to memory mode disabled
1: Memory to memory mode enabled
13:12
PL[1:0]: Channel priority level
(
bits set & cleared by software
)
00: Low
01: Medium
10: High
11: Very high
11:10
MSIZE[1:0]: Memory size
(
bits set & cleared by software
)
00: 8-bits
01: 16-bits
10: 32-bits
11: Reserved
9:8
PSIZE[1:0]: Peripheral size
(
bits set & cleared by software
)
00: 8-bits
01: 16-bits
10: 32-bits
11: Reserved
7
MINC: Memory increment mode
(
bit set & cleared by so
ftware)
0: Memory increment mode disabled
1: Memory increment mode enabled
STM32L053
DMA Channel x Configuration Register DMA_CCRx
[2#3]
RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM
®
-based 32-bit MCUs. STMicroelectronics, April 2014
6
PINC: Peripheral increment mode
(
bit set & cleared by software
)
0: Peripheral increment mode disabled
1: Peripheral increment mode enabled
5
CIRC: Circular mode
(
bit set & cleared by software
)
0: Circular mode disabled
1: Circular mode enabled
4
DIR: Data transfer direction
(
bit set & cleared by software
)
0: Read from peripheral
1: Read from memory
3
TEIE: Transfer error interrupt enable
(
bit set & cleared by software
)
0: TE interrupt disabled
1: TE interrupt enabled
2
HTIE: Half transfer interrupt enable
(
bit set & cleared by software
)
0: HT interrupt disabled
1: HT interrupt enabled
STM32L053
DMA Channel x Configuration Register DMA_CCRx
[3#3]
RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM
®
-based 32-bit MCUs. STMicroelectronics, April 2014
1
TCIE: Transfer complete interrupt enable
(
bit set & cleared by software
)
0: TC interrupt disabled
1: TC interrupt enabled
0
EN: Channel enable
(
bit set & cleared by software
)
0: Channel disabled
1: Channel enabled
STM32L053
Circular and Memory-to-memory mode
RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM
®
-based 32-bit MCUs. STMicroelectronics, April 2014
tryb bufora kołowego
(
Circular mode
) do obsługi buforów kołowych (handle
circular buffers) np. skanowanie przetwornika ADC
odblokowanie trybu bitem CIRC (
Circular mode
) w rejestrze DMA_CCRx (
DMA
Channel x Configuration Register
)
wł
ą
czenie trybu automatycznie uaktualnia liczb
ę
transferów programowan
ą
w
trakcie programowania kontrolera DMA
Memory-to-memory mode
– transfer DMA nie musi by
ć
aktywowany przez
urz
ą
dzenie peryferyjne
ustawienie bitu MEM2MEM (
Memory to memory mode
) w rejestrze
DMA_CCRx (
DMA Channel x Configuration Register
), rozpoczyna transfer
DMA po ustawieniu bitu EN (
Channel enable
) w rejestrze DMA_CCRx
transfer jest ko
ń
czony je
ś
li zwarto
ść
rejestru DMA_CNDTRx (
DMA channel x
number of data register
) jest równa 0
tryb Memory-to-Memory mo
ż
e by
ć
u
ż
yty równolegle z trybem bufora kołowego
STM32L053
Error management
RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM
®
-based 32-bit MCUs. STMicroelectronics, April 2014
kontroler DMA
generuje
bł
ą
d
przy próbie
odczytu/zapisu z obszaru
zarezerwowanego
bł
ą
d transmisji automatycznie blokuje kanał DMA
(
disabled
) i kasuje
bit
EN = 0
(
Channel enable
) we wła
ś
ciwym dla tego kanału rejestrze
konfiguracyjnym
DMA_CCRx
(
DMA Channel x Configuration Register
)
bł
ą
d transmisji wywołuje przerwanie
, ustawiany jest znacznik
TEIF = 1
(
Channel x transfer error flag
) w rejestrze DMA_IFR (
DMA Interrupt
Requests Register
)
je
ś
li odblokowane jest maskowanie przerwania, bit
TEIE = 1
(
Transfer error interrupt enable
), we wła
ś
ciwym dla tego kanału
rejestrze konfiguracyjnym
DMA_CCRx
(
DMA Channel x Configuration
Register
)
8
STM32L053
DMA Request
RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM
®
-based 32-bit MCUs. STMicroelectronics, April 2014, tab. 43
Request
Peri-
Channel
number
pherals
1
2
3
4
5
6
7
0
ADC
ADC
ADC
1
SPI1
SPI1
SPI1
_RX
_TX
2
SPI2
SPI2
SPI2
SPI2
SPI2
_RX
_TX
_RX
_TX
3
USART1
USART1
USART
USART1 USART1
_TX
_RX
_TX
_RX
4
USART2
USART2 USART2
USART2
USART2
_TX
_RX
_RX
_TX
5
LPUART1
LPUART1 LPUART1
LPUART1 LPUART1
_TX
_RX
_RX
_TX
6
I2C1
I2C1
I2C1
I2C1
I2C1_RX
_TX
_RX
_TX
_TX
7
I2C2
I2C2
I2C2
_TX
_RX
8
TIM2
TIM2
TIM2
TIM2
TIM2
TIM2
TIM2_CH2
_CH3
_UP
_CH2
_CH4
_CH1
TIM2_CH4
9
TIM6_UP
TIM6/DAC
/DAC_Ch1
_Ch1
11
AES
AES
AES
AES
AES
_IN
_OUT
_OUT
_IN
Universal Synchronous / Asynchronous Receiver / Transmitter
Inter-integrated Circuit (I2C) interface
Analog-to-Digital Converter
Low-Power Universal Asynchronous Receiver / Transmitter
Serial peripheral interface/ inter-IC sound
general-purpose TIMer 2
Advanced Encryption Standard hardware accelerator
basic TIMer 6
Digital-to-Analog Converter
STM32L053
DMA Request
RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM
®
-based 32-bit MCUs. STMicroelectronics, April 2014, tab. 43
Request
Peri-
Channel
number
pherals
1
2
3
4
5
6
7
0
ADC
ADC
ADC
1
SPI1
SPI1
SPI1
_RX
_TX
2
SPI2
SPI2
SPI2
SPI2
SPI2
_RX
_TX
_RX
_TX
3
USART1
USART1
USART
USART1 USART1
_TX
_RX
_TX
_RX
4
USART2
USART2 USART2
USART2
USART2
_TX
_RX
_RX
_TX
5
LPUART1
LPUART1 LPUART1
LPUART1 LPUART1
_TX
_RX
_RX
_TX
6
I2C1
I2C1
I2C1
I2C1
I2C1_RX
_TX
_RX
_TX
_TX
7
I2C2
I2C2
I2C2
_TX
_RX
8
TIM2
TIM2
TIM2
TIM2
TIM2
TIM2
TIM2_CH2
_CH3
_UP
_CH2
_CH4
_CH1
TIM2_CH4
9
TIM6_UP
TIM6/DAC
/DAC_Ch1
_Ch1
11
AES
AES
AES
AES
AES
_IN
_OUT
_OUT
_IN
STM32L053
DMA Channel configuration procedure
[1#2]
RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM
®
-based 32-bit MCUs. STMicroelectronics, April 2014
zaprogramuj:
1.
adres pobieranych
(
source
)
danych z wybranego układu
peryferyjnego
w rejestrze
DMA_CPARx
(
DMA peripheral base address
of the data register from/to which the data will be read/written
); dane
mog
ą
by
ć
tak
ż
e pobierane z pami
ę
ci
2.
adres wysyłanych
(
destination
)
danych w pami
ę
ci
w rejestrze
DMA_CMARx
(
DMA memory base address area from/to which the data
will be read/written
); dane mog
ą
by
ć
tak
ż
e wysyłane do wybranego
układu peryferyjnego
3.
liczb
ę
przesyłanych danych
w rejestrze
DMA_CNDTRx
(
DMA number
of data to be transferred (0 up to 65535) register
); po ka
ż
dym transferze
danych warto
ść
tego rejestru b
ę
dzie dekrementowana
STM32L053
DMA Channel configuration procedure
[2#2]
RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM
®
-based 32-bit MCUs. STMicroelectronics, April 2014
zaprogramuj:
4.
priorytet wybranego kanału
, bity
PL[1:0]
(
channel priority level
) w
rejestrze DMA_CCRx (
DMA Channel x Configuration Register
)
5.
−−−−
kierunek
transferu danych (
data transfer direction
)
−−−−
transfer w
trybie bufora kołowego
(
circular mode
)
−−−−
tryb inkrementacji
dla układu peryferyjnego / pami
ę
ci (
peripheral &
memory incremented mode
)
−−−−
rozmiar
transmitowanych danych (
peripheral & memory data size
)
−−−−
typ przerwania
po połowie lub całym bloku transmitowanych danych
(
interrupt after half and/or full transfer
) w rejestrze DMA_CCRx
(
DMA Channel x Configuration Register
)
uaktywnij
kanał
DMA
, bit
ENABLE = 1
w rejestrze DMA_CCRx (
DMA
Channel x Configuration Register
)
NXP LPC17xx
AN10878 Migrating to the LPC1700 series.
NXP Semiconductors, App Note, Rev. 01 - 6 October 2009
Multilayer AHB Bus Matrix
Multilayer interconnect
system
allows
simultaneous operation:
–
CPU execution from
on-chip flash
–
Ethernet DMA
–
USB DMA
–
General Purpose DMA
– simultaneous access to
be spread over three
separate SRAMs with no
contention between those
functions
Problemy i pytania
1. Jaki jest powód wprowadzenie trybu DMA ?
2. Jak opisa
ć
działanie trybu DMA ?
3. Jaki jest udział jednostki centralnej (CPU) w trybie DMA ?
4. Jakie sygnały steruj
ą
kontrolerem DMA ?
5. Jakie typy operacji s
ą
mo
ż
liwe w trybie DMA ?
6. Na czym polega tryb ‘Single Transfer’ ?
7. Na czym polega tryb ‘Block Transfer’ ?
8. Na czym polega tryb ‘Burst-Block Transfer’ ?
•
Na czym polega tryb ‘Scatter-Gather Transfer’ ?
•
Jakie s
ą
ró
ż
nice przy wymianie danych typu: ‘Point-to-Point’ i ‘Point-to-Array’ ?
•
Jakie s
ą
ró
ż
nice przy wymianie danych typu: ‘Array-to-Point’ i ‘Array-to-Array’ ?
•
Na czym polega operacja typu ‘Ping Pong Buffering’ ?
•
Jakie układy peryferyjne mikrokontrolerów wykorzystuj
ą
tryb DMA (przykłady) ?
•
Ile kanałów DMA mo
ż
e równocze
ś
nie transmitowa
ć
dane ?
•
Czy tryb DMA sprzyja redukcji mocy w mikrokontrolerach ?