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
.confand.overlayfiles, 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,secp224r1andsecp224k1elliptic 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
- Remove the Zephyr patches of version 3.1.0. From the
bspdirectory, with the Python virtual environment activated, runwest patch clean.- Version 3.1.0 patched the Zephyr sources, and
west updaterefuses to move a patched Zephyr tree to the new version. - This command restores the Zephyr tree with
git checkout .andgit clean -d -f -x: any change of your own inbsp/zephyris lost.
- Version 3.1.0 patched the Zephyr sources, and
- Run
scripts/setup.sh(orscripts/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. - Run
bsp/zephyr-app/vee/scripts/clean.sh(orclean.bat) script, so that the next build starts from the new Zephyr version. - Select the board with
-Pveeport.board=<name>(orveeport.board=<name>ingradle.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 theBOARDvalue you set for your board. A hard-coded value overrides the board selected by Gradle. - In
gradle/libs.versions.toml, remove the architecturegroupandnameyou set for your board. Only the architectureversionis read from this file.
- In
- 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.boardaccepts only the names of this list. - Move the content of its
bsp/zephyr-app/main/boards/<board>.cmakefile to the.confand.overlayfiles of the board. This file is no longer read. - Rename the
CONFIG_MICROEJ_SECURITYoptions toCONFIG_MICROEJ_CRYPTO. Zephyr stops the build on an unknown option.
- Add it to the board list in
- 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.
