Der Grund dafür
Zitat Zitat von HaWe Beitrag anzeigen
und sie arbeiten auf AVR, SAM, SAMD, ESP, und sogar STM (natürlich über verschiedene libs und verschiedene cores).
liegt darin, dass die Serial class nichts davon selbst tut
Zitat Zitat von HaWe Beitrag anzeigen
verwaltet den Serial Puffer , Serial events und Serial timeouts, z.B. bei Serial.readStringUntil(),
Serial ist nur ein kleines Konstrukt, das verschiedene Dinge zusammenbringt.

So ist z.B. readStringUntil gar nicht aus Serial, sondern aus Stream
https://www.arduino.cc/en/Reference/Stream
Das man es in Serial benutzen kann liegt daran, dass ein Serial objekt auch ein Stream ist, durch C++ Vererbung.

Dass ein Serial Objekt mit dem UART des konkreten Arduino sprechen kann, liegt daran, dass es auch ein HardwareSerial Objekt ist. Und unter diesen HardwareSerial Objekten liegen C, nicht C++, Funktionen aus den entsprechenden Arduino Cores, die gibt es für die verschiedene Controller.

Durch diese Architektur gibt es Dinge wie ESP32 in Arduino, weil die diese Dinge einfach mitbenutzen können, obwohl was anderes drunterliegt. Da gibt es nicht die "Super Arduino Entwickler", die das alles zusammenhalten.