Jak uruchomić załadowany program do RAM w at91SAMSXXX (bez JTaga)



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
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




Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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



Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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.

Poprzedni Następny
Wiadomość
Spis treści
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 ?



Poprzedni Następny
Wiadomość
Spis treści
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.