Jak prawidłowo uruchomić program w RAM na at91SAMSXXX po ładowaniu przez RS?
Jak uruchomić załadowany program do RAM w at91SAMSXXX (bez JTaga)
From: "Piotr Kędzierski" <piotrkbydg_at_nospam_wp.pl>
Subject: Jak uruchomić załadowany program do RAM w at91SAMSXXX (bez JTaga)
Date: Wed, 1 Mar 2006 17:42:13 +0100
Witam
Zrobiłem sobie bootloader (uruchamia się po resecie z Flash) ładujący
program przez RS do procesora pod adres początku jego SRAM 0x200000 .
Moje pytanie jest w jaki sposób powinienem uruchomić ten program w RAM po
zakończeniu procedury transferu do RAMu (tak aby poprawnie się zaczął
wykonywać program skompilowany pod WinArm z włączonym RUN_MODE=RAM_RUN w
makefile - jeden z przykładowych programów typu migające diody) ?
Może ktoś już coś takiego ćwiczył (próba z : 'asm volatile ("mov
PC,#0x200000");' niestety nie działa).
Pozdrowienia
From: AK <arkkar_at_nospam_gazeta.pl>
Subject: Re: Jak =?UTF-8?B?dXJ1Y2hvbWnEhyB6YcWCYWRvd2FueSBwcm9ncmFtIGRvIFI=?=
Date: Thu, 02 Mar 2006 20:06:10 +0100
Piotr KÄdzierski napisaĹ(a):
Witam
ZrobiĹem sobie bootloader (uruchamia siÄ po resecie z Flash) ĹadujÄ
cy
program przez RS do procesora pod adres poczÄ
tku jego SRAM 0x200000 .
Moje pytanie jest w jaki sposĂłb powinienem uruchomiÄ ten program w RAM po
zakoĹczeniu procedury transferu do RAMu (tak aby poprawnie siÄ zaczÄ
Ĺ
wykonywaÄ program skompilowany pod WinArm z wĹÄ
czonym RUN_MODE=RAM_RUN w
makefile - jeden z przykĹadowych programĂłw typu migajÄ
ce diody) ?
MoĹźe ktoĹ juĹź coĹ takiego ÄwiczyĹ (prĂłba z : 'asm volatile ("mov
PC,#0x200000");' niestety nie dziaĹa).
void (*ptr)(void) = (void*)0x200000;
ptr();
Pozdr
AK
From: "Piotr Kędzierski" <piotrkbydg_at_nospam_wp.pl>
Subject: Re: Jak uruchomić załadowany program do RAM w at91SAMSXXX (bez JTaga)
Date: Sat, 4 Mar 2006 09:52:19 +0100
Niestety nie działa. Musi to być bardziej skomplikowane - główny problem to
chyba remap.
Muszę jednak sobie zmajstrować JTaga.
Dzięki
Użytkownik "AK" <arkkar_at_nospam_gazeta.pl> napisał w wiadomości
news:du7flp$i48$1_at_nospam_inews.gazeta.pl...
Piotr Kędzierski napisał(a):
Witam
Zrobiłem sobie bootloader (uruchamia się po resecie z Flash) ładujący
program przez RS do procesora pod adres początku jego SRAM 0x200000 .
Moje pytanie jest w jaki sposób powinienem uruchomić ten program w RAM po
zakończeniu procedury transferu do RAMu (tak aby poprawnie się zaczął
wykonywać program skompilowany pod WinArm z włączonym RUN_MODE=RAM_RUN w
makefile - jeden z przykładowych programów typu migające diody) ?
Może ktoś już coś takiego ćwiczył (próba z : 'asm volatile ("mov
PC,#0x200000");' niestety nie działa).
void (*ptr)(void) = (void*)0x200000;
ptr();
Pozdr
AK
From: AK <arkkar_at_nospam_gazeta.pl>
Subject: Re: Jak =?UTF-8?B?dXJ1Y2hvbWnEhyB6YcWCYWRvd2FueSBwcm9ncmFtIGRvIFI=?=
Date: Sat, 04 Mar 2006 20:31:10 +0100
Piotr KÄdzierski napisaĹ(a):
Niestety nie dziaĹa. Musi to byÄ bardziej skomplikowane - gĹĂłwny problem to
chyba remap.
MuszÄ jednak sobie zmajstrowaÄ JTaga.
A mozesz podeslac kod ?
U mnie dziala takie cos bez problemu.
Pozdr
AK
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: Jak =?ISO-8859-2?Q?uruchomi=E6_za=B3adowany_program_do?=
Date: Sun, 05 Mar 2006 00:18:44 +0100
Piotr Kędzierski napisał(a):
Niestety nie działa. Musi to być bardziej skomplikowane - główny problem to
chyba remap.
Muszę jednak sobie zmajstrować JTaga.
Zdecydowanie warto. Wtedy jest dopiero zabawa z gdb/Insight. :)
A tak poza tym olać remap. Jeżeli w skrypcie linkera ustawisz Flash od
0x100000 a RAM od 0x200000 to remap nie jest potrzebny do niczego.
Oczywiście można też przyjąć, że Flash leży od adresu 0 (domyślnie).
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.
From: "Piotr Kędzierski" <piotrkbydg_at_nospam_wp.pl>
Subject: Re: Jak uruchomić załadowany program do RAM w at91SAMSXXX (bez JTaga)
Date: Sun, 5 Mar 2006 17:52:01 +0100
A tak poza tym olać remap. Jeżeli w skrypcie linkera ustawisz Flash od
0x100000 a RAM od 0x200000 to remap nie jest potrzebny do niczego.
Oczywiście można też przyjąć, że Flash leży od adresu 0 (domyślnie).
Ale co z przerwaniami ?
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: Jak =?ISO-8859-2?Q?uruchomi=E6_za=B3adowany_program_do?=
Date: Mon, 06 Mar 2006 23:31:24 +0100
Piotr Kędzierski napisał(a):
A tak poza tym olać remap. Jeżeli w skrypcie linkera ustawisz Flash od
0x100000 a RAM od 0x200000 to remap nie jest potrzebny do niczego.
Oczywiście można też przyjąć, że Flash leży od adresu 0 (domyślnie).
Ale co z przerwaniami ?
Wektory przerwań leżą na początku pamięci więc tam trzeba umieścić skoki
do właściwych funkcji, może to się dziać oczywiście w pamięci Flash. W
czym problem?
Musisz tylko utworzyć plik asemblerowy z tymi skokami i najlepiej
tworzący oddzielną sekcję (np. ".vectors"), a w skrypcie linkera kazać
umieścić tą sekcję na początku Flasha, przed sekcjami .text i resztą.
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.