FAQ | Points | Add... | Recent posts | Search | Register | Log in


[Xmega][GCC]Jak używać DMA i innych dobrodziejstw w Xmega.


Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> [Xmega][GCC]Jak używać DMA i innych dobrodziejstw w Xmega.
Author
Message
avr_elektronik
Poziom 13
Poziom 13


Joined: 07 Jun 2005
Posts: 146
Location: w-wa

Post#1 Post from the author of the topic 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

Google Adsense


Post# Post from the author of the topic 27 Oct 2009 20:07   





Back to top
   
JarekC
Poziom 16
Poziom 16


Joined: 09 Jan 2003
Posts: 290
Location: "-"

Post#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
Poziom 24


Joined: 12 Aug 2009
Posts: 4307
Location: Katowice

Post#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

Google Adsense


Post# 27 Oct 2009 21:46   





Back to top
   
avr_elektronik
Poziom 13
Poziom 13


Joined: 07 Jun 2005
Posts: 146
Location: w-wa

Post#4 Post from the author of the topic 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
Poziom 25


Joined: 12 Dec 2005
Posts: 6723
Location: Zawiercie

Post#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
Poziom 13


Joined: 07 Jun 2005
Posts: 146
Location: w-wa

Post#6 Post from the author of the topic 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
Poziom 24


Joined: 12 Aug 2009
Posts: 4307
Location: Katowice

Post#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

Google Adsense


Post# 28 Oct 2009 09:50   





Back to top
   
atom1477
Poziom 25
Poziom 25


Joined: 14 Jul 2005
Posts: 6360

Post#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
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> [Xmega][GCC]Jak używać DMA i innych dobrodziejstw w Xmega.
Page 1 of 1
Similar topics
XMEGA + zewnętrzny ADC i DMA (38)
Programator do mikrokontrolerów atmel XMega (31)
Xmega ADC - opis rejestrów (38)
Xmega - zewnętrzny oscylator kwarcowy (18)
Avr Dragon a procesory Xmega (13)
XMEGA + sprzętowe SPI + FAT FS (4)
Serie uszkodzonych mikroprocesorów XMega? (9)
Gdzie niedrogo można kupić XMega? (5)
Xmega Isr język C events system (6)
AVR XMEGA - nowe zabawki z oferty Atmela (80)

Page generation time: 0.071 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed