cryptoauthlib icon indicating copy to clipboard operation
cryptoauthlib copied to clipboard

Add proper Zephyr module support with updated HAL for v3/v4 compatibility

Open tbitcs opened this issue 7 months ago • 2 comments

Summary

This PR introduces first-class support for integrating CryptoAuthLib as a Zephyr module, compatible with Zephyr v3 and v4. It enables seamless integration into modern Zephyr-based applications using CMake and Kconfig, and updates the I2C and SPI HALs to align with Zephyr's evolving include path conventions.

Note: This change breaks compatibility with Zephyr v2.x due to header path and module resolution changes.


Key Changes

  • Added module.yml to enable Zephyr module recognition via west.
  • Introduced ATCA_ZEPHYR_SUPPORT CMake option to toggle Zephyr build mode.
  • Created zephyr_options.cmake to map CONFIG_ATCA_* Kconfig options to internal CMake flags.
  • Refactored HAL sources (I2C, SPI) to use updated Zephyr include paths (zephyr/drivers/...) required in Zephyr ≥ v3.
  • Updated top-level CMakeLists to:
  • Detect Zephyr toolchain
  • Build as a zephyr_library() when enabled
  • Export include paths and config headers for Zephyr apps

Integration Instructions

To include CryptoAuthLib as a Zephyr module:

Option 1: In-tree

Place CryptoAuthLib under modules/lib/cryptoauthlib and it will be automatically detected.

Option 2: Out-of-tree

If using a separate path:

# Add this line before find_package(Zephyr)
set(EXTRA_ZEPHYR_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/../modules/lib/cryptoauthlib)

Kconfig Support

Once integrated, you can configure CryptoAuthLib via prj.conf using new symbols:

CONFIG_ATCA_HAL_I2C=y
CONFIG_ATCA_CRYPTO_MBEDTLS=y
CONFIG_ATCA_DEVICE_SUPPORT_ECC608=y

These options automatically propagate to the CMake build system, enabling or disabling relevant sources and flags.


Compatibility Notes

  • Verified working on Zephyr v3.5 and v4.1.0
  • Breaks backward compatibility with Zephyr v2.x
  • No functional changes for non-Zephyr builds (Linux/MPLAB/Harmony remain unaffected)

Request

If possible, please test against MPLAB Harmony and existing Linux builds to ensure continued compatibility. Feedback and improvements welcome!

Feature branch: https://github.com/BitConcepts/cryptoauthlib/tree/feature/zephyr-module-support-v3-v4

tbitcs avatar Jun 16 '25 22:06 tbitcs

Follow-Up Update: I2C Send Function Refactored for Zephyr HAL

This follow-up commit introduces a significant improvement to the I2C HAL layer for Zephyr:

Summary

Refactors hal_i2c_send in hal_zephyr_i2c.c to support word-address-based I2C transfers and improve compatibility with Zephyr's I2C API.

Key Changes

  • Updated function signature: uses word_address instead of address for semantic clarity.

  • Reads device address from ATCAIfaceCfg, supporting both atcai2c->slave_address and cfg->dev_addr for backward compatibility.

  • Implements a two-message I2C transfer:

    • First message transmits the word address.
    • Second (optional) message transmits the data buffer, if data is provided.
  • Uses i2c_transfer() instead of i2c_write() for explicit control over transaction flags.

  • Sets appropriate I2C flags:

    • I2C_MSG_WRITE
    • I2C_MSG_STOP only after the final message
  • Adds parameter validation for both the Zephyr I2C device and the provided config structure.

Motivation

Many I2C peripherals require a separate word address phase before sending data. This update ensures broader device compatibility and aligns our I2C send logic with Zephyr HAL best practices.

Impact

  • Increases robustness and configurability of I2C transactions.
  • No API change for external callers of hal_i2c_send(), aside from the renamed argument.
  • Improves support for devices with word-addressed registers (e.g., EEPROMs, secure elements).

ElectroInnovator avatar Jul 09 '25 01:07 ElectroInnovator

This PR has been marked as stale and will be automatically closed in 7 days.

github-actions[bot] avatar Sep 07 '25 20:09 github-actions[bot]

This PR has been marked as stale and will be automatically closed in 7 days.

github-actions[bot] avatar Nov 18 '25 20:11 github-actions[bot]

Just checking in on the status of PR #407. I understand things can get busy, but I wanted to keep this from going stale. If there are any updates or concerns, please let me know how I can assist to help move this forward. Thank you!

tbitcs avatar Nov 26 '25 01:11 tbitcs

Hi @tbitcs , We are planning this PR for review and merge at our next CAL release (mostly on v3.8.0 slotted for ~ Mar release - for your note and info.

Srinivas-E avatar Dec 03 '25 11:12 Srinivas-E