Forum: Mikrocontroller und Digitale Elektronik ARM-Programm läuft nicht aus Flash


von Marius S. (lupin) Benutzerseite


Lesenswert?

Ich habe mal mein verstaubtes AT91SAM7S256 board und den Wiggler raus 
gekramt und CrossWorks for ARM 1.6 installiert.

Hab den Code vom S65 display mal ganz schnell und dreckig konvertiert, 
kompiliert und lief auch soweit.

Aber obwohl ich die build configuration auf "ARM Flash Release" gestellt 
habe ist nach einem Reset das Programm weg.

Sollte es nicht in den Flash geschrieben werden? Die Meldungen von 
Crossworks besagen auch, dass sowohl in 0x100000 und 0x200000 
geschrieben wird.

Leider fällt es mir etwas schwer nachzuvollziehen, was da ausserhalb der 
Benutzerebene abläuft (komische bootscripte etc).

Ich hoffe ihr habt nen Tipp :-)

von Robert T. (robertteufel)


Lesenswert?

Mein erster Gedanke waere mit derselben Prozedur ein "Blinky" zum laufen 
zu bekommen, natuerlich aus dem Flash. Wenn das funktioniert, dann ist 
schon mal gewaehrleistet, dass die Vorgehensweisse OK ist. Der Verdacht 
geht dahin, dass in Wirklichkeit das Flash nicht programmiert wurde, 
sondern was lief, lief aus dem SRAM, aber wie gesagt, nur so ein 
Verdacht.

Robert Teufel
Partner in Silicon Valley gesucht? Ich stehe gerne zur Verfuegung.
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Meine ARM/Cortex Webseite: http://www.lpc2000.com

von Marius S. (lupin) Benutzerseite


Lesenswert?

Danke Robert für den Tipp. In der Richtung vermute ich auch den Fehler, 
kann aber nicht genau sagen ob das Programm aus SRAM oder Flash läuft 
(es wurden aber zwei Bereiche Programmiert...).

Ich werde mich heute abend wieder damit beschäftigen. Wie gesagt, von 
den angezeigten Adressen her müsste auch das Flash programmiert worden 
sein.

Mit OpenOCD konnte ich schonmal ein "Blinky" rein programmieren. Das 
alte "Blinky" wurde anscheinend überschrieben, denn wenn ich jetzt einen 
Reset ausführe passiert nix mehr.

Vielleicht liegt es auch daran, dass nach der Programmierung das RAM 
oder irgendwelche Register irgendwie initialisiert sind und das in 
meinem Programm nach einem Reset nicht mehr passiert.

Wäre super wenn sich jemand melden könnte der mit Crossworks + AT91S 
etwas mehr Erfahrungen hat.

von Nobbie (Gast)


Lesenswert?

Hallo Robert,

beim CrossWorks mußt du, glaube ich, noch "STARTUP_FROM_RESET" unter den 
Preprocessor Definitions machen.

In dem bootscript sind alle möglichen defines definiert

gruss
nobbie

von Marius S. (lupin) Benutzerseite


Lesenswert?

Danke Nobbie, das war's. Das hätte ich auch selbst raus finden können - 
hab mir die Dateien gar nicht so genau angeschaut (dachte mir "daran 
änderst du lieber nichts, sonst machst was kaputt") ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.