Forum: Mikrocontroller und Digitale Elektronik ARM ARM7 STR7 Programm im RAM ausführen


von Michael Multerer (Gast)


Lesenswert?

Hallo zusammen,

ich bastle gerade an einem Projekt für den STR712. Als 
Entwicklungsumgebung habe ich die Anglia Idealist.
Derzeit läuft der Controller mit 48 MHz aus dem Flash, was ja laut ST im 
Burst Mode bis 50 MHz möglich ist. Leider ist mir das doch etwas zu 
langsam, ich würde gerne die vollen 66 MHz des Controllers ausnutzen. 
Dann müßte ich das Programm aus dem RAM ausführen. Nur habe ich keine 
Ahnung, wie ich das machen muß? Kann mir jemand Infos geben, wie ich da 
vorgehen muß?

Ach ja: Beim Linker einfach auf ram71x.ld umstellen klappt nicht. Das 
bringt beim Flashen "Bad File Adress".

Servus
Michael

von TheMason (Gast)


Lesenswert?

"Ach ja: Beim Linker einfach auf ram71x.ld umstellen klappt nicht. Das
bringt beim Flashen "Bad File Adress". "

ram kannst du nicht flashen ...
du kannst daten aus dem flash ins ram übertragen (memcpy, o.ä.), aber 
nicht direkt das ram flashen (macht ja auch keinen sinn, weil dein ram 
nach abschalten der spannung gelöscht wird, und nach dem anlegen der 
spannung nicht initialisiert ist, im gegensatz zu flash, der seinen 
inhalt ja nicht verliert). ob es einen umweg gäbe (sprich das die 
startup-routine, c vorrausgesetzt, daten automatisch aus dem flash ins 
ram kopiert) der vom compiler bzw. deiner entwicklungsumgebung 
unterstützt wird weiß ich allerdings nicht ...

gruß
rene

von A.K. (Gast)


Lesenswert?

Code im RAM ist grad so wie initialisierte Daten. Die werden ja für RAM 
gelinkt, im ROM plaziert und vom Startup ins RAM kopiert. Je nach 
Entwicklungsumgebung/Linker kann das also völlig automatisch ablaufen.

von Michael Multerer (Gast)


Lesenswert?

Daß das RAM flüchtig ist und ich den Code zu jedem Programmstart aus dem 
Flash ins RAM kopieren muß, ist mir klar. Wie ich das aber im 
Startup-Code oder sonstwo veranlasse, das weiß ich leider nicht. Rene 
hat übrigens Recht, es geht um C, genauer um gcc mit der Libary von ST.
Vielleicht kennt sich ja jemand mit der Anglia Idealist 
Entwicklungsumgebung aus und kann mir sagen, wie ich vorgehen muß?

Servus
Michael

von A.K. (Gast)


Lesenswert?

Beim GCC sollte es schon ausreichen, die betreffenden Funktionen in die 
gleiche section zu packen wie initialisierte Daten (irgendein attribute 
wird das sein).

Wenn du alles ins RAM packen willst, alle Funktionen inklusive Library, 
dann geht das natürlich nicht. Dann musst du das Linker-Script anpassen 
und das ist dann allerdings von der Entwcklungsumgebung abhängig. Und 
wenn du Pech hast kennt die hier niemand.

von A.K. (Gast)


Lesenswert?

PS: Wenn code & data sections nicht innerhalb von 64MB liegen (z.B. bei 
Philips LPC2000), dann sind ausserdem longcalls fällig, sonst hagelt es 
Linker-Fehler.

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.