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


von Uli (Gast)


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)


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)


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)


Lesenswert?

ETH habe ich auch drin!

von Harald W. (wilhelms)


Lesenswert?

Uli schrieb:

> Wie umsteigen von M4 auf M7?

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

von Der Andere (Gast)


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)


Lesenswert?

HA HA!

von pegel (Gast)


Lesenswert?

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

Du kannst aber mit protestieren

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

von pegel (Gast)


Lesenswert?


von Harald W. (wilhelms)


Lesenswert?

Uli schrieb:

> HA HA!

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

von Little B. (lil-b)


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)


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)


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)


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)


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)


Lesenswert?

Gut zu wissen!

Kennt jemand noch solche Stellen?

Uli

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


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)


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)


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)


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

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.