Abstraction Layers for Zephyr RTOS - Version 4.0.0 Released

Hi everyone,

We are pleased to announce the release of the Abstraction Layers version 4.0.0 for Zephyr RTOS.

The git repository contains the Abstraction Layers and 3 VEE Port samples for the following boards:

It can be customized for any board supported by Zephyr by following How to configure a new
board
section of the README.

Here are the major changes:

  • Migration to Zephyr version 4.4.2.
  • Add the Central Role of the Bluetooth foundation library: scanning, connection,
    pairing, GATT read/write, and notifications/indications.
  • Build the Crypto (formerly Security) and
    SSL foundation libraries on Mbed TLS 4.1 and TF-PSA-Crypto.
  • Use picolibc as the C library instead of newlib.
  • Select the target board with a single Gradle property, -Pveeport.board=<name> (mimxrt1170, mcxn947, nrf54l15).
  • Configure the boards with Zephyr’s own mechanisms (board .conf and .overlay files, board extensions) instead of per-board CMake files.
  • Update the following foundation libraries inside VEE Port Samples:
    • MicroEJ SDK → 1.8.0
    • Bluetooth → 3.0.0
    • NET Pack → 15.0.1
    • Crypto → 2.1.0

Some cryptographic algorithms are no longer available in the Crypto and SSL foundation libraries, because Mbed TLS 4.1 and TF-PSA-Crypto do not provide them:

  • The DES and DESede ciphers.
  • The secp192r1, secp192k1, secp224r1 and secp224k1 elliptic curves.
  • The TLS 1.2 RSA, RSA-PSK, DHE and static ECDH key exchanges.

A complete list of changes introduced in this release is available in the changelog

The VEE Port source code is available on GitHub: GitHub - MicroEJ/VEEPort-Zephyr at 4.0.0 · GitHub

List of foundation libraries now supported by Zephyr’s Abstraction Layers:

Migrating from 3.1.0

  1. Remove the Zephyr patches of version 3.1.0. From the bsp directory, with the Python virtual environment activated, run west patch clean.
    • Version 3.1.0 patched the Zephyr sources, and west update refuses to move a patched Zephyr tree to the new version.
    • This command restores the Zephyr tree with git checkout . and git clean -d -f -x: any change of your own in bsp/zephyr is lost.
  2. Run scripts/setup.sh (or scripts/setup.bat) again. It updates Zephyr to 4.4.2, the Python packages, and the Zephyr SDK, then applies the patches of version 4.0.0.
  3. Run bsp/zephyr-app/vee/scripts/clean.sh (or clean.bat) script, so that the next build starts from the new Zephyr version.
  4. Select the board with -Pveeport.board=<name> (or veeport.board=<name> in gradle.properties). Gradle now derives the Zephyr board and the MicroEJ Architecture from this property:
    • In bsp/zephyr-app/vee/scripts/set_project_env.sh (and .bat), remove the BOARD value you set for your board. A hard-coded value overrides the board selected by Gradle.
    • In gradle/libs.versions.toml, remove the architecture group and name you set for your board. Only the architecture version is read from this file.
  5. If you added your own board:
    • Add it to the board list in gradle/boards.gradle.kts, with its Zephyr board name, its MicroEJ Architecture, and its VEE Port group. -Pveeport.board accepts only the names of this list.
    • Move the content of its bsp/zephyr-app/main/boards/<board>.cmake file to the .conf and .overlay files of the board. This file is no longer read.
    • Rename the CONFIG_MICROEJ_SECURITY options to CONFIG_MICROEJ_CRYPTO. Zephyr stops the build on an unknown option.
  6. If your application uses one of the removed algorithms listed above, switch to a supported one, such as AES, secp256r1, or an ECDHE key exchange.

Happy coding!
The MicroEJ Team.