www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT91SAM7A3 - Wie bekomme ich ein Programm da drauf?


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich versuche schon seit Ewigkeiten auf ein AT91SAM7A3-EK irgendwie Code 
zu bekommen.
Ich bekomme nicht mal die Beispiele von atmel drauf, von eigenen ganz zu 
schweigen.
Die Suche hier im Forum bringt mich auch nicht weiter.

Wenn ich Beispielsweise das PWM-Beispiel von Atmel in IAR lade und dann 
per Debugger ausführe passiert rein gar nichts. Laut der Beschreibung 
sollten LEDs auf dem Board pulsieren. Da das aber nicht passiert kann 
ich nicht mal nachvollziehen ob das Programm überhaupt auf dem mC läuft.

Ich habe versucht die Dateien sowohl per USB als auch per SAM-ICE mit 
SAM-BA auf das Teil zu laden.
Dabei habe ich dann wieder das Problem dass die *.bin Dateien die mir 
der IAR Compiler baut alle genau 1MB groß sind und SAM-BA mir das ganze 
mit einer "Memory Overflow"-Meldung quittiert.

WIE lade ich denn die Beispielprogramm WO hin? Flash? SRAM?

Kann mir jemand ne Starthilfe geben, wie ich eines der Bespiele auf den 
Controller bekomme?
Bin hier am Verzweifeln. Bisher hat mich kein einziges Dokument weiter 
gebracht.

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du solltest die Programme in den Flash laden, und zwar den externen 
Flash. Dazu musst du im allgemeinen wissen, an welcher Adresse der Flash 
eingeblendet wird. Das siehst du im Linker File oder startup Code deines 
Projektes.

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da dein bin File 1MB groß ist, bin ich jetzt mal davon ausgegangen, dass 
du externes Flash hast. Hast du externes oder willst du nur den internen 
Flash benutzen?

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ... also ich hab nochmal nachgeschaut.
Wenn ich die Beispiele runterlade von ATMEL, dann sind die kompilierten 
bin Dateien da schon dabei.
Wenn ich eine dieser Dateien nehme und in den Flash schreibe klappt 
alles Wunderbar.
Nur wenn ich das Projekt in IAR nochmal neu bauen lasse ist die Datei 
dann viel zu groß.
Liegt das irgenwie an den Einstellungen von IAR?
Hab nichts gefunden.

Kann jemand damit was anfangen?

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja es liegt an den Einstellungen, nämlich der Flash Größe und der Flash 
Adresse. Überprüf die mal.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja, das sollte ja alles in der icf datei stehen oder?
/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__   = 0x100000;
define symbol __ICFEDIT_region_ROM_end__     = 0x13FFFF;
define symbol __ICFEDIT_region_RAM_start__   = 0x200000;
define symbol __ICFEDIT_region_RAM_end__     = 0x207FFF;
/*-Sizes-*/
define symbol __ICFEDIT_size_startup__  = 0x100;
define symbol __ICFEDIT_size_vectors__  = 0x100;
define symbol __ICFEDIT_size_cstack__   = 0x1000;
define symbol __ICFEDIT_size_svcstack__ = 0x60;
define symbol __ICFEDIT_size_irqstack__ = 0x60;
define symbol __ICFEDIT_size_heap__     = 0x0;
/*-Exports-*/
export symbol __ICFEDIT_region_ROM_start__;
export symbol __ICFEDIT_region_ROM_end__;
export symbol __ICFEDIT_region_RAM_start__;
export symbol __ICFEDIT_region_RAM_end__;
export symbol __ICFEDIT_size_startup__;
export symbol __ICFEDIT_size_vectors__;
export symbol __ICFEDIT_size_cstack__;
export symbol __ICFEDIT_size_svcstack__;
export symbol __ICFEDIT_size_irqstack__;
export symbol __ICFEDIT_size_heap__;
/**** End of ICF editor section. ###ICF###*/

define memory mem with size = 4G;
define region STA_region = mem:[from __ICFEDIT_region_ROM_start__ size __ICFEDIT_size_startup__];
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__+__ICFEDIT_size_startup__ to __ICFEDIT_region_ROM_end__];
define region VEC_region = mem:[from __ICFEDIT_region_RAM_start__ size __ICFEDIT_size_vectors__];
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__+__ICFEDIT_size_vectors__ to __ICFEDIT_region_RAM_end__];

define block CSTACK    with alignment = 4, size = __ICFEDIT_size_cstack__   { };
define block SVC_STACK with alignment = 4, size = __ICFEDIT_size_svcstack__ { };
define block IRQ_STACK with alignment = 4, size = __ICFEDIT_size_irqstack__ { };
define block HEAP      with alignment = 4, size = __ICFEDIT_size_heap__     { };

initialize by copy { readwrite };
initialize by copy { section .vectors };
do not initialize  { section .noinit };

place in STA_region { section .cstartup };
place in ROM_region { readonly };
place in VEC_region { section .vectors };
place in RAM_region { readwrite, block IRQ_STACK, block SVC_STACK, block CSTACK, block HEAP };



Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
define symbol _ICFEDIT_region_ROM_start_   = 0x100000;
define symbol _ICFEDIT_region_ROM_end_     = 0x13FFFF;

wenn man das mal voneinander abzieht und umrechnet kommt man doch bei 
256kB raus oder?

Das stimmt mit dem datenblatt überein.

Autor: Manne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das Problem hatte ich auch schon, mit der neuen Embedded Workbench 
5.0 Kickstart Edition von IAR ist es allerdings bei den Beispiel nicht 
mehr aufgetreten.

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
in den beispielen der software packages v1.4 war ein fehler.
das modul board_cstartup_iar.s muss geändert werden:
die folgende anweisung ist hinzuzufügen:

__iar_init$$done:   // neue anweisung

resetVector:

wie schon erwähnt sind die iar beispiele korrekt.


gruss
gerhard

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.