Großartige eingebettete Ressourcen für Entwickler
Fantastische Liste von Quellen und Libs für die Entwicklung eingebetteter Systeme
Die Implementierung von Quellen und LIBs in dieser Liste eignet sich speziell für ressourcenbezogene eingebettete Systeme (niedrigem Memory und niedrige Stromversorgung) wie 8-Bit-, 16-Bit- und 32-Bit-Mikrocontroller.
Warnung Diese Liste behandelt keine Linux-bezogenen Themen (wie die Raspberry PI-Plattform oder andere SBCs (Einzelplatinencomputer)).
Permanente URL in dieser Liste: https://github.com/idoka/awesome-embeded-software
Inhalt
- Gemeinsam
- Erinnerung
- Speicherverwaltung
- Puffer
- Ringpuffer
- FIFO
- Lagerung
- Dateisysteme
- Datenbasen
- Flash -Speicher
- Protokolle
- Funkfrequenzprotokolle
- Netzwerkprotokolle
- Webserver
- Mqtt
- Protokollparser
- Datenverarbeitung
- Mathe
- DSP und Filterung
- Kompression
- Ai ml
- Cv
- Kryptographie
- Allgemein
- Kryptographie Elliptischer Kurve
- Zufällige Zahlengenerierung
- Betriebssystem
- RTOs
- Ereignisbasiertes Scheduler
- Benutzeroberfläche
- Cli
- Speisekarte
- printf
- Scanf
- Protokollierung
- GUI
- GUI -Redakteure
- Schriftart
- Bild Manupulation Tools
- Hardware
- Andere
- Thread Management
- Bootloader
- Firmware -Updates
- Touch-Screen
- Zeitmanagement Libs
- Einbettungsbare Skripte und Sprachen
- Compiler
- Nicht kategorisiert
Gemeinsam
- WISELIB - Generische Algorithmenbibliothek für heterogene, verteilte, eingebettete Systeme.
- Util.Embedded - Nützlicher Unterstützungscode für eingebettete Entwicklung.
- EmbXX - Eingebettete C ++ -Bibliothek.
- Embedded -Libs - Bibliotheken für eingebettete Software (hauptsächlich für STM32).
- ETLCPP - Eingebettete Vorlagenbibliothek, in der der Benutzer die Größe oder die maximale Größe eines Objekts im Voraus deklarieren kann.
- EFll - Embedded Fuzzy Logic Library ist eine Standardbibliothek für eingebettete Systeme.
- Sammlung verschiedener tragbarer C -Ausschnitte - Sammlung verschiedener tragbarer C -Ausschnitte.
- SC - tragbare, eigenständige C -Bibliotheken und Datenstrukturen (C99).
- MicROTBX - Open Source Microcontroller Toolbox, die aus Softwarekomponenten besteht, die häufig in eingebetteten Softwareanwendungen benötigt werden. MicROTBX ist in der C -Programmiersprache (C99) in Misra Compliance geschrieben.
- UMLIBC - Ein bloßes Bonbones LIBC für Speicherbeschränkungssysteme.
- µClibc -ng - eingebettete C -Bibliothek.
- LIBC der Embedded Artistry-Eine abgestellte C-Standardbibliothek-Implementierung, die auf Mikrocontroller-basierte eingebettete Systeme abzielt. Reduzierter Funktionalitätssatz (aufgrund der eingebetteten Natur). Ausgewählt für Portabilität und schnelles Bringup.
- HWLIB-C ++ OO Micro-Controller-Bibliothek für die Programmierung mit kurzer Hardware.
- CTL - C -Containervorlagenbibliothek. Es gibt eine schnelle Kompilierung, einen sicheren, header, vorlagenartigen Containerbibliothek für ISO C99/C11.
- FSMILL - Zustandsmaschinenbeschreibung Sprache mit C -Sprachgenerator. Unterstützt flache und hierarchische Maschinen und Ereignissubsysteme.
Erinnerung
Speicherverwaltung
- libmemory - Speicherverwaltungsbibliothek mit Implementierungen für Malloc (), Free () und andere nützliche Speicherverwaltungsfunktionen.
- LWMEM - Leichte dynamische Speicher -Manager -Bibliothek für eingebettete Systeme mit Speicherbeschränkungen. Es implementiert Malloc, CALLOC, Realloc und kostenlose Funktionen.
- UMM_MALLOC - Speichermanager für kleine (ISH) Mikroprozessoren.
- O1HEAP-Ein hochdeterministischer Allocator für konstante Komplexitätsgedächtnisse für harte Echtzeit-Embedded-Systeme in Echtzeit.
Puffer
- EmbeddedProto - C ++ Protokollpuffer -Implementierung spezifisch für ARM -Cortex -M -Mikrocontroller geeignet. Es ist klein, zuverlässig und einfach zu bedienen.
- ProtobUF-mitgespannte C-Protokollpuffergenerator für in der C-Programmiersprache geschriebene Ressourcenbeschränkungen eingebettete Anwendungen.
Ringpuffer
- LWRB - Leichte Bibliothek für generische Ringpuffermanager.
- RingBuffer - Einfache Interrupt -Safe -Ring (Rundschreiben) Puffer -Warteschlangenbibliothek für eingebettete Plattformen.
- LFBB-Lock-Free Bipartite Puffer, eine Variante des Ringpuffers, der immer einen kontligous Platz im Puffer zum Lesen, Schreiben oder Ändern der Daten an Ort finden kann.
FIFO
- Fifofast - ein schnelles, generisches FIFO für MCUs.
Lagerung
Dateisysteme
- LWEXT4 - Eine ext2/ext3/ext4 -Dateisystembibliothek für Mikrocontroller.
- FATFS - Implementierung von Fat Filesystem.
- Levelx - Bietet Flash Wear Leveling für Filex- und eigenständige Zwecke.
- UFAT-Feature-Complete-VFAT-Implementierung mit niedrigem Memory.
- FAT_IO_LIB - Kleiner Fußabdruck, niedrige Abhängigkeit, C -Code -Implementierung eines FAT16 & FAT32 -Treibers.
- SDFAT - Arduino FAT16/FAT32 Exfat Library.
- FAT32 - Lighgewicht FAT32 -Dateisystem in C ohne Abhängigkeiten von Drittanteilungen geschrieben. Es erfordert einen kleinen Port, der Funktionen zum Initialisieren, Lesen und Schreiben an die MSD bietet.
- EMFAT - FAT32 Emulationsbibliothek für STM32F4.
- OpenFat - Implementierung für Fettdateisysteme für eingebettete Prozessoren.
- UC-FS-kompaktes, zuverlässiger, leistungsstarkes und fadensicheres eingebettetes Dateisystem für Mikroprozessoren, Mikrocontroller und DSPs. Eine optionale Journaling-Komponente bietet einen fehlsichenden Betrieb und die Fettkompatibilität.
- LittleFS - Little Fail -Safe -Dateisystem für Mikrocontroller.
- UFFS - Dateisystem für NAND -Geräte mit Verschleiß und gute Fehlertoleranz.
Datenbasen
- FlashDB-Datenbank mit Ultra-Lichtgewicht, die Schlüsselwert- und Zeitreihendaten unterstützt.
- Reinigter und winziger Satz von Bibliotheken zum Erstellen und Lesen von konstanten Datenbanken.
- UNQLITE - Embedded NoSQL, Transactional Database Engine.
- VEDIS - Eingebettete Implementierung von Redis (eine eingebettete Datenspeicher -C -Bibliothek, die mit über 70 Befehlen im Konzept wie Redis erstellt wurde, jedoch ohne die Netzwerkschicht, seit Vedis im selben Prozess der Hostanwendung ausgeführt werden).
- Microkvs - Tiny Schlüsselwertspeicher für persistierende Konfigurationsdaten für Mikrocontroller.
Flash -Speicher
- EasyFlash - Leichte Bibliothek für eingebettete Flash -Speicher.
- Flashalgo - Framework zum Erstellen von Arm Cortex -M "Flm" -Stil -Flash -Programmieralgorithmen.
- FCB - Flash Circular Puffer bietet eine Abstraktion, durch die Sie Flash wie ein FIFO behandeln können.
Protokolle
- NANOPB - Implementierung von kleinen Codegrößenpuffern in ANSI C. Es ist besonders für die Verwendung in Mikrocontrollern geeignet, passt jedoch zu jedem Speicherbeschränkungssystem.
- Austausch - Anforderungs-/Antwortmechanismus für die eingebettete Entwicklung unter Verwendung von Atomik.
- XMODEM - XMODEM -Bibliothek für eingebettete, mobile, IoT- und Desktop -Systeme.
- TinyFrame - Einfache Bibliothek zum Erstellen und Parsen von Datenrahmen für serielle Schnittstellen (wie UART / RS232).
- Nanomodbus - Eine kompakte Modbus -RTU/TCP -C -Bibliothek für eingebettete/mikrocontroller.
- RCOBS - Reverse -COBS -Codierung (RCOBs) ist eine Variante der COBS -Codierung, die eine Codierung ohne Lookahead ermöglicht.
Funkfrequenzprotokolle
- Radiohead - Packet -Radio -Bibliothek für eingebettete Mikroprozessoren.
- Adafruit's Radiohead - Packet Radio Library für eingebettete Mikroprozessoren mit Dokumenten.
Netzwerkprotokolle
- UIP - Sehr kleine Implementierung des TCP/IP -Stacks, der von Adam Dunkels geschrieben wurde.
- LWIP - Kleine unabhängige Implementierung der TCP/IP -Protokollsuite, die ursprünglich von Adam Dunkels entwickelt wurde. LWIP geeignet für die Verwendung in eingebetteten Systemen mit zehn Kilobyten freien Widder und Raum für etwa 40 Kilobyte Code ROM.
- HTTPCLIENT - HTTP -Client -Bibliothek.
- HTTPIO - Stand -Alone Cross Platform Request -Parser und Antwortgenerator für das HTTP -Protokoll.
- PICOTCP - Small -Footprint, modularer TCP/IP -Stack für eingebettete Systeme und das Internet der Dinge.
- RAWTCP_LIB - C -Bibliothek zum Erstellen und Verwenden von TCP/IP -Paketen mit RAW -Netzwerkhöhlen.
- LRNDIS - Ethernet über USB (RNDIS + LWIP).
- CyclonetCP - Ein Dual IPv4/IPv6 -Stack, der sich eingebettete Anwendungen widmet. Der Stapel wird als vollständige ANSI C und hoch wartbarer Quellcode (Beispiele nicht in Githubs Quellen enthalten) verteilt.
- StaticNet - C ++ TCP/IP- und SSH -Stack mit All -Stat -Allokationen für bare Metall (kein Betriebssystem) eingebettete Anwendungen mit minimalem Fußabdruck.
Webserver
- Mongoose - Embedded Web Server und Embedded Networking Library. Es implementiert ereignisgesteuerte nicht blockierende APIs für TCP, UDP, HTTP, WebSocket, MQTT.
- libevhtp - extrem schnelle und sichere eingebettete HTTP -Server mit Leichtigkeit.
- libμHTTPD - Sehr flexible, leichte und vollständig asynchrone HTTP -Serverbibliothek basierend auf Libev und HTTP -Parser.
- Sandbird - Tiny (800SLOC) Einbettbarer HTTP -Server in C89.
Mqtt
- libemqtt 1 - Eingebettete C -Client -Bibliothek für das MQTT -Protokoll.
- libumqtt 2 - Leichtes und vollständig asynchrones MQTT -Client -C -Bibliothek basierend auf Libev.
- PAHO MQTT - C Client Library für eingebettete Systeme.
Protokollparser
Reguläre Ausdrücke Parser
- REGEXP - reguläre Ausdrucksbibliothek für eingebettete Systeme.
GSM
- LWGSM - Bibliothek für SIMCOM -GSM -Module, mit denen Befehle und RTOs vom Host -Gerät kommunizieren können.
- GSM_Engine - Generisches bei Parser für bei Befehlsbasis -Modulen.
- TinyGSM - Kleine Arduino -Bibliothek für GSM -Module, das nur funktioniert.
GPS
- LWGPS - Leichtes GPS -NMEA -Parser für eingebettete Systeme.
- Minmea - Leichtes GPS -NMEA 0183 Parser Library in Pure C.
Bei Befehlsparser
- ATAT - LIB für die Verarbeitung von AT -ähnlichen benutzerdefinierten Befehlen.
- Katzen - einfache C -Bibliothek zum Parsen an Befehlen zur Verwendung in Host -Geräten.
- gzat - tragbar bei der Befehlsanalysebibliothek in C ++ - Sprache.
- ATPARSER - Ein MBED -OS -kompatibel bei Befehlsparser.
- ATCOMMANDER - Tragbare C ++ -Bibliothek zum Senden von Befehlen und an Parsen ihrer Antworten.
- LWESP - Leichtes ESP in der Befehlsparser -Bibliothek zur Kommunikation mit ESP8266- oder ESP32 -Wi -Fi -Modul unter Verwendung von Befehlen.
Verschiedene Protokolle
- LWPKT-Leichte Paketprotokollstruktur für die Kommunikation mit mehreren Geräten, die sich auf RS-485 konzentriert.
- LWOW - Leichte OneWire -Protokollbibliothek optimiert für UART -Hardware auf eingebetteten Systemen.
- Panstamp -Swap - Einfaches drahtloses abstraktes Protokoll für vorhandene ISM -Radio.
- Panstamp -USWAP - Micro -Tauschstapel für MCUs über UART verbunden.
- Min - Mikrocontroller Interconnect -Netzwerkprotokollversion 2.0.
- LIBCOAP - C -Implementierung eines leichten Anwendungs -Protokolls für Geräte, die ihre Ressourcen wie Rechenleistung, RF -Bereich, Speicher, Bandbreite oder Netzwerkpaket eingeschränkt haben. Dieses Protokoll, COAP, wird vom IETF als RFC 7252 standardisiert.
Datenverarbeitung
Mathe
- Liquid-FPM-Software-definierte Funkfest-Punkt-Mathematikbibliothek für eingebettete Signalverarbeitung.
- FPM-C ++ Header-Nur-Festpunkt-Mathematikbibliothek.
- Eigen - C ++ Template -Bibliothek für lineare Algebra: Matrizen, Vektoren, numerische Löser und verwandte Algorithmen.
DSP und Filterung
- Liquid-DSP-digitale Signalverarbeitungsbibliothek für softwaredefinierte Funkgeräte.
- Minfft - Kleine und schnell diskrete Fourier -Transformationsbibliothek.
- IIR1 - DSP IIR Echtzeitfilterbibliothek in C ++ geschrieben.
- Kalman -Clib - Mikrocontroller -Ziel -Naive Kalman -Filter -Implementierung in Pure C.
- LIBDSPL - plattformübergreifende digitale Signalverarbeitungsalgorithmusbibliothek, geschrieben in C -Sprache.
- Pocketfft - stark modifizierte Implementierung von FFTPack.
- Kuss FFT - Mixed -Radix Fast Fourier -Transformation basierend auf dem Prinzip "Keep It einfach, dumm".
- CMSIS-DSP-Embedded Compute Library für Cortex-M und Cortex-A.
- Siglib-Bibliothek für digitale Signalverarbeitung und maschinelles Lernen (X86, Cortex-A und Cortex-M, RISC-V, DSPs von Ti, ADI usw.).
- LSP-DSP-LIB-DSP-Bibliothek für die digitale Signalverarbeitung bietet eine Reihe von Funktionen, mit denen SIMD-optimiertes Computing auf mehreren Hardwarearchitekturen ausführt. Alle Funktionen arbeiten derzeit auf IEEE-754-Einzelpreis-Schwimmpunktzahlen mit einer Präzision.
Kompression
- Heatshrink - Datenkomprimierungsbibliothek für eingebettete/Echtzeitsysteme.
- SHOCO - C -Bibliothek, um kurze Saiten zu komprimieren und zu dekomprimieren. Es ist sehr schnell und einfach zu bedienen. Das Standard -Komprimierungsmodell ist für englische Wörter optimiert, aber Sie können Ihr eigenes Komprimierungsmodell erzeugen.
- SMAZ - Komprimierung für sehr kleine Saiten.
- ECL - Eingebettete Komprimierungsbibliothek ist nicht nur für eingebettete, sondern auch für kleine Daten ausgerichtet und verfügt über spezielle optimierte Modi mit niedrigem Memory für eingeschränkte Umgebungen.
- UNISHOX2 - Hybrid -Encoder für kurze Unicode -Zeichenfolgen (UnHox bietet die beste Komprimierung für kurze Text und nicht mit dem Komprimierungsalgorithmus für den allgemeinen Zweck wie LZ4, Snappy, LZMA, Brottli und ZSTD).
- TCOBS-Kurzmeldungen Komprimierung mit Cobs-Rahmen unter Verwendung impliziter Langlängen-kodierender, optimiert für Daten, die statistisch etwas mehr 0 und FF-Bytes in einer Zeile enthalten, da Daten häufig 16, 32 oder 64 Bitzahlen mit kleinen Werten tragen.
Ai ml
Künstliche Intelligenz und maschinelles Lernen
- CRANIUM - Tragbare, nur Header, Feedforward Artificial Neural Network Library in Vanille C99.
- μtensor - Tinyml AI Inferenzbibliothek.
- FIDO - Leichtes C ++ maschinelles Lernbibliothek für eingebettete Elektronik und Robotik.
- NNOM - Neuronales Netzwerk auf Microcontroller (NNOM) ist eine auf hohe Inferenz -Neuralnetzwerkbibliothek speziell für Mikrocontroller.
- CaffeePresso - Optimierte Bibliothek für Deep -Lernen auf eingebetteten Beschleunigungs -basierten Plattformen.
- LIBONNX - Leichtes, tragbares reines C99 -Onnx -Inferenz -Engine für eingebettete Geräte mit Hardware -Beschleunigungsunterstützung.
- TINYMAIX - Eine winzige Inferenz -Bibliothek für neuronale Netzwerke speziell für Mikrocontroller (TINYML). Entwickelt, um der Regel zu befolgen: Einfach zu bedienender> tragbarer> Geschwindigkeit> Platz.
Cv
Computer Vision
- Eingebettete SOD - eingebettete Computer Vision & Machine Learning Library (CPU -optimiert und IoT fähig).
- QR-Image-Eingebett-QR-Bibliotheksgabel für eingebettete Systeme.
Kryptographie
Allgemein
- Fachwerk - minimale, modulare Möglichkeit zum Schreiben kryptografischer Anwendungen auf Mikrocontroller -Plattformen (ROB).
- WOLFSSH - Leichtes SSHV2 -Client- und Serverbibliothek in ANSI C geschrieben und für Eingebant-, RTOs- und Ressourcenbetriebsumgebungen gezielt - vor allem wegen seiner geringen Größe, Geschwindigkeit und Feature -Set.
- Libhydrogen-Leichtes, sicheres, benutzerfreundliches Krypto-Bibliothek für eingeschränkte Umgebungen.
- Krypton - Eingebettete TLS/DTLS -Bibliothek, Quelle und binäre kompatible OpenSSL -Untergruppe.
- Wolftpm - Hoch tragbare TPM 2.0 -Bibliothek, ausgelegt für eingebettete Verwendung.
- MbedTLS - Open Source, tragbar, einfach zu bedienende, lesbare und flexible TLS -Bibliothek und Referenzimplementierung der PSA -Kryptographie -API.
- LIBLITHIUM - Leichte Kryptographie -Bibliothek, die durch Design tragbar ist. Es erfordert nur Standard-C99 und übernimmt keine 8-Bit-Adressierbarkeit, sodass es für einige DSP-Architekturen sowie für Mainstream-Architekturen geeignet ist.
- Trezor -Krypto - stark optimierte Kryptographiealgorithmen für eingebettete Geräte.
- Poly1305-Donna-Implementierungen eines schnellen Nachrichten-Authentifizierungscode (8-Bit-, 16-Bit-, 32-Bit- und 64-Bit-Multiplikationsversionen).
- Arduinolibs - Arduino Cryptography Library.
- TLSE - Single C -Datei TLS 1.2/1.3 Implementierung unter Verwendung von Tomcrypt als Krypto -Bibliothek.
- Libtomcrypt-ziemlich umfassendes, modulares und tragbares kryptografisches Toolkit, das den Entwicklern eine Vielzahl von bekannten veröffentlichten Blockverfällen, Einweg-Hash-Funktionen, Kettenmodi, Pseudo-Random-Zahlengeneratoren, öffentliche Schlüsselkryptographie und eine Pause anderer Routinen bietet.
- Monocypher - Einfach zu bedienende, einfach zugängliche, prüfbare Krypto -Bibliothek in tragbarem C geschrieben C.
- MINICRYPT - Bibliothek von Krypto -Primitiven für eingebettete Systeme.
- TinyCrypt - Bibliothek kryptografischer Algorithmen bietet eine Implementierung für eingeschränkte Geräte eines minimalen Satzes von Standard -Kryptographie -Primitiven.
- Tiny-Aes-C-Kleine tragbare AES128/192/256 in C. C.
- µaes - Leichte, hoch flexible, tragbare und ANSI -C -kompatible Implementierung der AES -Verschlüsselungs- und Block -Cipher -Modi.
- CycloneCrypto - Ein kryptografisches Toolkit für die Verwendung in eingebetteten Systemen. Es bietet eine umfassende Reihe von kryptografischen Primitiven (Hash -Funktionen, Stream- und Block -Chiffren, öffentliche Schlüsselkryptographie), mit denen Sie Ihrer eingebetteten Anwendung Sicherheitsfunktionen hinzufügen können.
Kryptographie Elliptischer Kurve
- Salzige-ED25519 Signaturen mit Montageoptimierungen für Cortex-M4 und Cortex-M33.
- Micro-ECC-ECDH und ECDSA für 8-Bit-, 32-Bit- und 64-Bit-Prozessoren.
- Libuecc - Sehr kleine generische elliptische Kurve -Kryptographie -Bibliothek, die mit ED25519 kompatibel ist.
- C25519-und-ED25519-CURVE25519 und ED25519 für Systeme mit niedrigem Memory (CURVE25519 SKALAR-Multiplikation verwendet weniger als eine halbe KB Spitzenstapelverwendung).
Zufällige Zahlengenerierung
- PCG-C-Basic-Code bietet eine minimale Implementierung eines Mitglieds der PCG-Familie von zufälligen Zahlengeneratoren, die schnell, statistisch hervorragend sind und eine Reihe nützlicher Funktionen bieten.
- PCG -C - Code bietet eine Implementierung der PCG -Familie von Zufallszahlengeneratoren, die schnell, statistisch hervorragend sind und eine Reihe nützlicher Funktionen bieten.
Betriebssystem
- Citrus - Bare Metal Arm® Cortex® -A5 -Betriebssystem.
- Vanille - Bare Metal Arm® Cortex® -M7 -Betriebssystem.
- Chaos - Bare Metal Multicore Arm® Cortex® -A -Betriebssystem basierend auf einer Mikrokernel -Architektur.
- LK KERNEL - Das Little Kernel Embedded Operating System ist ein SMP -bewusster Kernel, der für kleine Systeme entwickelt wurde, die auf eine Vielzahl von Plattformen und CPU -Architekturen portiert werden.
- Quarkts - Betriebssystem für eingebettete Anwendungen, die priorisierte kooperative Planung, Zeitkontrolle, Primitive mit Inter -Task -Kommunikation, hierarchische Staatsmaschinen und Coroutinen unterstützen.
- Micro-ROS-Micro-ROs legt ROS 2 auf Mikrocontroller.
RTOs
- Freertos ™ - Freertos.
- Zephyr - Neue Generation, skalierbare, optimierte, sichere RTOs für mehrere Hardwarearchitekturen.
- Apache Nuttx - Apache Nuttx ist ein ausgereiftes Echtzeit -eingebettetes Betriebssystem (RTOs).
- SCMRTOS-Tiny Echtzeit präventives Betriebssystem für die Verwendung mit Einzelchip-Mikrocontrollern. SCMRTOS ist in der Lage, winzige UCs mit einer geringen Menge an RAM wie 512 Bytes zu laufen. Das RTOS ist auf C ++ geschrieben und unterstützt verschiedene Plattformen.
- Chibios/RT-kompaktes und schnelles Echtzeit-Betriebssystem, das mehrere Architekturen unterstützt, die für eingebettete Anwendungen auf Mikrocontrollern von 8-, 16- und 32-Bit-Microcontrollern entwickelt wurden.
- Azure RTOS Threadx - Advanced Echtzeit -Betriebssystem (RTOS), das speziell für tief eingebettete Anwendungen entwickelt wurde.
- ECOS - Echtzeit -Betriebssystem für eingebettete Anwendungen (geschlossene Quelle) .
- EMBOX - Konfigurierbare RTOs für ressourcenbeschränke und eingebettete Systeme. Die Hauptidee von EMBOX ist die Verwendung von Linux -Software ohne Linux.
- Riot-Echtzeit-Multi-Threading-Betriebssystem, das eine Reihe von Geräten unterstützt, die normalerweise im Internet der Dinge (IoT) enthalten sind: 8-Bit-, 16-Bit- und 32-Bit-Mikrocontroller. RIOT basiert auf folgenden Entwurfsprinzipien: Energieeffizienz, Echtzeitfähigkeiten, Kleinspeicher-Fußabdruck, Modularität und einheitlicher API-Zugriff, unabhängig von der zugrunde liegenden Hardware (diese API bietet eine teilweise POSIX-Konformität).
- ARM MBED OS - Plattform -Betriebssystem für das Internet der Dinge. Es enthält alle Funktionen, die Sie benötigen, um ein angeschlossenes Produkt basierend auf einem ARM-Cortex-M-Mikrocontroller zu entwickeln, einschließlich Sicherheit, Konnektivität, RTOs und Treiber für Sensoren und E/A-Geräte.
- RT-Thread-RT-Thread wurde 2006 geboren. Es handelt sich um ein Open Source-, Neutral- und Community-basiertes Echtzeit-Betriebssystem (RTOs). RT-Thread hat eine Standardversion und eine Nano-Version. Für ressourcenbezogene Mikrocontroller (MCU) -Systeme kann die Nano-Kernel-Version, die nur 3 KB Blitz und 1,2 KB RAM-Speicherressourcen benötigt, auf einfach zu verwendende Tools zugeschnitten werden. Für ressourcenreiche IoT-Geräte kann RT-Thread das Tool für das Management von Online-Softwarepaket sowie Systemkonfigurationstools verwenden, um intuitive und schnelle modulare Schneiden, nahtlose Importrich-Software-Pakete zu erreichen, wodurch komplexe Funktionen wie Androids grafische Schnittstelle und Berührungsseffekte, intelligente Sprachinteraktionseffekte und so weiter erzielt werden.
- Distortos - Objektorientierte C ++ -RTOs für Mikrocontroller.
- R3-OS-Experimentelle statische (μitron-isque) RTOs für tief eingebettete Systeme, testen die Grenze der Const Evalics und Generics (Rust) von Rust.
- TOCK Embedded OS-eingebettetes Betriebssystem, das für die Ausführung mehrerer gleichzeitiger, gegenseitig misstrauischer Anwendungen auf Memory- und Low-Power-Mikrocontrollern (Rust) ausgelegt ist.
- Löwenzahn - Microkernel -Echtzeit -Betriebssystem in Rost.
- Muditaos - Mobiles Betriebssystem basierend auf Freertos optimiert für E -Tintenanzeigen - entwickelt für Mudita Pure Minimalist Phone.
- µC/OS-II-präventive, hoch tragbare und skalierbare Echtzeit-Kernel. Für eine große Anzahl von CPU -Architekturen entwickelt.
- µC/OS-III-Präventiv, hoch tragbar und skalierbarer Echtzeit-Kernel. Für eine große Anzahl von CPU -Architekturen entwickelt.
- QP/C-Echtzeit eingebettetes Framework/RTOS für eingebettete Systeme basierend auf aktiven Objekten (Akteuren) und hierarchischen Staatsmaschinen (FUSA, MISRA-C 2023 Compliance).
- Ganz ok RTOs - Tickless, minimal, 500 Codezeilen, 7 Funktionen.
Ereignisbasiertes Scheduler
- Uevloop - Schnell und leichtes Ereignisschleife für eingebettete Plattformen.
- LWEVT - Leichtes Ereignismanagementsystem für eingebettete Systeme.
- Async - Asynchroner Framework in C für Systeme, bei denen eine geringe Speicherverwendung wichtig ist.
- PrototHreads - Bereiten Sie lineare Codeausführung für ereignisgesteuerte Systeme zur Verfügung, die in C implementiert sind, die für stark speicherbeschränke Systeme wie kleine eingebettete Systeme oder drahtlose Sensor -Netzwerkknoten entwickelt wurden.
- EventOS - Ereignisbasiertes System für Arduino Framework.
- VSF - Versaloon -Software -Framework - Ein winziger präventiv -fähiger ereignisgesteuerter inkrementeller Software -Framework für eingebettete Systeme.
Benutzeroberfläche
Cli
- CLI - CLI (Befehlszeilenschnittstelle) Beispiel Build in Pure C. Unterstützen Sie für MCU, unterstützen Sie den Block/Nicht -Block -Modus -Eingang.
- Terminal - Befehlszeilenschnittstelle für Mikrocontroller. Mit flexiblen Terminaleinstellungen können Sie sie ohne viel Aufwand in einen Mikrocontroller integrieren.
- Serialmenu - Arduino -Bibliothek, um leicht Menüs auf der Serienkonsole zu erstellen.
- Terminal -Server - Terminalserver für MCU.
- Mikrosch - Schale für kleine eingebettete Geräte.
- CMD -L - Befehlszeilenhandler für eingebettete Geräte.
- Eingebettete CLI-Einzelkopf-CLI mit Vorgeschichte und Autocompletion für eingebettete Systeme.
- Microshell - Leichtes reine C -Implementierung von virtueller Schale, kompatibel mit VT100 -Terminal. Unterstützen Sie Root Tree, Laufzeitpfade, globale Befehle und vieles mehr.
- Microrl - Micro -Lesezeilenbibliothek für kleine und eingebettete Geräte mit Basis -VT100 -Unterstützung.
Speisekarte
- Promenu - Erweiterte Menübibliothek für generische Anwendungen. Die Promenu -Bibliothek wird für die schnelle Implementierung erweiterter Benutzermenüs verwendet. Es unterstützt Verschachtel, numerische Einstellungen, Texteinstellungen, booleale Werte und Ereignisse. Die Bibliothek ist in C ++ mit einem Arduino-Port eingebaut, aber es ist einfach, auf eine andere Architektur zu portieren.
- BBMenu - Einfacher tragbares CLI -Menü für Misc -Aufgaben (es basiert auf Textmenüs, leicht in einer Datei definiert).
- MicroMenu-V2-Tiny textorientierte Menübibliothek in C für eingebettete Verwendung.
printf
- LWPRINTF - Leichte Printf -Bibliothek optimiert für eingebettete Systeme.
- Embedded_printf - Embedded -Version der berühmten Funktion "printf ()". Die Idee ist, eine einfache und effiziente Bibliothek zu erstellen, um einige gemeinsame Anforderungen in eingebetteten Systemen zu erfüllen.
- TinyPrintf - Tiny Printf- und Sprintf -Bibliothek für kleine eingebettete Systeme.
- XPRINTF -FP - PRINTF für eingebettetes System mit schwimmender Punktunterstützung.
- XPRINTF -IO - Kompakte String -E/A -Bibliothek. Es ist ideal für winzige Mikrocontroller, die für die reguläre Printf -Funktion nicht genügend Programmspeicher enthält. Die empfohlene Verwendung ist: Schreiben formatierter Zeichenfolgen in LCD oder UART sowie für Debug-/Wartungskonsole.
- XPRINTF - Vollständige Formatierung von Fprintf (), geeignet für eingebettete Verwendung.
- Tiny-Printf-Tiny, schnell, nicht abhängig und voll beladene Printf-Implementierung für eingebettete Systeme. Umfangreiche Testsuite.
- Tiny-Printf NEU-Verbesserte und gewartete Gabel von
tiny-printf . Tiny, Fast (ISH), in sich geschlossene und voll beladene Printf, Sprinf usw. - Mini -Printf - minimale printf () -implementierung für eingebettete Projekte.
- Nanoprintf - Die kleinste öffentliche Printf -Implementierung für den Feature -Set.
- FMT - Moderne Formatierungsbibliothek, die eine schnelle und sichere Alternative zu C STDIO und C ++ iostreams bietet.
- EMIO - Sehr kleiner binärer Fußabdruck Std :: Format wie Formatierung mit C ++ 20.
Scanf
- SCANF - Tragbare Implementierung von Scanf -Eingangsfunktionen in C.
- ft_scanf - einfacher scanf %s %c %d.
Protokollierung
- Embedded -Log - Kleine und schöne eingebettete Protokollbibliothek für MCU.
- EasyLogger-Ultra-Lichtgewicht (ROM <1,6K, RAM <0,3K), Hochleistungs-C/C ++-Protokollbibliothek.
- TRICE-Super schnell und winzig eingebettetes Gerät C printf-ähnlicher Trace-Code (auch in Interrupts) und Echtzeit-PC-Protokollierung (Trace-ID-Visualisierung).
- Embedded-Diagnostic-Logger-Leichter Logger-Framework für kleine Mikrocontroller-basierte Projekte. Multilevel -Protokoll- und Token -basierte Stingentransfer.
- SPDLog - Sehr schnell, nur Header/kompiliert, C ++ - Protokollierungsbibliothek.
- ELOG - Log -System wird für eingebettete Systeme mit mininmaler Ressourcenauslastung nachgedacht. Das Protokollsystem ist so konzipiert, dass die Speicherkompsumierung in Flash oder RAM minimiert wird und einen effizienten In-RAM-Loggin-Puffer mit sehr effizientem Speicher ermöglicht.
GUI
- LVGL-leistungsstarke und benutzerfreundliche eingebettete GUI mit vielen Widgets, erweiterten visuellen Effekten (Deckkraft, Antialiasing, Animationen) und niedrigem Speicheranforderungen (16K RAM, 64K Flash).
- EasyGui - EasyGui für eingebettete Systeme (hoch optimiert für STM32).
- TouchGFX - Benutzerfreundliches grafisches C ++ - Tool als kostenloses Tool im STM32 -Ökosystem integriert.
- Egui - Eine Egui -eingebettete Grafikbibliothek.
- ESLOWGRAPHICS - Software -Grafikbibliothek mit niedriger Ebene von Fehloft (ESLGL).
- FTK - GUI -Bibliothek für eingebettetes System.
- U8glib - Universal Graphics Library für 8 -Bit -eingebettete Systeme.
- u8g2 - U8Glib -Bibliothek für monochrome Displays, Version 2.
- SGFX - Leichte eingebettete Bibliothek für Displays und Touchscreens, die alles für das Erstellen einer vollständig vorgestellten eingebetteten GUI bereitstellen.
- GUIX - Bietet eine vollständige, eingebettete grafische Benutzeroberfläche (GUI) -Bibliothek und Designumgebung, in der die Erstellung und Wartung aller von Ihrem Gerät benötigten grafischen Elemente erleichtert werden.
- Guilib - GUI -Bibliothek für eingebettete Systeme.
- HMI_LIBRARY - Human Machine -Schnittstelle für eingebettetes System geeignet.
- AFGUI - Eingebettete GUI -Bibliothek.
- MakiseGui - Grafik- und GUI -Bibliothek für Einbettungssysteme.
- Emgui - Einfache C -UI -Bibliothek für eingebettete Plattformen.
- HAGL - Leichte Hardware Agnostische Grafikbibliothek für eingebettete Geräte. Es unterstützt grundlegende geometrische Primitive, Bitmaps, Blitzen und Schriftarten fester Breite. Die Bibliothek versucht leicht zu bleiben, zielt jedoch einigermaßen leistungsstarke Mikrochips wie ESP32 ab. Es gibt keine dynamische Zuweisung.
- Embedded -Graphics - 2D -Grafikbibliothek, die sich auf eingebettete Speichereinschränkungen konzentriert, um Grafiken zu zeichnen, ohne Puffer (ROB) zu verwenden.
- Lovyangfx - Display (LCD / OLED / EPD) Grafikbibliothek (für ESP32 SPI, I2C, 8BitParallel / ESP8266 SPI, I2C / RP2040 SPI / ATSAMD51 SPI UND MEHR).
- Ugui (µgui) - Eine grafische Bibliothek. Es unterstützt Farbe, Graustufen, Monochrom und mehrere Anzeigen, Touchscreen, Fenster und Objekte, grundlegende geometrische Primitive, Schriftarten, Konsole. Es gibt keine erforderliche dynamische Zuordnung und keinen Speicher für den Bildschirmpuffer. Dokumentation auf der Website des Entwicklers verfügbar.
GUI -Redakteure
- LV_GUI_DEsigner-Drag & Drop, einfacher GUI-Designer, der mit LittleVGL erstellt wurde.
- Walv - Online, Wysiwyg GUI Designer für Littlevgl. Plattformübergreifend unterstützt (sogar Android und iOS).
Schriftart
- Bitmap-Osd-font-eine 'C' Bitmap-Schrift für die Bildschirmanzeige.
- TTF2MESH - Bibliothek für TrueType Font Tessellation. Ermöglicht das Umwandeln von Schriftarten in die Glyphen in die Mesh -Objekte ohne Raster.
- sfam_generator - einfache Skripte zum Generieren von Bit -Schriftarten für STM32, AVR, Arduino oder andere MCU.
- MCUFONT - Eine Schriftart -Rendering -Bibliothek für Mikrocontroller.
Schriftarten und Ikonen
- PICON-PICO-ICON-SET mit hackbarer Ligature (auf einem 8-Gitter ausgestattet: bei 8px 16px 24px 32px 48px lesbar).
Bild Manupulation Tools
- LCD-Image-Converter-Tool zum Erstellen von Bitmaps und Schriftarten für eingebettete Anwendungen; Ermöglicht Ihnen, Bitmaps und Schriftarten zu erstellen und sie für eingebettete Anwendungen in das Quellformat "C" zu verwandeln.
Hardware
- Eingebettete Fahrerbahner - Embedded -Treiberbibliothek für verschiedene Peripheriegeräte.
Io
- FASTIO - FAST GPIO von http://os.mbed.com/users/sissors/code/fastio/.
USB
- TinyUSB - plattformübergreifender USB -Stapel für eingebettetes System.
- libusb_stm32 - Leichter USB -Gerätestapel für STM32 -Mikrocontroller.
- Cherryusb - Tiny, wunderschöner und tragbarer USB -Host und Gerätestapel für eingebettetes System mit USB.
Blitz
- SFUD - Serial Flash Universal Treiber (mit JEDECs SFDP Standard Serial (SPI) Flash Universal Treiberbibliothek).
Kann Bus
- libcanard-Kompakte Implementierung des Uavcan/Can-Protokolls in C für hochintegrierte Echtzeit-eingebettete Systeme.
- CANBUS -MESSAGE - CAN MONTAL Assembly and Demontage Library für Teensy & STM32.
- CANBOOT - Can Bootloader für MCUS (derzeit werden LPC176X, STM32 und RP2040 MCUS unterstützt).
Andere
Thread Management
- C-Thread-Pool-Minimaler, aber kraftvoller Fadenpool in ANSI C.
Bootloader
- McUBOOT - Sicherheitsschuh für 32 -Bit -Mikrocontroller.
- OpenBLT - Open Source -Bootloader für STM32, XMC, HCS12 und andere Mikrocontroller -Ziele. Es unterstützt Kommunikationsschnittstellen wie: RS232, CAN, USB, TCP/IP und es wird mit dem benutzerfreundlichen Mikroboot-PC-Tool zum Initiieren und Überwachung des Firmware-Updates geliefert. Es wird ebenfalls unterstützt, Firmware-Updates direkt aus einer SD-Karte durchzuführen.
- Tinyuf2 - Bootloader basierend auf TinyUSB für eingebettete Geräte wie ESP32, STM32 und IMX RT10XX.
- Wolfboot - Tragbarer, OS -Agnostic, Secure Bootloader für Mikrocontroller, unterstützende Firmware -Authentifizierung und Firmware -Update -Mechanismen.
Firmware -Updates
- UF2 - USB -Blitzformatspezifikation zum Blinken von Mikrocontrollern über MSC (Massenspeicherklasse; AKA Abstandsblitzlaufe).
- SWUPDATE - Software -Update für eingebettete Linux -Geräte, um das System im Feld zu aktualisieren. Swupdate unterstützt lokale und OTA -Updates, mehrere Update -Strategien und ist mit Blick auf die Sicherheit konzipiert.
Touch-Screen
- TSLIB - Touchscreen Access Library.
Zeitmanagement Libs
- Timelib - Zeitverwaltungsbibliothek für eingebettete Geräte.
- μTZ - Zeitzonenbibliothek für winzige eingebettete Systeme.
Einbettungsbare Skripte und Sprachen
- Little - Eine kleine, schnelle, leicht einbettbare Sprache, die in einer einzelnen .c -Datei implementiert ist.
Compiler
- SDCC - Small Device C Compiler (that targets the Intel MCS51 based microprocessors (8031, 8032, 8051, 8052, etc.), Maxim (formerly Dallas) DS80C390 variants, Freescale (formerly Motorola) HC08 based (hc08, s08), Zilog Z80 based MCUs (Z80, Z180, SM83, Rabbit 2000, 2000a, 3000a, TLCS-90), Padauk (PDK14, PDK15) und Stmicroelectronics STM8).
- TCC - Tiny C Compiler (~ 100 KB für X86 TCC Executable, einschließlich C -Präprozessor, C -Compiler, Assembler und Linker).
- LCC - Retargetable ANSI C -Compiler (Gabel für ULP in ESP32).
- PCC - Tragbarer C -Compiler (Spiegel).
- Tinygo - Go Compiler für kleine Dinge: Mikrocontroller, WebAssembly (WASM/WASI) und Befehlszeilen -Tools (basierend auf LLVM).
- Chibicc - Ein weiterer kleiner C -Compiler, der die meisten C11 -Funktionen implementiert.
- RVCC-BootstrapT C Compiler für 32-Bit-RISC-V- und ARM-ISAs (generiert ausführbare Linux-Elf-Binärdateien für RV32IM und ARMV7).
Nicht kategorisiert
- Apache -NUTTX -Apps - Sammlung von Tools, Shells, Netzwerk -Dienstprogrammen, Bibliotheken, Dolmetschern und können mit dem NUTTX -RTOS verwendet werden.
- MODM - Barebone Eingebettete C ++ 20 Bibliotheksgenerator für AVR-, SAM- und ARM -Cortex -M -Mikrocontroller (unterstützt 3534 -Geräte).
- CEMBED - Kleiner Versorgungsunternehmen zum Einbetten von Dateien in einen C -Header.
- INCBIN-Ein-Header-Bibliothek für die Einbettung von Binär- und Textdateien für Kompilierzeiten.
- WTX - Eine Reihe von weborientierten Tools.
Beitragen
- Ihre Beiträge sind immer willkommen! Bitte lesen Sie zuerst die Beitragsrichtlinien.
Fußnoten
Bitte folgen Sie diesem Root-Repo, um die neuesten Updates zu erhalten.