| Author |
Message
|
avr_elektronik Poziom 13

Joined: 07 Jun 2005 Posts: 146 Location: w-wa
|
#1
27 Oct 2009 20:07 [Xmega][GCC]Jak używać DMA i innych dobrodziejstw w Xmega. |
|
|
|
Witam,
mam zamiar zastąpić w moich projektach µP MegaAVR nowymi AtXMega.
Szukałem informacji na temat kontrolera DMA w procesorach Xmega, ale niestety jest bardzo mało informacji na ten temat. I tu moje pytanie czy ktoś może mi wyjaśnić jak uruchomić DMA pod kompilatorem AVR-GCC? Na marginesie dodam, że wiem co to jest DMA i wiem jaka jest zasada działania, chodzi mi raczej o praktyczne zastosowanie:)
|
|
| Back to top |
|
 |
Google

|
#
27 Oct 2009 20:07 |
|
|
|
|
|
| Back to top |
|
 |
JarekC Poziom 16

Joined: 09 Jan 2003 Posts: 290 Location: "-"
|
#2
27 Oct 2009 20:18 Re: [Xmega][GCC]Jak używać DMA i innych dobrodziejstw w Xmeg |
|
|
|
A jaki masz powód aby zmieniać Mega na XMega?
DMA to "Direct Memory Access."
Czy twoja aplikacja wymaga operacji na dużych blokach pamięci lub obróbki strumienia danych?
Pozdrawiam
JarekC
|
|
| Back to top |
|
 |
tmf Poziom 24

Joined: 12 Aug 2009 Posts: 4307 Location: Katowice
|
#3
27 Oct 2009 21:46 Re: [Xmega][GCC]Jak używać DMA i innych dobrodziejstw w Xmeg |
|
|
|
Wszystko jest w notach katalogowych procesorow XMega, napisz z czym konkretnie masz problem to postaram sie wyjasnic. Co do wsparcia w gcc - to nie ma zadnego, jedyne co mozesz oczekiwac to definicje rejestrow i struktur danych. Ale zadnych gotowych rozwiazan w AVR-libc nie ma i sie nie spodziewaj. Tak samo jak np. nie ma funkcji obslugujacych timery.
JarekC: korzysci ze stosowania DMA trudno przecenic. Chociazby wygodna obsluga UARTow, bez angazowania procesora - co normalnie jest trudne bo AVRy nie maja FIFO na UARTach - przygotowywujesz porcje danych do wyslania, ustawiasz DMA i zapominasz o sprawie. To samo praktycznie z kazdym interfejsem - I2C, SPI. Chcesz zbierac probki z ADC do bufora - ustawiasz DMA na ADC i juz, czekaz tylko na koniec akwizycji, nawet nie czekasz bo dostaniesz przerwanie.
Masz LCD bez sterownika i twoj procek 90% czasu spedza w petli wysylajac kolejne linie na jakis port - ustawiasz DMA i juz, jedyne co robisz to co linie generujesz dodatkowe sygnaly sterujace do LCD. Obciazenie z 90% spadlo do 9 :)
|
|
| Back to top |
|
 |
Google

|
#
27 Oct 2009 21:46 |
|
|
|
|
|
| Back to top |
|
 |
avr_elektronik Poziom 13

