Embedded Systems Abstraction Layers

What are MicroEJ Abstraction Layers?

MICROEJ VEE is agnostic about peripheral hardware, drivers, software stacks or operating systems.

Thanks to MicroEJ VEE, the hardware specific software is clearly separated from the virtualization layer, which contains the sandboxed applications. The intermediate stage (between low-level software and applications) is called an abstraction layer.

Example of such functionalities are network, user interface, bluetooth. All MicroEJ Abstraction Level APIs are defined in C header files: a set of functions that must be implemented, most of the time using languages such as ASM, C or C++.

MicroEJ provides generic abstraction layers for typical peripherals used across various industries.

Any engineer can define its own Abstract Layer, to connect a specific peripheral to an API provided by its tuned VEE.

Core Abstraction Layers

The Core abstraction layers provides the basis features needed by the MEJ32 such as a timer, a standard output and the current time. This abstraction layer usually relies on an RTOS or an OS but it can be implemented using a hardware timer on baremetal systems.

Sample of supported implementations

  • FreeRTOS
  • Mbed OS
  • Linux
  • POSIX
  • SEGGER embOS
  • QNX
  • Micrium µC/OS-II
  • Micrium µC/OS-III
  • VxWorks
  • Keil RTX
  • Express Logic ThreadX
  • MQX
  • AUTOSAR OS
  • PikeOS
  • QP/C QXK
  • Apache Nuttx

User Interface Abstraction Layers

UI abstraction layers defines the API to connect VEE with the various inputs (buttons, touch, switches, etc.) and the outputs (serigraph display, LCD displays, LEDs, etc.) of a device. The software graphical engine shall connect with the display driver, dialog with optional graphical hardware acceleration (GPU). These Abstraction Layer is tightly coupled with the display connection type, the LDC controller, the pixel format, etc.

Sample of supported implementations

  • Touch : capacitive, resistive
  • Buttons, rotary switch, joystick, voice command, GPIO, etc.
  • Pixel Formats
    • 24BPP RGB888
    • 18BPP RGB666
    • 16BPP RGB565
    • 8BPP RGB222
    • 8BPP LUT
    • 4 BPP
    • 2 BPP
    • 1 BPP
  • Connection Types
    • 24-bit with VSYNC
    • 16-bit with VSYNC
    • 18-bit parallel
    • 16-bit parallel
    • MIPI DSI
    • SPI
  • Hardware Acceleration
    • ST Chrom-ART
    • MediaTek G2D
    • D/AVE 2D
    • Renesas Graphics Architecture (RGA)
    • VeriSilicon Vivante GPU
  • LCD Controllers
    • OTA5180A
    • SSD1963
    • SSD1322
    • ST7789H2
    • JDI
    • ST7789
  • MCU LCD Controllers
    • LCDC
    • DSI
    • GLCDC
    • VDC5
    • SPI

Filesystem Abstraction Layers

Filesystem abstraction layers implements standard file operations on top of a persistent storage.

Sample of supported implementations

  • FatFS
  • Linux POSIX
  • Micrium µC/OS-FS
  • Express Logic FileX
  • SEGGER emFile
  • PikeOS Virtual FS

Network Abstraction Layers

Network abstraction layers provides TCP, UDP and network management capabilities to the application network library. They depend usually on an IP software stack but they can also be implemented on top of a network hardware module.

Sample of supported implementations

  • lwIP
  • Express Logic NetX
  • Micrium TCP/IP
  • Linux BSD/POSIX
  • HCC TCP/IP
  • AT Commands based modules

Wi-Fi Abstraction Layers

Wi-Fi abstraction layer is an extension of the network layer. It includes functions to list Wi-Fi access points, connect to one or create one.

Sample of supported implementations

  • Espressif ESP32
  • Qualcomm GT202
  • Murata Type1LD
  • Murata Type1DX
  • TI CC3220SF
  • TI CC3100
  • Silicon Labs WF200
  • Microchip RN171
  • Cypress CYW43438

SSL/TLS Abstraction Layers

SSL/TLS abstraction layer is an extension of the network layer. It provides the capability to manage secured client or server sockets for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. These abstraction layers are implemented on top of SSL/TLS software libraries.

Sample of supported implementations

  • MbedTLS
  • WolfSSL
  • OpenSSL
  • SSL 3.0, TLS 1.1/2/3, Keystore, X509 certificates, etc.
  • One-way or two-way TLS communication

Cryptography Abstraction Layers

Cryptography abstraction layers provides implementation of cryptographic algorithms used by the security application library.

Sample of supported implementations

  • Encryption and Decryption
  • Keyed-Hash Message Authentication Code (HMAC)
  • Message Digest
  • Digital Signature (Sign and Verify)

These abstraction layers can use cryptography libraries and hardware acceleration.

  • OpenSSL
  • ESCRYPT CycurLIB
  • SEGGER emSecure

Bluetooth BLE Abstraction Layers

BLE abstraction layers provides Bluetooth Low Energy access for a peripheral.

Sample of supported implementations

  • Espressif ESP32
  • Dialog DA14681
  • u-blox NINA-B1
  • Murata Type 1LD

Get Started MicroEJ Technology

GET STARTED WITH MICROEJ

Get access to our featured starter kits (available with or without hardware) to let you try and evaluate our technology. Happy coding!

Get Started