PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : STM32 contra ARM Cortex M3 (Arduino Due, Teensy): Performance per Arduino vs. nativ C



HaWe
22.11.2017, 11:10
hallo,
welche Vorteile bieten STM32 MCUs (welche genau: STM32F401RE oder andere?) gegenüber ARM Cortex M3 (Arduino Due, Teensy), und wie ist die STM32 Performance per Arduino IDE/API vs. nativer C-Compiler?
Gibt es wesentliche STM32-Features, die man per Arduino IDE überhaupt nicht nutzen kann?

Mxt
22.11.2017, 11:16
Hallo,

ich glaube du hast da was nicht verstanden:

STM32F3 sind Mikrocontroller mit einem ARM Cortex M3
STM32F4 sind Mikrocontroller mit einem ARM Cortex M4(F)
STM32F7 sind Mikrocontroller mit einem ARM Cortex M7

STMF0 und STMF1 ist komplizierter, kann M0, M0+ oder M3 sein.

Die Prozesserkerne lizensieren die Hersteller von ARM. Das Drumherum (IO, I2C, SPI, CAN, UART, Ethernet, ...) ist herstellerspezifisch.

STM32 in der Arduino IDE habe ich noch nicht probiert. Alles was ich bisher gesehen habe war verglichen mit dem Teensy ziemlich primitiv gemacht.

HaWe
22.11.2017, 11:22
Stimmt, ich kenne mich tatsächlich mit STM32 überhaupt nicht aus, noch ist es "terra incognita".

Also könnte man zumindest zunächst den STM32F3 betrachten:
Gibt es wesentliche STM32F3-Features, die man per Arduino IDE überhaupt nicht nutzen kann?

Gibt es inzwischen einen Teensy mit M4?
dann könnte man den M4 Teensy mit dem STM32F4 vergleichen:
Gibt es hier wesentliche STM32F4-Features, die man per Arduino IDE überhaupt nicht nutzen kann?

Wie schneiden die jew. Teensys im Vergleich zu den entsprechenden STM32s aus?
Was können sie, was nicht?
Was sind jeweils herausragende Eigenschaften (oder Mankos)?
Was genau ist "primitiv"?

Mxt
22.11.2017, 11:57
Gibt es wesentliche STM32F3-Features, die man per Arduino IDE überhaupt nicht nutzen kann?

Die Frage muss ich an andere weiterreichen. Mir ist kein STM32F3 Board bekannt, das sich mit der Arduino IDE nutzen lässt.



Gibt es inzwischen einen Teensy mit M4?

Alle Teensys mit einer 3.x Versionsnummer sind M4. Der 3.5 und 3.6 sind M4F (mit FPU für Single Precision.) Der Teensy LC ist ein Cortex M0+ (LC = low cost).



Gibt es hier wesentliche STM32F4-Features, die man per Arduino IDE überhaupt nicht nutzen kann?

Die Frage muss ich an andere weiterreichen. Mir ist kein STM32F4 Board bekannt, das sich mit der Arduino IDE nutzen lässt.



Wie schneiden die jew. Teensys im Vergleich zu den entsprechenden STM32s aus?

Was Arduino Kompatibiliät angeht, sind die Teensys besser als alle originalen 32 Bit Arduinos.

Bei der Performance sind gleichgroße Kinetis Controller (= Teensy) praktisch gleichauf mit dem entsprechenden STM32. Es gibt aber eine größere Auswahl an STM32. Im Teensy Forum hat mal einer einen umfangreichen Vergleichstest zwischen Teensy 3.6 und ST Nucleo F446 (beide M4F 180 MHz) gemacht. Da lag der STM32F446 in der Summe hauchdünn (wenige Prozent) vorne.



Was genau ist "primitiv"?

Die STM32 Sachen für Arduino, die ich bisher gesehen habe, machen irgendwelche Studenten an ihren Wochenenden. Der Teensy Core für Arduino wird von Pauls kleiner Firma geflegt, die vom Verkauf der Boards lebt. Nur die Bibliotheken machen Hobbyentwickler.

Zusammengefasst für dich würde ich folgendes sagen:

Teensy macht keinen Sinn, wenn man nicht mal ein paar Pins löten will. Auch findet man viele Dinge erst durch Studium von Quelltext und Prozessordatenblatt heraus. Für dich also ungeeignet.

STM32 macht bei deinen Ansprüchen mit Arduino derzeit keinen Sinn.

HaWe
22.11.2017, 12:03
Um STM32 mit Arduino IDE geht es hier z.B.:


https://www.youtube.com/watch?v=MLEQk73zJoU

das wäre dann ja wohl eher ein M0 oder M3.


Was Arduino Kompatibiliät angeht, sind die Teensys besser als alle originalen 32 Bit Arduinos.
war das ein Vertipper oder meintest du tatsächlich, dass Teensys "Arduino-kompatibler" sind als Arduino Zero/M0 oder Arduino Due?

