México - Marcar México

Términos internacionales de comercio (Incoterms):DDP
Todos los precios incluyen los costos de aranceles y aduana para los métodos de envío seleccionados.

Confirme su elección de moneda:

Dólares estadounidenses
Envío sin cargo para la mayoría de los pedidos superiores a $100 (USD)

Bench Talk for Design Engineers

Mouser German Blog

rss

Mouser Electronics, Inc german language blogs


Einführung in Embedded Python Mike Parks

(Quelle: dencg/Shutterstock.com)

 

Wenn Sie Embedded-Geräte programmieren, ist die Wahrscheinlichkeit groß, dass Sie Code in der Programmiersprache C/C++ schreiben. C wurde ursprünglich in den frühen 1970er Jahren entwickelt. Doch erst in den 1990er Jahren wurde die Programmierung von Embedded-Geräten von Assembler auf die höhere Programmiersprache C umgestellt. In den darauffolgenden dreißig Jahren war C/C++ dank seiner enormen Leistungsfähigkeit, sowohl in Bezug auf die Geschwindigkeit als auch auf die Kompaktheit, die vorherrschende Programmiersprache für Embedded-Anwendungen. Nun deutet sich mit der zunehmenden Verbreitung von Implementierungen der beliebten Programmiersprache Python für Embedded-Anwendungen eine weitere Verschiebung an.

Python wurde erstmals in den 1990er Jahren eingesetzt und hat seitdem bei Softwareentwicklern stetig an Beliebtheit gewonnen. Im Jahr 2020 erreichte Python bei der jährlichen Umfrage von IEEE Spectrum über die Beliebtheit von Programmiersprachen sogar den ersten Platz. Ursprünglich war Python bei Embedded-Entwicklern als Skriptsprache zum Testen elektronischer Geräte beliebt. Nach und nach wurde die Sprache auch in anderen Bereichen der Entwicklung eingesetzt. Es gibt mehrere Implementierungen von Python, wobei CPython die Referenzimplementierung ist, die häufig für Desktop-Anwendungen zum Einsatz kommt.

  • PyMite and Tiny Python waren die ersten Versuche zur Entwicklung von Python-Implementierungen mit reduziertem Funktionsumfang für den expliziten Einsatz auf Mikrocontrollern. PyMite enthält nur eine VM und eine Laufzeitumgebung - jedoch keinen Compiler. Das bedeutet, dass es nur Bytecode ausführen kann, der zuvor von CPython kompiliert wurde. Tiny Python enthält einen Bytecode-Compiler und benötigt trotzdem nur etwa 64 Kilobyte RAM. Beide basieren auf Python 2, und keines von beiden wird aktiv weiterentwickelt. Dennoch waren sie die ersten Ansätze, Python für Embedded-Anwendungen zu nutzen. 
     
  • MicroPython ist eine interessante Alternative zur Programmiersprache C für die Embedded-Entwicklung. Es ermöglicht die Nutzung mehrerer beliebter Funktionen der Desktop-basierten Programmiersprache CPython für verschiedene gängige Mikrocontroller-Architekturen, wie beispielsweise STM32-Boards, TI CC3200/WiPy, Teensy-Boards, die Nordic nRF-Serie, SAMD21, SAMD51, ESP8266, ESP32, RISC-V und sogar die Lego Mindstorms EV3-Plattform. Seit seiner Veröffentlichung im Jahr 2014 ist MicroPython immer beliebter geworden. Dies ist auch auf die zunehmende Nutzung von CPython im Allgemeinen zurückzuführen. Ein weiterer Pluspunkt ist, dass der Quellcode von MicroPython unter einer Open-Source-Lizenz (MIT-Lizenz) auf GitHub bereitgestellt wird. 
     
  • CircuitPython ist eine bildungs- und makerfreundliche Python-Implementierung und selbst ein Fork von MicroPython. Die Entwicklungsunterstützung für CircuitPython wird von Adafruit Industries bereitgestellt und ist die De-facto-Programmiersprache für viele Mikrocontroller-Produkte des Unternehmens. Derzeit gibt es über hundert Boards, die mit CircuitPython kompatibel sind, die meisten basieren auf den Mikrocontrollern SAMD21/SAMD51 von Microchip und dem nRF52840 von Nordic Semiconductor. Ein Hauptmerkmal von CircuitPython ist die Möglichkeit, eine Quellcodedatei (.py) einfach und unkompliziert auf ein kompatibles Entwicklungsboard zu ziehen – genauso wie das Ziehen einer Datei auf einen USB-Stick. Dabei ist es nicht notwendig, den Code zu kompilieren und auf einen umständlichen (und manchmal teuren) Programmierer/Debugger zurückzugreifen. Außerdem bleibt der Quellcode auf dem Gerät zugänglich und kann auf jedem Computer geöffnet werden. Das bedeutet, dass man ein CircuitPython-kompatibles Entwicklungsboard von jedem Computer mit einem einfachen Text-Editor herunterladen, bearbeiten und neu programmieren kann. 
     
  • Zerynth ist eine Reihe von Tools, die in einem Software Development Kit (SDK) enthalten sind und für Entwickler von Produkten für das Internet der Dinge (IoT) konzipiert sind. Diese Tools vereinfachen die Verbindung zwischen 32-Bit-Mikrocontrollern (beispielsweise ESP32, ESP8266, ARM Cortex M0+, ARM Cortex M3 und ARM Cortex M4) und verschiedenen IoT-Cloud-Anbietern (AWS, Azure, Google Cloud Platform, Ubidots, The Things Network). Mit nur wenigen Zeilen Python-Code können die Daten von Edge-Gerätesensoren zur weiteren Analyse und langfristigen Speicherung in die Cloud übertragen werden. Zu den enthaltenen Tools zählen eine Kommandozeilenschnittstelle (CLI), die integrierte Entwicklungsumgebung (IDE) Zerynth Studio, das Zerynth-Betriebssystem (Zerynth OS) und der Zerynth Device Manager. Diese Tools sind Windows, Mac OS und Linux verfügbar. Die Zerynth VM benötigt nur 80KB Flash-Speicher und 5KB RAM. Die Programmierung kann in Python oder in einem Python/C-Hybrid-Ansatz erfolgen, falls die Leistungsanforderungen dies verlangen. 
     
  • CPython. Einplatinencomputer (Single Board Computers, SBCs) sind vollwertige Desktop-Computer in Kreditkartengröße (beispielsweise Raspberry Pi, BeagleBone). Sie sind außerdem so preiswert, dass sie zunehmend auch in Embedded-Anwendungen zum Einsatz kommen. SBCs der aktuellen Generation sind schnell genug und verfügen über genügend Speicherplatz, um die vollständige CPython-Implementierung (oder eine leicht reduzierte Implementierung, bei der nicht benötigte Module weggelassen werden) auszuführen. Es gab auch andere Implementierungen, wie z. B. Python für ARM Linux, bei dem Python für ARM-basierte Architekturen (im Gegensatz zu x86/x64-Architekturen) angepasst wurde. Seit kurzem sind weitere Implementierungen wie PyPy, das auf einem Just-In-Time-Compiler im Gegensatz zum Interpreter von CPython basiert, auf den Raspberry Pi portiert worden und ermöglichen Verbesserungen, wie etwa eine höhere Performance.

