
semf – die unverzichtbare Library für Ihre Embedded Software Projekte
Jetzt beraten lassenDer Embedded C++ Baukasten
Mit der semf Middleware Library stehen Ihnen viele nützliche Module und Schnittstellen für Ihre Embedded Projekte zur Verfügung. Durch die Plattformunabhängigkeit aller Komponenten kann Sourcecode einfach wiederverwendet werden und Projekte können mühelos auf eine neue Hardware portiert werden.
Freuen Sie sich auf der Applikationsseite auf einfach verständliche Interfaces und viel schon erledigte Arbeit durch semf.
Wir wissen sehr gut, dass standardisierte Komponenten für den ein oder anderen Spezialfall nicht 100%ig passen –
aus diesem Grund sind alle Komponenten so aufgebaut, dass sie mühelos umkonfiguriert oder angepasst werden können.
Die Komponenten
Die größte Herausforderung der modernen Embedded Software Entwicklung ist es, komplexe Applikationen in einfach anwendbare und wartbare Module herunterzubrechen.
Die semf Library unterstützt Entwickler mit einfach verständlichen und robusten Softwaremodulen – passend für fast jeden Mikrocontroller. Die hohe Qualität der Module hilft Technologiefirmen schneller zu entwickeln und erspart Entwicklern gleichzeitig Frustration beim Debuggen.
Steigern auch Sie Ihre Entwicklungseffizienz und werden Sie Teil der Leading Edge Embedded C++ Community.
Core
Die Kernkomponenten sind zentraler Bestandteil der Library und auch vieler semf Komponenten selbst. Selbstverständlich maximal Performance-optimiert.
Signal Slot
LinkedList
LinkedQueue
Array
Buffer
Debug
Error
Bootloader
Failsave und sicheres Firmware-Update-Verfahren – Out of the Box. Mit wenigen Zeilen Code ist die gewünschte Verschlüsselung konfiguriert und das passende Zertifikat eingestellt.
Firmware Packer
Firmware Updater
Bootloader
Communication
Die Kommunikationsmodule reichen von Spi, I2c, Can und Uart über USB bis hin zu Ethernet und bieten applikationsseitig ein standardisiertes Interface. Damit sind z. B. Stacks in Windeseile getauscht.
StreamProtocol
I2cScanner
SoftI2cMaster
I2cSlaveDevice
I2cSlaveRegisterDevice
SpiSlaveDevice
SpiSlaveRegisterDevice
Storage
Für eine schnelle und fehlersichere Programmierung werden alle gängigen Speichertechnologien unterstützt. Darüber hinausgehend ist ein ausgefeilter Logger-Mechanismus und eine EEPROM-Virtualisierung vorhanden.
Logger
EepromEmulation
FlashVerifier
FlashTester
I2cEeprom
SpiNorFlash
Processing
Processing beinhaltet verschiedene Komponenten und Algorithmen, die bei der Verarbeitung von Daten unterstützen. Vom DataStream, der Daten korrekt zwischen Little- und Big-Endian umrechnet, bis zum LinearInterpolator, der effizient in bis zu dreidimensionalen Datenquellen interpolieren kann.
Average
Endian
CrcSoftware
DataStream
DivideWithRound
LinearInterpolator
PidController
System
Hier finden Sie alles rund um die Zeit, von einer Zeitbasis über SoftwareTimer bis hin zur Systemzeit und Zeitstempeln.
SoftwareTimer
TimeBase
SystemClock
DateTime
Date
Time
Input
Die Logik der Module für Inputs reicht von Interrupt-getriebenen Eingängen und einer Frequenzmessung über entprellte Eingänge bis hin zu einem Sensormodul.
FrequencyIn
Sensor
DigitalIn
DigitalInInt
DigitalInPolling
DebouncedDigitalIn
Polling
Output
Im Bereich der Outputs ist das schönste Modul LedDimming; basierend auf einem PWM-Ausgang, können Leds unter anderem Plug & Play, Wabern und Faden.
DigitalOut
LedBlinking
LedDimming
SoftPwm
PwmOut
Hardware-Abstraktion
Hardware-Abstrahierungen
Für die performante Abstraktion der Hardware bietet die semf Library eine Vielzahl an Interfaces, die bei uns für jede Mikrocontrollerfamilie implementiert und intensiv getestet wird.
- Input
AnalogIn, AnalogInDma, InputCapture, ExternalInterrupt
- Output
AnalogOut, AnalogOutDma, Pwm, OutputCompare
- Communication
I2cMasterHardware, I2cSlaveHardware, SpiMasterHardware, SpiSlaveHardware, UsbHostHardware, UsbSlaveHardware, UsbOtgHardware
Ethernet, UartHardware, CanHardware - Processing
CrcHardware - System
Power, CriticalSection, Flash, Gpio, Rtc, Timer
Plug & Play Implementierungen
Für folgende Mikrocontrollerfamilien kann die semf Library sofort genutzt werden:
- STMicroelectronics
STM32F4, STM32F7, STM32H7, STM32F0, STM32F1, STM32F3, STM32G4, STM32L0, STM32L4 - Espressif
ESP32-S2, ESP32-C3 - Hilscher
NETX 90 - NXP (in progress)
LPC1100, LPC1300, LPC1700, LPC1800, LPC54, LPC55, K32 L2, K32L3 - Giga Devices (in progress)
GD32F1, GD32F2, GD32F3, GD32F4, GD32VF1
Implementierungsservice
Mit unserem Hardware-Abstraktions-Implementierungsservice stellen wir Ihnen innerhalb von kurzer Zeit die passende Hardware-Abstrahierung für fast alle Mikrocontrollerfamilien zur Verfügung.
- Spechen Sie uns gerne darauf an.
Beispiel Signal Slot
Die Signale in semf sind ein sehr einfacher und flexibler Weg Callbackfunktionen zu nutzen.
Ein Signal kann man sich vorstellen wie eine Nachricht, die unter einer bestimmten Bedingung abgesendet wird. Der Slot, also der Empfänger, ist eine einfache Funktion oder Memberfunktion, welche mit einem Signal verbunden wird. Nachdem ein Slot mit einem Signal verbunden wurde, wird nach Absenden der Nachricht der Slot aufgerufen. Dabei können ihm Variablen übergeben werden oder es können auch mehrere Slots nacheinander dieselbe Nachricht erhalten.
Erfahren Sie mehr über die einzelnen Komponenten in unseren Tutorials. Alle Tutorials finden Sie auf der Seite Dokumentation.
void slot1() { printf("slot1() was called\n"); } int main() { Signal<> signal; signal.connect(&slot1); signal(); while(1) {;} }
Output:
slot1() was called
Mit Ihrer Lizenz können Sie sämtliche Komponenten aus den zurzeit acht Kategorien für beliebig viele CPUs und Produkte nutzen. Und natürlich arbeiten wir daran, dass die Bibliothek weiter wächst. Neue Tools, Programmierhilfen und Frameworks werden ständig in die Library integriert, denn wir wollen, dass Sie semf dauerhaft als Ihr tägliches Arbeitsinstrumentarium für die Embedded Software Entwicklung nutzen.
Damit Sie die semf Library schon kurzfristig einsetzen und so den maximalen Nutzwert erzielen können, ist in der Lizenzgebühr eine umfangreiche, qualifizierte und persönliche Einführung inklusive. Das semf Onboarding beinhaltet die Einrichtung der Library sowie eine Schulung zu deren Nutzung.