PS, gibt es Teensy-Features, die sich nicht mit der Arduino-IDE nutzen lassen, im Gegensatz zu nativen ARM C++ Compilern?

Mxt
22.11.2017, 12:06
STM32F103 müsste ein M3 mit 72 MHz sein. Ist glaube ich einer der ältesten STM32.

HaWe
22.11.2017, 12:11
zu:
Was Arduino Kompatibiliät angeht, sind die Teensys besser als alle originalen 32 Bit Arduinos.
war das ein Vertipper oder meintest du tatsächlich, dass Teensys "Arduino-kompatibler" sind als Arduino Zero/M0 oder Arduino Due?

Und gibt es Teensy-Features, die sich nicht mit der Arduino-IDE nutzen lassen, im Gegensatz zu nativen ARM C++ Compilern?

Mxt
22.11.2017, 12:27
war das ein Vertipper oder meintest du tatsächlich, dass Teensys "Arduino-kompatibler" sind als Arduino Zero/M0 oder Arduino Due?

Nein, da ist der Teensy wirklich besser. Und damit meine ich nicht Dinge wie tone(), die auf dem Due einfach fehlen.

Paul hat einiges Hirnschmalz inverstiert. Beispiel, ein etwas umgebautes Blink-Beispiel


void setup() {
pinMode(13, OUTPUT);
}

void loop() {
PORTB |= 0b00100000;
delay(1000);
PORTB &= 0b11011111;
delay(1000);
}

Hier habe ich mal das digitalWrite() rausgetan und arbeite direkt mit dem Register des Atmega328.

Auf einem Uno blinkt das Programm genauso wie das normale Blinky. Für den Due z.B. lässt es sich nicht übersetzen, der hat kein PORTB Register.

Der Teensy hat auch kein solches Register. Was passiert beim Übersetzen ? Das Programm wird anstandlos übersetzt und die LED blinkt.

Der Teensy Core kann Teile eines AVR emulieren. PORTB ist beim Teensy eine Klasse, ähnlich wie Serial. Damit laufen manche Programme und Libs zumindest in einer Art "Notbetrieb".

Das nur als Beispiel. Es gibt auch andere Dinge. Paul ist anscheinend einer der größten externen Arduino Contributors. Von ihm stammt z.B. das F()-Makro. Auch wären Arduino Leonardo, Micro und Co. wohl ohne die Vorarbeit von Teensy 1.x, 2.x so nie entstanden.



Und gibt es Teensy-Features, die sich nicht mit der Arduino-IDE nutzen lassen, im Gegensatz zu nativen ARM C++ Compilern?
Also Arduino ist schon die normale Entwicklungsumgebung des Teensy. Viele Teensy Libraries sind Obermengen der Arduino Libs (Serial, I2C, usw.). D.h. sie haben alles was die Arduino Libs haben, aber noch andere Erweitungen dazu.

Wichtig ist aber zu wissen: Der Teensy wird nicht seriell programmiert, sondern als USB Raw HID. Unter Windows startet die Arduino IDE beim Programmieren den Teensy Loader (Teensy.exe), der dann die Daten überträgt. Unter Linux und Mac geht das etwas anders, mache ich zu wenig um das jetzt zusammenzukriegen. Steht aber in der Doku, Linux dürften sowieso die meisten hardcore Teensy Freaks verwenden. Insoweit kein Problem, geht halt nur anders als bei Arduino.

Teensy wird auch nicht über den Boardverwalter installiert, sondern über ein eigenes Installationsprogramm. Läuft in der Regel nur mit fünf ausgewählten Versionen der Arduino IDE.

HaWe
22.11.2017, 12:35
Danke für die ausführliche Antwort! Coole Infos!
Bleibt mir als Standard-Arduiniker noch die Frage: Wer (WTF) ist Paul? :D 8)

Mxt
22.11.2017, 12:37
Ach komm, soll ich jetzt den Thread raussuchen, wo du dich mit Paul Stoffregen im Arduino Forum gezofft hast ?

HaWe
22.11.2017, 12:40
Ich? Paul Stoffregen? :o

Mxt
22.11.2017, 12:44
https://forum.arduino.cc/index.php?topic=397480.15

?

HaWe
22.11.2017, 12:47
weiß ich jetzt nichts mit anzufangen. Demenz?
Wenn Paul == Paul Stoffregen dann weiß ich aber jetzt schon wen du meinst. Wusste aber auch nicht, dass der so Teensy-affin ist.

Mxt
22.11.2017, 12:52
Wusste aber auch nicht, dass der so Teensy-affin ist.
Er ist der Besitzer der Firma die den Teensy baut ...

HaWe
22.11.2017, 12:53
ahaaa...! wieder was gelernt.