Wie umsteigen von M4 auf M7?

Gast #4935653
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
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.
Gast
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.
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.
Gast
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
Gast
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
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.
(Firma: TU Darmstadt)
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.
Gast
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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.