Entwickler müssen sich darüber im Klaren sein, dass es keine einheitliche Version der Programmiersprache Python gibt. Es gibt viele Implementierungen, von denen einige speziell für den Einsatz auf Embedded-Plattformen entwickelt wurden. Die Zukunft von Python als wichtige Programmiersprache in der professionellen Embedded-Entwicklung hängt davon ab, ob es die Leistung von C erreichen oder übertreffen kann. Denn der Wechsel von Assembler zu C ist auch nicht über Nacht erfolgt. Assembler wird immer noch für leistungskritische Teile eines C-Programms verwendet, wobei Assembler-Code in C-Makros eingefügt wird. Python und C können in ähnlicher Weise funktionieren.

Ein weiterer wichtiger Aspekt ist die Tatsache, dass die modernen Mikrocontroller heute wesentlich leistungsfähiger sind als die Mikrocontroller von vor zehn oder zwanzig Jahren. Die Taktzyklen sind von einigen Megahertz auf über ein Gigahertz gestiegen. Der Flash-Speicher, der früher nur ein paar Dutzend Kilobyte groß war, beträgt heute mehrere Megabyte. Der erhebliche Leistungssprung ist glücklicherweise nicht mit einem entsprechenden Preisanstieg einhergegangen. So können Entwickler von Embedded-Anwendungen Code in einer höheren Programmiersprache schreiben und dadurch hochwertige und schnelle Produkte entwickeln, ohne dabei jeden einzelnen Taktzyklus oder jedes einzelne Byte des Speichers berücksichtigen zu müssen.

Fazit

Programmiersprachen entwickeln sich ebenso wie gesprochene Sprachen weiter und passen sich den Anforderungen der Zeit an. CPython-Ableger, die speziell für Embedded-Systeme entwickelt wurden, wie beispielsweise MicroPython und CircuitPython, werden künftig eine Schlüsselrolle in der Embedded-Entwicklung spielen, da sie den Entwicklungsprozess grundlegend vereinfachen. Gemeinsam mit grundlegenden Kenntnissen über elektronische Hardware bieten Embedded-Python-Sprachen den Anwendern unabhängig von ihrer Qualifikation die Möglichkeit, das Physische mit dem Digitalen zu verbinden. Dadurch eröffnen sich Möglichkeiten, die noch vor wenigen Jahren unvorstellbar waren. Auf der ganzen Welt können lokale Communities dank frei zugänglicher, quelloffener Programmiersprachen und Embedded-Plattformen Tools entwickeln, die auf ihre jeweiligen Anforderungen abgestimmt, kostengünstig und nachhaltig sind. Von der Erstellung von Programmen zur Überwachung der Umweltauswirkungen des Verkehrs in Großstädten bis hin zur Überwachung der Wasserqualität in Flüchtlingslagern. Mit Embedded Python wird die Welt mit jeder Zeile Code ein Stückchen besser.



« Zurück


Michael Parks, P.E. ist der Eigentümer von Green Shoe Garage, einem Entwicklungsstudio für kundenspezifische Elektronik und Technologieberatung im Süden von Maryland. Er produziert den S.T.E.A.M. Power-Podcast (ein Podcast über MINT-Themen), mit dem er die Öffentlichkeit für technische und wissenschaftliche Fragen sensibilisieren möchte. Michael ist außerdem zugelassener Ingenieur im Bundesstaat Maryland und hat einen Master-Abschluss in Systemtechnik von der Johns Hopkins University.


Alle Autoren

Alle anzeigen Alle anzeigen
Blog nach Datum anzeigen