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
"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
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.