Witam. Czy komuś w winavr-rze udało się odpalić zewnętrzny Ram. Ja próbuję ale z mizernym skutkiem. Mam podłączony CS do nóżki A15 więc adres zewnętrznego ramu zaczyna się od 0x8000 co też wpisałem w pliku Make file (a właściwie program do tworzenia makefila). Nie wiem jedynie w którym miejscu w rejestrze MCUCR wpisać SRE. Wiem że musi to nastąpić przed funkcją main próbowałem ze stronki o winavrze libc kombinacji z .init3 ale też nie działa. Jeśli ktoś ma jakieś doświadczenie to byłoby super. Acha jak chcę przerzucić do zewnętrznego ramu całą zawartość tak aby nie korzystał z wewnętrznego. Pozdrawiam
atmega 128 + external ram
Jan 28, 2008
9 Replies
U¿ytkownik snipped-for-privacy@gmail.com napisa³ w wiadomo¶ci news: snipped-for-privacy@q21g2000hsa.googlegroups.com... Witam. Czy komu¶ w winavr-rze uda³o siê odpaliæ zewnêtrzny Ram. Ja
<Ciach>Przypomnij sie na priva. Poszukam.
U¿ytkownik "Pelos" snipped-for-privacy@pelos.pl napisa³ w wiadomo¶ci news:fnkgd7$p6v$ snipped-for-privacy@inews.gazeta.pl...
Dlaczego na priva - mnie te¿ to interesuje ;).
U¿ytkownik "Pelos" snipped-for-privacy@pelos.pl napisa³ w wiadomo¶ci news:fnkgd7$p6v$ snipped-for-privacy@inews.gazeta.pl...
Dlaczego na PRIV - mnie te¿ zagadnienie zewnêtrznego RAM do M128 interesuje... ;).
U¿ytkownik "Xaveri" snipped-for-privacy@poczta.fm napisa³ w wiadomo¶ci news:fnkfs5$9hi$ snipped-for-privacy@node1.news.atman.pl...
Bo jak sie nie przypomni to zapomne. Ok wrzuce na stronke :)
W artykule snipped-for-privacy@q21g2000hsa.googlegroups.com> snipped-for-privacy@gmail.com napisał:
Na pewno CS jest aktywny stanem wysokim?
U¿ytkownik snipped-for-privacy@gmail.com napisa³ w wiadomo¶ci news: snipped-for-privacy@q21g2000hsa.googlegroups.com... Witam. Czy komu¶ w winavr-rze uda³o siê odpaliæ zewnêtrzny Ram. Ja próbujê ale z mizernym skutkiem. Mam pod³±czony CS do nó¿ki A15 wiêc adres zewnêtrznego ramu zaczyna siê od 0x8000 co te¿ wpisa³em w pliku Make file (a w³a¶ciwie program do tworzenia makefila). Nie wiem jedynie w którym miejscu w rejestrze MCUCR wpisaæ SRE. Wiem ¿e musi to nast±piæ przed funkcj± main próbowa³em ze stronki o winavrze libc kombinacji z .init3 ale te¿ nie dzia³a. Je¶li kto¶ ma jakie¶ do¶wiadczenie to by³oby super. Acha jak chcê przerzuciæ do zewnêtrznego ramu ca³± zawarto¶æ tak aby nie korzysta³ z wewnêtrznego. Pozdrawiam
Proszê ustawiæ MCUCR=0x80; dla atmega128 mo¿e to byæ przeciez w main. Mo¿na adresowaæ zewn. pamiêæ od 0x1100 do 0x1100+0x8000. Pozdrawiam M.K.
Tue, 29 Jan 2008 11:45:45 +0100, na pl.misc.elektronika, MK napisał(a):
........
Jeśli włączenie ext ram będzie w main - to zostanie stracona przeprowadzana wcześniej inicjalizacja zmiennych oraz domyślne zerowanie. Rzeczywiście najlepiej w init3 ( te sekcje startowe właśnie do takich celów są ). Można to zrobić dodatkowym pliczkiem asm albo bezpośrednio w C, deklarując i definiując funkcję :
void EnableExtRam(void) __attribute__ ((naked)) __attribute__ ((section (".init3")));
void EnableExtRam(void) { XMCRA = 0; XMCRB = _BV(XMBK); MCUCR = _BV(SRE); }
Funkcji tej nigdzie jawnie nie wywołujemy - sama definicja powoduje umieszczenie kodu w odpowiednim miejscu - zaraz za wektorami przerwań a przed załadowaniem zmiennych inicjalizowanych:
.............................
0000008c <__ctors_end>: 8c: 11 24 eor r1, r1 8e: 1f be out 0x3f, r1 ; 63 90: cf ef ldi r28, 0xFF ; 255 92: d0 e1 ldi r29, 0x10 ; 16 94: de bf out 0x3e, r29 ; 62 96: cd bf out 0x3d, r28 ; 61 00000098 <EnableExtRam>:void EnableExtRam(void) { 98: 10 92 6d 00 sts 0x006D, r1 XMCRA = 0; XMCRB = _BV(XMBK); 9c: 80 e8 ldi r24, 0x80 ; 128 9e: 80 93 6c 00 sts 0x006C, r24 MCUCR = _BV(SRE); a2: 85 bf out 0x35, r24 ; 53
000000a4 <__do_copy_data>: a4: 11 e0 ldi r17, 0x01 ; 1 a6: a0 e0 ldi r26, 0x00 ; 0 a8: b1 e0 ldi r27, 0x01 ; 1 ........................................................................To zapewni fizyczne włączenie ext ram odpowiednio wcześniej, natomiast dyrektywa linkera :
-Tdata=0x801100 umieści tam wszystkie zmienne.
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required