mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT91SAM7 - FLASH vs. SRAM


Autor: Peter Pippinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo NG,

nachdem gestern meine LED endlich munter vor sich hingeblinkt hat, fehlt 
mir jetzt, so denke ich noch eine Sache, damit ich rundum zufrieden bin.

Zum Entwickeln verwende ich die IAR Workbench 4.0.

Meine Vorgehensweise bis jetzt:
1. Programm erstellen
2. Programm assemblieren / linken
3. Flashspeicher löschen (ca. 10 Sek.)
4. Reset am Board
5. erzeugten .bin-File mittels USB-Kabel und SAM-BA hochladen.
6. Ergebnis anschauen.

Was mich jetzt ziemlich nervt, ist dass ich den Flashspeicher ständing 
löschen muss. Das dauert zum Einen und zum Anderen ist die Lebensdauer 
des Flashs betroffen.

Ich würde also gerne die .bin-Files ins RAM hochladen.
Das Parallelport-JTAG - Kabel hier aus dem Shop hätte ich auch noch.
Gibts da in Verbindung mit der IAR Workbench eine Lösung?
Oder muss ich da anders vorgehen (z.B. open-ocd...).

MfG
Peter

Autor: Greg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

ich benutze zwar keine IAR Workbench, jedoch den SAM-BA.
Bei ihm kannst du angeben, dass er ins SRAM schreiben soll.
Ich fange hier meist bei Adresse 0x202000 an.

Allerdings musst du dem Linker die Startadresse mitgeben.
Default (für FLASH) ist 0x0 --> auf 0x202000 ändern.

Neu Linken und los geht´s!

Gruß,
Greg

Autor: Peter Pippinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Greg,

Welches Board stellst Du dann bei der Verbindung über SAM-BA ein?
Wird das Programm dann automatisch nach dem Hochladen ausgeführt?
Nach einem Reset müsste es doch dann weg sein, oder?

MfG
Peter

Autor: Greg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

welches Board du einstellst ist ziemlich egal.
Ich habe ein selbstentwickeltes Board dran. Ich stelle zwar meist etwas 
ein, was mit dem jeweiligen Chip übereinstimmt (z.B. xxx256xxx).

Nach erfolgreicher Übertragung ins SRAM startest du das Programm
mit    go <adr>
z.B.   go 0x202000

Nach dem Reset steht dir SAM-BA wieder zur Verfügung.

Gruß,
Greg.

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@peter,
das Parallelport-JTAG - Kabel wird von der workbench unterstützt.
unter project -> options -> debugger -> driver stellst du "macraigor" 
ein.
unter project -> options -> debugger -> macraigor -> ocd interface 
device stellst du "Wiggler" ein und das ganze sollte laufen.

du kannst dann über die verschiedenen configurations entscheiden ob der 
code nur ins ram geladen wird (was deutlicher schneller geht) oder ob in 
das flash programmiert werden soll (damit der code auch spannungslo 
machen noch vorhanden ist).

außerdem steht dir damit auch der c-spy debugger zur verfügung.


gruss
gerhard

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@greg

Habe bisher auch immer geflasht.
Das mit dem Ausführen aus dem RAM versuche ich gerade auch. Klappt aber 
nicht.
Im Makefile RUN_MODE=RAM_RUN angegeben. Sollte bei 0x200000 anfangen.
Lade ich aber das File in SAMBA hoch, werden alle Speicherzellen nur 
noch mit 0 angezeigt. Beim "go" an Adresse 0x200000 kommt nur eine 
Meldung "0".
Gebe ich das Programm mal testweise als HEXfile aus und schaue mir die 
Adressen an, startet der Code bei 0x100000. Also definitiv falsch. Es 
ist mir unmöglich, einen Code zu erzeugen, der bei 0x200000 beginnt.
Benutze WinARM. Hast Du eine Idee, wo ich da suchen könnte?

Joachim

Autor: Greg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Joachim

Mit WinARM habe ich keine Erfahrung - ich benutze den gcc.

Es müsste einen Linker-Script geben (i.d.R. Endung ".ld").
Dort steht drin, wo dein Speicher anfängt und wie groß er ist.
Auch wird dort festgehalten, in welcher Reihenfolge die Programmsegmente 
"zusammengeklebt" werden (glue-section).

Meist gibt es drei Speicherblöcke:
- das eigentliche Programm
- Daten (z.B. deine Variablen)
- Stack

Ich lege meine RAM-Programme auf 0x202000, da ich irgendwann gelesen 
hatte, dass SAM-BA den unteren Speicherbereich für sich benutzt.
Es muss ja schließlich auch deine Eingaben irgendwo ablegen...

Gruß,
Greg.

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.