ESP32-S2, WiFi for a Dollar
Mit dem ESP32-S2 erweitert Espressif seine Modellpalette
Von Stefan Tauschek
We're sorry we don't have an English version of this article
Am 22. Juli 2019 wurden erstmalig die Aktien der Firma Espressif unter dem Ticker 688018 zu einem Ausgabepreis von 62,60 Yuan (etwa US$ 9,10) am neu geschaffenen STAR-Segment der Börse Shanghai notiert. Damit setzte sich die erstaunliche Erfolgsgeschichte eines jungen chinesischen Unternehmens fort, das erst 10 Jahre zuvor von Teo Swee Ann[1] gegründet wurde und mit seinen IoT System-on-Chips die Branche weltweit durcheinander gewirbelt hat. Als fast schon legendär ist dabei der ESP8266 zu bezeichnen, der in der Maker-Community großen Zuspruch fand und den Erfolg von Espressif zweifelsohne mitbegründete.
Ähnlich dem Raspberry Pi in der „Schwergewichtsklasse“ überzeugten bei den Espressif SoCs der niedrige Preis im Bereich von Taschengeld, spannende Referenzdesigns aber vor allem auch die Philosophie der Open Community, die ihre Entwicklungsprojekte weltweit kostenlos zur Verfügung stellt.
Wurde der ESP8266 teilweise noch als Bastelkram belächelt, folgte dann mit dem Zweikern-SoC ESP32 im September 2016[2] ein wesentlich leistungsfähigerer Baustein, der nun in der Lage war, komplexe Aufgabenstellungen im Bereich des IoTs autonom zu bewältigen. Unterstützt mit einem umfangreichen Software Repository einschließlich eigenem RTOS fand der ESP32, eingesetzt als direkt implementierter Chip oder in Form zertifizierter Module, Eingang in industrielle Anwendungen. Im Januar 2018 konnte Espressif die Auslieferung seines 100 Millionsten SoCs verkünden.[3]
Natürlich hat Espressif längst weitere Bausteine auf seiner Roadmap doch muss taktisch klug überlegt werden, welche Funktionen realisiert werden können, ohne finanzielle und technische Ressourcen des Unternehmens über Gebühr zu strapazieren. Unter dieser Prämisse ist der ESP32-S2 zu verstehen, der gerade mit einer Pressemeldung[4] vorgestellt wurde und zunächst einmal wenig spektakulär klingt: Nur ein Prozessorkern statt zwei, Bluetooth entfällt und eine integrierte Speicherausstattung, die nur noch spartanisch zu nennen ist.
Man sollte aber einen genaueren Blick in das Innenleben des SoCs werfen, die Innovationen sind zwar nicht „ground breaking“ aber pragmatisch und verhelfen dem Espressif-Portfolio zu einer vernünftigen Erweiterung mit dem Potential, neue Anwendungen zu erobern.
Der neue Chip ESP32-S2 alias "Chip 7"
Augenfälligste Veränderung ist das mit 7x7mm größere QFN-Gehäuse, das jetzt Platz für 56 Anschlüsse bietet und damit immerhin 43 GPI/Os (gegenüber 34 beim ESP32-DxWD) realisiert. Die GPI/Os sind über eine programmierbare Matrix mit internen Funktionsbereichen verschaltet, wobei manche Funktionen (wie etwa UARTs) beliebig zugeordnet werden können, andere (wie etwa ADC- oder die Touch-Anschlüsse) festgelegt sind. Da es auch bei 56 GPI/Os weniger physikalische Pins als interne Signale gibt, konkurrieren die zur Verfügung stehenden Funktionen um Hardwareanschlüsse nach außen und dies erfordert entsprechende Abwägungen bei der Anwendungsentwicklung.
14 der GPI/Os sind dem neuen kapazitiven Touch-Sensor-Interface zugeordnet, das störungsarme und sogar wasserfeste Berühreingaben erlaubt und für Geräte wie POS-Terminals oder HMI-Devices vorgesehen ist. Daneben gibt es zwei 12-bit ADCs, zwei 8-bit DACs, vier SPI-, zwei UART-, zwei I2C-Schnittstellen und eine IR-Empfängerschnittstelle. Neu ist das USB-OTG-Interface mit Full-Speed Unterstützung (12 Mbit/s). Zwei LCD-Controller mit 8 bit bzw. bis zu 16bit und ein DVP-Kameraport können alternativ zu SPI- bzw. I2S Hardwareressourcen aktiviert werden.
Neben den mehr oder weniger frei verschaltbaren GPI/O-Pins gibt es natürlich auch fest verdrahtete Pins wie Spannungsersorgungs- und Quarzanschlüsse oder das JTAG-Interface.
Der neue Xtensa LX7 Kern
Während in vergleichbaren Mikrocontrollern fast ausnahmslos ARM-Architekturen verbaut sind, hat Espressif von Anfang an auf Tensilica[5]-Cores gesetzt. So wurde im ESP8266 der mit 160 MHz getaktete xtensa LX106 eingesetzt und im ESP32-DxWD der Doppelkern-xtensa LX6, getaktet mit maximal 240 MHz. Im neuen ESP32-S2 nun ging man wieder auf eine Single-Core Architektur zurück, integrierte aber den neueren und etwas leistungsfähigeren LX7-Kern. Damit verliert man natürlich die Möglichkeit echt nebenläufiger Prozesse[6], profitiert aber immerhin von den Verbesserungen im LX7-Design.
Tensilica existiert nicht mehr als Unternehmen, da es 2013 von Cadence Design Systems übernommen wurde, benennt aber weiterhin die ursprüngliche Prozessorarchitektur, die heute von Cadence IP gepflegt und weiterentwickelt wird.
In die neue LX7[7] Prozessorplattform eingeführt wurde auch der aktuelle „Vision P6“-DSP für die Bild- und CNN-Verarbeitung sowie der neuen „Fusion G3“ DSP für allgemeine Fest- und Gleitkommaanwendungen. Man darf gespannt sein, wie weit Espressif das alles implementiert hat und mit einem neuen Repository (ESP-IDF 4.0) unterstützt. Gerade die beschleunigte Bild- und CNN-Verarbeitung liefert da einige Hinweise in Bezug auf Referenzsysteme wie ESP-EYE und ESP-WHO.
Neben weiteren Innovationen zur Sensorfusion steigert der Xtensa LX7 die üblichen Steuerungsleistungs-Benchmarks um mehr als 15% und vereinfacht die SoC-Einbindung durch zahlreiche architektonische Verbesserungen. Dazu gehört ein neuer integrierter DMA-Controller (iDMA), der das AMBA AXI4-Protokoll[8] umfassender unterstützt und damit die Integration von Tensilica-Prozessoren in Anwendungsprozessoren, Schnittstellen-IP und den zugehörigen komplexen Verbindungsstrukturen vereinfacht.
Den integrierten RAM- und ROM-Speicher hat Espressif bei seinem neuen SoC erheblich zusammengestrichen – aus den 520 kByte SRAM wurden beim S2 320kByte und aus 448kByte ROM bleiben noch 128 kByte zum Booten und für Core-Funktionen. Allerdings wurde die Möglichkeit zur Anbindung externen FLASH- und SRAM-Speichers (PSRAM und SPI NORFLASH) erheblich erweitert, es können jetzt von beiden Speicherarten bis zu 1GByte extern verwendet werden.
Time-of-Flight oder 802.11mc
Mit dem ESP32-S2 adressiert Espressif vor allem Smart-Home-Anwendungen, also Produkte wie steuerbare Leuchtmittel, Türschlösser, Steckdosen, Haushalts- und Küchengeräte aber auch Video-Streaming-Anwendungen, einfache Überwachungskameras etwa. Da für dieses Anwendungsfeld fast ausschließlich WiFi gebraucht wird, hat Espressif beim S2 die Bluetooth Funktionalität entfernt.
Zwar hat auch der ESP32-DxWD nur ein HF-Frontend und kann WiFi und BT nicht wirklich gleichzeitig betreiben, doch ist es dank einem ausgeklügelten Multiplexverfahren möglich, quasi-simultan beide Übertragungswege zu nutzen. Diese Ausstattung nutzt beispielsweise ESP-Touch[9], um WiFi-Geräte in der Erstkonfiguration mittels BT-Verbindung zu iOS oder Android-Apps parametrisieren zu können.
Weiterhin arbeitet das HF-Frontend beim S2 nur im 2.4 GHz-Band (802.11 b/g/n) mit maximal 150 Mbit/s, hat aber einige Erweiterungen vor allem des 802.1n Standards implementiert. Ein Dual-Band Chip steht bei Espressif auf der Entwicklungs-Roadmap und wurde für Ende 2019 avisiert, doch gibt es bislang noch keine verbindliche Angabe zum Erscheinungstermin.
Die HF-Sendeleistung des S2-Frontends ist jetzt justierbar, was Optionen für das Power-Management eröffnet, denn Sendeoperationen gehören mit deutlich über 100mA Stromverbrauch zu den Energiefressern von IoT-Anwendungen. Das neue HF-Frontend verfügt zudem über eingebaute Kalibrierroutinen und vereinfacht damit Test- und Zulassungsroutinen der mit dem Chip ausgestatteten Geräte.
Zur Verbesserung der Übertragungsqualität unterstützt der ESP32-S2 Antenna-Diversity – es können 2 Antennen über einen externen HF-Schalter angeschlossen werden, die durch ihre jeweils unterschiedliche Raumlage unterschiedliche Signalstärken und damit Übertragungsqualitäten liefern. Über sein RSSI[10] Signal entscheidet sich der ESP32-S2 für die jeweils aktuell „bessere“ Antenne und schaltet mittels GPIO diese Antenne an seinen HF-Eingang[11].
Wichtig für viele Anwendungen im Bereich IoT und Home Automation ist eine Möglichkeit, topografische Positionen in Bezug auf Accesspoints innerhalb von Gebäuden zu ermitteln, um damit eine Indoor-Navigation zu realisieren. Und zu diesem Zweck wurde jetzt das Protokoll 802.11mc implementiert, das sog. Fine Time Measurements (=FTM) der Round Trip Time (=RTT) ermöglicht, zusammengefasst unter dem Begriff Time-of-Flight (ToF) und zwingende Voraussetzung für die halbwegs genaue Positionsbestimmung innerhalb von Gebäuden[12].
Bislang gab es 2 unterschiedliche Methoden, die Entfernung eines WiFi-Nodes zum nächsten Accesspoint zu bestimmen. Beide sind recht unzuverlässig, sollen aber hier kurz aufgeführt werden: Die naheliegende Methode setzt auf die Empfangsfeldstärke, den RSSI-Wert, der mit steigender Entfernung invers quadratisch abnimmt. Leider unterliegt der RSSI-Wert noch zahlreichen anderen Einflüssen von ähnlicher Größenordnung, wodurch sich die Beziehung Entfernung zu RSSI eher als Wolke zeigt denn als saubere, liegende Parabel. Die zweite Methode nutzt die CSI-Werte (= Channel State Information) der empfangenen Präambel.
Enthalten sind, aufgrund der OFDM Modulation, 56 komplexe Werte, in denen sich mehr Informationen über die Entfernung bzw. Übertragungsqualität befinden als im simplen RSSI-Wert. Allerdings zeigt die Praxis, dass sich auch damit keine zuverlässige Navigation realisieren lässt.
Nun also die Methode aus dem 802.11mc-Standard mit Messung der Round-Trip-Time, also der Zeit die benötigt wird, ein Paket vom AP zum Node und wieder zurückzusenden. Elegant an dieser Methode ist, dass die RTCs von AP und Node nicht synchronisiert werden müssen, weil nur jeweilige Differenzzeiten in die Berechnung eingehen. Die erzielbare Navigationsgenauigkeit liegt bei immerhin 1 Meter. Wer sich genauer damit beschäftigen möchte, findet im Artikel „Fine Time Measurement Round Trip Time“[13] von Berthold Horn, Professor für Computer Science am MIT, das Prinzip verständlich dargelegt.
Ultra-low-Power Prozessor mit Risc-V Architektur
Der ULP-Coprozessor kann verwendet werden, um die Funktionen der CPU im normalen Arbeitsmodus zu erweitern oder im Ruhezustand, als Stammhirn quasi, die CPU rudimentär zu ersetzen. Der ULP-Coprozessor und der RTC-Speicher bleiben dabei im Tiefschlafmodus aktiv und so können (Assembler-)Programme für den ULP-Coprozessor, abgelegt im langsamen RTC-Speicher, im Tiefschlafmodus auf RTC-GPIO, RTC-Peripheriegeräte, RTC-Timer und interne Sensoren zuzugreifen.
Der ULP-Coprozessor des ESP32-DxWD wurde bereits in einem früheren Artikel[14] beschrieben, daher sollen hier nur wesentliche Änderungen dargestellt werden. Der ULP Coprozessor wurde im S2 mit Risc-V Architektur implementiert, was nach Angaben von Espressif den deutlich größeren Befehlssatz „IMC Instruction Set“ ermöglicht. Er verfügt über 32 Register mit 32 bit Breite sowie 32-bit Multiplizierer/Dividierer.
Letztlich ist natürlich entscheidend, welcher Stromverbrauch durch das gesamte Power-Management des Chips realisierbar ist. Für den Stromverbrauch im „Tiefschlafmodus“ gibt Espressif einen Wert von 7µA an, dabei ist der Touch-Sensor mit einem Duty-Cycle von 1% aktiv (zum Aufwecken). Der ESP32-DxWD dagegen zieht unter vergleichbaren Bedingungen 100µA, insofern also eine erhebliche Reduktion des Stromverbrauchs aber notwendige Voraussetzung, um das Versprechen batteriebetriebener Geräte einzulösen.
Erweiterte Sicherheits-Features
Nachdem im April diesen Jahres Espressif durch Security-Analysten[15] von der Möglichkeit der Softwaremanipulation durch einen sog. Fault Injection Exploit unterrichtet wurde, entschied sich das Unternehmen zu einem offensiven Umgang mit der Problematik, ließ den ESP32 ROM-Bootcode und seine Secure-Boot-Eigenschaften umfangreich untersuchen, informierte Anwender und veröffentlichte Patches seines SDKs, um die FLASH Verschlüsselung bei aktiviertem Secure Boot jederzeit zu gewährleisten.
Fault Injection ist eine Methode, mit physikalischen Mitteln, z.B. mit speziellen Takt- oder Versorgungsspannungsfluktuationen, ein Prozessorsystem in den Crash zu zwingen, um damit Sicherheitslücken zu öffnen, die es erlauben, eigenen Code auszuführen. Da diese Art des Hackens direkten Zugang zur Hardware erfordert, ist das Schadenspotential geringer als bei Exploits über’s Netz aber natürlich unangenehm für Hersteller und Nutzer, da Schwächen im Security-Konzept zutage treten.
Im Falle der ESP32-CPU bestand durch den Fault-Injection-Angriff die Möglichkeit, die Verifikation des Secure Boot Digest beim Starten zu umgehen und eigenen Programmcode auszuführen. Die Abwehrmaßnahme bestand daher folglich darin, für eine lückenlose und kryptographisch „harte“ Code-Verschlüsselung im FLASH-Speicher zu sorgen und dies entsprechend in der Firmware umzusetzen.
Diese praktischen Erfahrungen sind natürlich auch in das Sicherheitskonzept des neuen ESP32-S2 eingeflossen: Speicherinhalte der externen FLASH und SRAM-Speicher können jetzt mit AES256-XTS verschlüsselt werden, die Keys dafür finden Platz im 4kbit großen eFuse und sind nicht durch Software-Zugriffe erreichbar. Damit lässt sich nicht autorisiertes Lesen von Anwendungscode oder -daten verhindern. Das Secure-Boot Feature basiert auf einem Hardware-Root-of-Trust[16] und stellt sicher, dass nur eine RSA-PPS signierte Firmware gebootet werden kann.
Ein HMAC Modul (HMAC = Keyed-Hash Message Authentication Code[17]) kann für Anwendungssoftware nicht zugängliche MAC Keys verwenden, um damit SHA-HMAC Signaturen zur Identitätsverifizierung oder andere Zwecke generieren.
Eine Digitale Signatur Peripherieeinheit schließlich kann für Anwendungssoftware nicht zugängliche Secure Keys verwenden, um damit MAC Signaturen zur Identitätsverifizierung vorzunehmen.
Entwicklungsumgebung mit CMake
Die ursprüngliche Entwicklungsumgebung für die Espressif SoCs basierte auf einem GNU Build System und war zur Ausführung auf Linux Maschinen vorgesehen, unterstützt wurden CentOS-, Ubuntu- und Debian-Distributionen. Für Windows Maschinen war es notwendig, zunächst mit MSYS2[18] eine Linux-Umgebung zu schaffen, um dann in dieser Shell die Software-Entwicklungen durchzuführen.
Mit der Release 4.0 des Espressif SDKs[19] ist nun CMAKE[20] das Standard Build-System. Damit erübrigt sich für Windows-Anwender die Einrichtung einer Linux-Umgebung wie das erwähnte MSYS2 oder Cygwin. Unter Windows sind zur Einsatzbereitschaft noch Ninja und Python 2.7 notwendig, als Editor können Eclipse oder VSCode verwendet werden[21]. Espressif bietet zudem ein Installer-File für Windows an, mit dem sich die gesamte Entwicklungsumgebung einrichten lässt. Das ESP-IDF und andere Repositories lassen sich nun unter Windows etwas eleganter als früher mit der Git GUI verwalten, auch einzelne Branches eines Repositories können dabei ausgewählt werden.
Für den ESP32-S2 existiert aktuell (September 2019) ein erstes Beta-Repository[22], im Wesentlichen eine Umsetzung des bestehenden ESP-IDF Repos auf die neue Hardware- und Prozessorbasis. Funktionen wie etwa Antenna Diversity, ToF oder USB OTG sind noch nicht realisiert, was mehr dem Beta-Zustand des neuen Chips geschuldet sein dürfte als der Softwareentwicklung. Espressif hat die Serienverfügbarkeit des ESP32-S2 für das Jahresende 2019 angekündigt und bis dahin sind wohl noch einige Designzyklen notwendig. Das in Abbildung 5 gezeigte Entwicklungsboard ist mit der heute verfügbaren Interim Chipversion (Aufdruck Chip7.2.2) bestückt und unterstützt daher folglich weder USB OTG noch 802.11mc RTT. Etwas Geduld ist also notwendig, vermutlich werden aber mit der Serienverfügbarkeit auch neue Entwicklungsboards vorgestellt und neue Anwendungen adressiert.
Und wie sieht es nun mit dem Shareholder Value von Espreessif aus? Heute, am 15. September 2019, also knapp 2 Monate nach ihrem Debüt, notiert die Aktie von Espressif bei 165 Yuan, umgerechnet etwa US$ 23,30. Ausgehend von den US$ 9,10 immerhin mehr als eine Verdoppelung in wenigen Wochen. Auch bei den Investoren scheint das Unternehmen also großen Zuspruch zu finden.
st
Attachment | Size |
---|---|
WiFi for a Dollar | 713.14 KB |
WiFi for a Dollar, World of solutions, Elektronik 03/2020 | 1.08 MB |