ifm CR1140 Rust-HAL & SDK
Open Source, Rust, C#, Embedded, HMI, CAN

ifm CR1140 Rust-HAL & SDK

Native Rust-Hardware-Abstraktionsschicht und SDK für das ifm CR1140/CR1141 ecomatDisplay — die eigene Anwendung läuft anstelle der ausgelieferten CODESYS-Runtime.

Beschreibung

Das ifm CR1140 / CR1141 (ecomatDisplay 4,3″) ist ein robustes Bediendisplay auf Basis eines NXP i.MX 8M Nano (aarch64) mit Yocto-Linux. Ab Werk läuft darauf eine CODESYS-Runtime. cr1140-hal ist eine native Rust-Hardware-Abstraktionsschicht, mit der du deine eigene Anwendung anstelle dieser Runtime baust und ausführst — volle Kontrolle über das Panel, kein CODESYS dazwischen.

Was sie bereitstellt:

  • Display: eine stride-bewusste xRGB8888-Surface mit copy_from-Blit, dazu ein fbdev/linuxfb-FbDisplay (800×480, formatgeprüft, optional Double Buffering und Backlight-Blanking).
  • Eingabe: evdev-Tastaturdekodierung — InputEvent zu Button/ButtonEvent, mit Geräteerkennung über den Namen und epoll-tauglichen File Descriptors.
  • CAN: ein CanBus über SocketCAN (öffnen / senden / empfangen).
  • System: ein typisiertes LED-Enum, Backlight-Steuerung, SoC-Temperatur und weiterer sysfs-basierter Gerätezugriff.
  • Persistenter Speicher: ein Retain-Store, der Reflashs übersteht — über die beschreibbare Overlay-Partition des Geräts und das Werks-EEPROM.

Auf der HAL sitzen zwei UI-Stacks. Auf der Rust-Seite treibt cr1140-sdk (Run-Loop, Telemetrie, Konfiguration, Persistenz) Slint-Demo-Apps an, statisch für aarch64 mit cargo-zigbuild cross-kompiliert. Auf der .NET-Seite ist Cr1140.Avalonia eine Avalonia-LinuxFramebuffer/DRM-Support-Bibliothek — als NuGet-Paket veröffentlicht — mit evdev-Tastatureingabe, einem SoftKeyFooter-Control, rotierenden fbdev- und tearing-freien DRM/KMS-Ausgabe-Backends, Onboard-LED-Steuerung und einer System-Telemetrie-API; eine Avalonia-Demo-App rendert direkt nach /dev/fb0, und ein Desktop-Emulator (Cr1140.Avalonia.Emulator) lässt dieselbe App in einem Fenster mit Geräte-Bezel auf einem Entwickler-Host laufen. Reversible Deploy-Skripte deaktivieren und maskieren den CODESYS-Dienst — mit getestetem Weg zurück zum Auslieferungszustand.

GitHub: https://github.com/uptux/ifm-cr1140

Tech-Stack

  • Rust
  • C# / .NET
  • Avalonia
  • NuGet
  • Slint
  • SocketCAN
  • Linux Framebuffer / DRM/KMS / evdev / sysfs
  • NXP i.MX 8M Nano (aarch64)
  • Yocto-Linux
  • cargo-zigbuild