Forum: Mikrocontroller und Digitale Elektronik [Artikel STM32] was ist auf Adresse 0x200001E0 versteckt?


von eagle user (Gast)


Lesenswert?

Servus!

Die Adresse 0x200001E0 wird angeblich beim Booten aus dem RAM benutzt. 
In der AN2606 wird sie aber nicht erwähnt. Ich hab' auch in mehreren 
Reference Manuals gesucht. Im Internet finde ich sie an genau 2 Stellen:
https://www.mikrocontroller.net/articles/STM32#Bootmodi
Beitrag "STM32F4 Binärfile ins RAM schieben"

Wenn man das Programm im RAM auf 0x20000000 linkt, liegt 0x1E0
 * beim H7 und F7: mitten in den Interrupt-Vektoren
 * beim L476: direkt dahinter (sehr verdächtig!)
 * bei kleineren M3 und M4: irgendwo dahinter
 * bei den M0: praktisch mitten im RAM (die haben ja sehr wenig davon)

Wenn man den eingebauten Bootloader benutzt, kann man 0x200001E0 nicht 
beschreiben, weil das mitten im Bootloader-RAM ist.

In meinem Programm würde ich gern eine struct auf eine feste Adresse 
legen und dabei stört diese 1E0. Kennt evt. jemand das Geheimnis?

von Jim M. (turboj)


Lesenswert?

eagle user schrieb:
> In meinem Programm würde ich gern eine struct auf eine feste Adresse
> legen und dabei stört diese 1E0. Kennt evt. jemand das Geheimnis

Vermutlich gilt das nur für bestimmte STM32- Familien. Liesst sich für 
mich wie eine Krücke für schlecht designte Debug-Interfaces, denn mit 
dem normalen ARM ADI kann der Debugger Code im RAM direkt ausführen.

Ich würde mal in der passenden Family Referenz nach den Boot Pins 
suchen.

Außerdem kann man die Addresse offenbar frei verwenden, sobald man 
nicht aus dem RAM bootet - und man will eigentlich immer vom Flash 
booten.

von eagle user (Gast)


Lesenswert?

Jim M. schrieb:
> Vermutlich gilt das nur für bestimmte STM32- Familien.

Wohl nur bei den ersten Mustern der allerersten F1xx oder so.

> Ich würde mal in der passenden Family Referenz nach den Boot Pins
> suchen.

Bei allen Chips, die für mich passen, finde ich nichts. Wahrscheinlich 
müsste man nicht bei ST sondern bei ARM suchen, aber die halten die 
interessanten Sachen ja unter Verschluss.

von Jim M. (turboj)


Lesenswert?

eagle user schrieb:
> Wahrscheinlich
> müsste man nicht bei ST sondern bei ARM suchen,

Nein, das mit den Boot Pins ist STM-exklusiv, auch wenn manche andere 
Hersteller ähnliche Ideen hatten.

eagle user schrieb:
> bei ARM suchen, aber die halten die
> interessanten Sachen ja unter Verschluss.

Auch nicht korrekt. Arm Silver Access gibt es gegen die Email und 
Abnicken der Lizenz. Und da ist die komplette Core- und Debug-Doku mit 
drin, wo alle Bits beschrieben sind.

Nur ist alles außerhalb von Core und Debug Einheit bei Cortex-M Sache 
des Chipherstellers. Das betrifft z.B. auch RAM, Flash, GPIO und Boot 
Pins.

von eagle user (Gast)


Lesenswert?

Inzwischen weiß ich, wer am 11.01.2013 diesen Absatz in den Artikel 
eingefügt hat[1]. Wenn @::ffff:88:67:69:218 das Rätsel jetzt bitte 
auflösen würde, das wäre toll ;)

[1] 
https://www.mikrocontroller.net/wikisoftware/index.php?title=STM32&type=revision&diff=70786&oldid=70778

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.