Forum: Compiler & IDEs Wie umsteigen von M4 auf M7?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Uli (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe ein grösseres Projekt (ca. 750Kb bei O3 reiner Code) auf dem 
STM32F407 gemacht.
Jetzt muss ich das Projekt auf splitten (2 ähnliche Produkte) und beim 
neuen reicht mir aber die Leitung nicht mehr und ich wollte auf einen 
STM32F7 um steigen.

Jetzt kommen halt die ganzen Fragen wie man am besten mit dem Projekt 
umzieht.
Dem Compiler zu sagen das es jetzt ein M7 ist und das Linkerfile 
anzupassen ist nicht das Problem!
Aber ich nutze die SPL und nicht die HAL, das auch noch recht viel.
Für dem M7 gibt es aber die SPL nicht!

Alles auf die HAL umschreiben ist doch fast Selbstmord.

Wie würdet Ihr nun vorgehen?


VG, Uli

von Little B. (lil-b)


Bewertung
0 lesenswert
nicht lesenswert
Zwischen F4 und F7 gibt es in Hinblick auf Peripherie kaum Unterschiede. 
STM wirbt selbst damit, dass alle F4-Projekt auch auf F7 laufen, ohne 
den Code anfassen zu müssen.

Tatsächlich ist mir aber aufgefallen, dass an manchen Stellen ein DSB 
nötig wird (aufgrund der Caches) und dass der I2C neu ist. Clocktree ist 
natürlich auch anders.

SPI, UART, Timer und co sind aber identisch.

von Uli (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Was ist den DSB ?

Das die Clock und auch die RAM aufteilung anders ist macht ja nichts, 
ist ja keine unlösbare Aufgabe.

I2C brauche ich beim M7, hatte ich beim M4 aber nicht drin, da neu auch 
kein Problem.

I2S, Timer, UART, Kammerainterface & Externes RAM benutze ich.
Der Rest ist meistens nur IO gefummel.

von Uli (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ETH habe ich auch drin!

von Harald W. (wilhelms)


Bewertung
2 lesenswert
nicht lesenswert
Uli schrieb:

> Wie umsteigen von M4 auf M7?

M4-Loch aufbohren und grösseres Gewinde reinschneiden. :-)

von Der Andere (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harald W. schrieb:
> M4-Loch aufbohren und grösseres Gewinde reinschneiden. :-)

War auch mein spontaner Gedanke beim Lesen der Überschrift: 3mm größer 
aufbohren.
:-)

von Uli (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
HA HA!

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mit 'F4 auf F7' wär das nicht passiert ;)

Du kannst aber mit protestieren

https://www.ipetitions.com/petition/SPLReinstatement

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von Harald W. (wilhelms)


Bewertung
0 lesenswert
nicht lesenswert
Uli schrieb:

> HA HA!

Das war ein dezenter Hinweis darauf, möglichst
aussagekräftige Überschriftenzu benutzen!

von Little B. (lil-b)


Bewertung
0 lesenswert
nicht lesenswert
Uli schrieb:
> Was ist den DSB ?

Data Synchronisation Barrier, Assembler-Anweisung.
Alle Speicherzugriffe müssen abgeschlossen sein, bevor mit der 
Ausführung fortgefahren wird.

Mir ist beim Umstiegt von F4 auf F7 folgende zwei Zeilen Code um die 
Ohren geflogen:
1
  // set DMA as owner of descriptor
2
  stm32eth_TransmitDescriptor.TDES0.bits.Own = 1;
3
  // start DMA
4
  ETH->DMATPDR = 0xFFFFFFFF;

DMA wurde gestartet, obwohl das own-bit noch nicht gesetzt war.

von Uli (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das ich das besser hätte schreiben können habe ich doch kappiert, aber 
ändern kann ich es nicht mehr.

Wobei wenn ich ein M4 Gewinde gemeint hätte dann wäre der Post aber auch 
nicht unter Compiler gelandet. Jetzt ist es zuspät und man könnte da 
Stundenlang drüber reden, macht nur keinen Sinn.

Die stm32f7-legacy-library sieht auf den 1. Blick recht interessant aus.
Muss ich noch richtig ansehen und mit der vom STM32f4 vergleichen.


VG, Uli

von Uli (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das mit dem DSB bei Deinem DMA Beispiel werde ich hoffentlich nicht 
haben, aber ich werde darauf achten.

Wenn ich doch Probleme damit bekomme.
Wie hast Du es denn gelöst?

VG, Uli

von Little B. (lil-b)


Bewertung
0 lesenswert
nicht lesenswert
Uli schrieb:
> Wenn ich doch Probleme damit bekomme.
> Wie hast Du es denn gelöst?
1
  // set DMA as owner of descriptor
2
  stm32eth_TransmitDescriptor.TDES0.bits.Own = 1;
3
  // wait for memory transaction
4
  __DSB();
5
  // start DMA
6
  ETH->DMATPDR = 0xFFFFFFFF;

Der Fehler ist erkennbar, wenn im normalen Programmablauf nichts 
gesendet wird, jedoch beim Stepping mit dem Debugger alles super 
funktioniert.

von Fritz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Little B. schrieb:
> Tatsächlich ist mir aber aufgefallen, dass an manchen Stellen ein DSB
> nötig wird

Sicher, daß der vorher nicht auch schon nötig war? Hat jemand das ARM 
auswendig gelernt und kann das aus der Hand schütteln? :-)

von Uli (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Gut zu wissen!

Kennt jemand noch solche Stellen?

Uli

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Die DSB sollten in der HAL schon drin sein, so dass man sich damit nicht 
beschäftigen müsste.

Auf andere Pinbelegung achten F4 <> F7 sind zumindest beim LQFP100 ein 
paar Pins anders.

von Jan K. (madengineer)


Bewertung
0 lesenswert
nicht lesenswert
Mit etwas Glück gibt es von ST auch einen Migration Guide der zu deiner 
Anwendung passt.
Dieser hat mit damals bei dem Wechseln von STM32F1 zu STM32L1 sehr 
geholfen und viel Recherche erspart:

http://www.st.com/content/ccc/resource/technical/document/application_note/31/76/e6/da/6b/c7/4c/2e/DM00032987.pdf/files/DM00032987.pdf/jcr:content/translations/en.DM00032987.pdf

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Bewertung
0 lesenswert
nicht lesenswert
STM32F74x hat mit Cortex-M7 revision r0p1 das Problem, das Interrupts 
bei Single stepping dazwischenfunken. Das ist recht nervig!

STM32F76X hat in Revision A das Problem in Errata sheet Section 2.7.6: 
Ethernet erroneous data received in RMII configuration
Inzwiwschen sollte die Z Revision im Umlauf sein, das sollte man aber 
checken.

von Uli (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir diese stm32f7-legacy-library mal angetan.

1. Test mit einem kleineren Projekt war erfolgreich.
Allerdings waren die Timer alle noch falsch eingestellt.

Dann habe ich mal die HAL und diese SPL angesehen, so grosse 
unterschiede gibt es da nicht.
Manches ist sauberer, manches ist schlechter gelöst bei der HAL.

Nach den DSB Stellen suche ich mal und schaue ob das auch in dieser SPL 
drin ist.

Da ich an die SPL gewöhnt bin und diese auch recht viel benutzt habe 
versuche ich mein Glück mit dieser F7 SPL. Beim Testen werde ich dann 
schon über den einen oder anderen Fehler stolpern oder auch nicht wenn 
alles richtig ist.

Beim 144 Pinner passen die Pins.
Habe einen F746 also r0p1 Model, beim F407 hatte ich aber auch schon 
hier und da Probleme beim Debuggen. Hier erwarte ich nur das es nicht 
sonderlich schlimmer wird.

VG, Uli

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]
  • [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.