Joined: 07 Jun 2005 Posts: 146 Location: w-wa
|
#4
27 Oct 2009 23:55 Re: [Xmega][GCC]Jak używać DMA i innych dobrodziejstw w Xmeg |
|
|
|
JarekC <- w zasadzie nie jest mi potrzebna tak "spora" moc obliczeniowa jaką udostępnia XMega, ale porównując cenę AtMega128 i AtXMega128X3 to wole wybrać XMega i powoli się z nim oswajać:). Druga sprawa to, że np. AtMega128 nie jest zalecany do nowych konstrukcji.
tmf <- dzięki za obszerny opis. Póki co badam temat na sucho:). Z tego co napisałeś wnioskuję, że masz doświadczenie z µP XMega, więc jeśli to nie problem doprecyzuj mi zasadę działania DMA na XMega. Dokładnie mam na myśli samo kopiowanie danych, jak się to odbywa, czy µP jest wtedy wolny tzn. może wykonywać inne instrukcje (to chyba była by wielowątkowość, a nie DMA)?
Napisałeś, że DMA bardzo dobrze współgra z portem szeregowym lub LCD, czyli jak rozumiem kontroler DMA kopiuje z adresu źródłowego bloki 1 (oczywiście mogą być większe) bajtowe do ... właśnie gdzie? Bo jeśli kopiuje dane do układów peryferyjnych to poza wysyłaniem danych muszę kontrolować inne rejestry lub linie sterujące (np. w porcie szeregowym muszę sprawdzić czy bufor jest pusty).
Coś mi się zdaję, że się zapętliłem...:)
|
|
| Back to top |
|
 |
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 6723 Location: Zawiercie
|
#5
28 Oct 2009 07:28 Re: [Xmega][GCC]Jak używać DMA i innych dobrodziejstw w Xmeg |
|
|
|
| avr_elektronik wrote: |
| porównując cenę AtMega128 i AtXMega128X3 to wole wybrać XMega i powoli się z nim oswajać:). |
Damn, obydwa strasznie drogie jak na kiepską moc i możliwości jakie mają. Jak zwykle Cortexy tańsze.
| Quote: |
| Coś mi się zdaję, że się zapętliłem...:) |
Mnie się coś zdaję, że nie przeczytałeś manuala i rozdziału o DMA, tam przecież WSZYSTKO jest wyjaśnione.
4\/3!!
|
|
| Back to top |
|
 |
avr_elektronik Poziom 13

Joined: 07 Jun 2005 Posts: 146 Location: w-wa
|
#6
28 Oct 2009 08:18 Re: [Xmega][GCC]Jak używać DMA i innych dobrodziejstw w Xmeg |
|
|
|
Freddie Chopin -> pewnie masz rację w temacie innych µP, ale dla mnie cena 22zł za AtXmega128X3 jest przystępna.
Czytałem dokument Atmela AVR1304 i jest tam napisane, że kontroler DMA nie blokuje procesora.
| Quote: |
The XMEGATM Direct Memory Access Controller (DMAC) is a highly flexible four-
channel DMA Controller capable of transferring data between memories and
peripherals with minimal CPU intervention. While the CPU spends time in low-
power sleep modes or performs other tasks, the XMEGA DMAC offloads the CPU
by taking care of mere data copying from one area to another.
|
OK. Wszystko jest jasne, ale nadal nie wiem jak to działa.
Jak rozumiem inicjuje transakcję z pomocą DMA i zapominam o całej sprawie, ale tak jak wspomniałem co ze sterowaniem (np. LCD)?
|
|
| Back to top |
|
 |
tmf Poziom 24

Joined: 12 Aug 2009 Posts: 4307 Location: Katowice
|
#7
28 Oct 2009 09:50 Re: [Xmega][GCC]Jak używać DMA i innych dobrodziejstw w Xmeg |
|
|
|
Za pomoca DMA mozesz kopiowac z pamieci do pamieci, z pamieci do IO lub odwrotnie. Procesor w tym czasie moze wykonywac inne instrukcje. Jesli to bedzie np. TWI lub UART to zasadnioczo nic nie musisz robic. Natomiast LCD podalem jako przyklad, kiedy DMA znacznie odciaza procesor, ale nie moze go wyreczyc, bo. np. co linie musisz generowac impulsy LP, lub FRM. Tak wiec w DMA w tym wypadku programujesz transfer jednej linii, jak sie zakonczy to wywolywane jest przerwanie w obsludze ktorego wystawiasz reszte impulsow sterujacych i ponownie ustawiasz transfer DMA na kolejna linie. Ale dzieki temu musisz wykonac tylko pare instrukcji, a nie programowo przeladowywac tysiace bajtow.
|
|
| Back to top |
|
 |
Google

|
#
28 Oct 2009 09:50 |
|
|
|
|
|
| Back to top |
|
 |
atom1477 Poziom 25

Joined: 14 Jul 2005 Posts: 6360
|
#8
28 Oct 2009 10:33 Re: [Xmega][GCC]Jak używać DMA i innych dobrodziejstw w Xmeg |
|
|
|
Tylko że DMA będzie pakowało dane jak najszybciej da radę, a LCD raczej wymaga wolniejszego sterowania. No chyba że to LCD z pamięcią jednej linii.
PS. I ja ostatnio wolę ARMy niż AVRy ;p Co takiego ma ten XMEGA albo AVR32 czego nie ma ARM? Czyli ukłon w stronę Freddiego Chopina :D
|
|
| Back to top |
|
 |