Skip to content
alplabaiPublic

About

Unification C/C++ SDK for E1M edge-AI modules - one portable API across Alif Ensemble, Renesas RZ/V2N and DEEPX NPUs, on Zephyr, Yocto, and bare-metal

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

3,933 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Alp SDK β€” Unification SDK for E1M Edge AI Modules

Write once, run on any E1M module.

CI Release License Zephyr

Alp SDK is the unification software layer for Alp Lab edge AI modules built on the E1M open-standard form factor. It gives you one C/C++ API β€” <alp/...> β€” that works across every E1M-* SoM variant by wrapping each vendor's SDK on top of ARM CMSIS. Change som.sku: in a project's board.yaml, rebuild, ship β€” within a SoM family, no source changes.

Rendered docs: docs.alplab.ai/sdk/introduction Β· issues: github.com/alplabai/alp-sdk/issues

Quickstart

git clone https://github.com/alplabai/alp-sdk
cd alp-sdk

# Install tan, the standalone build CLI (separate repo: alplabai/tan-cli).
# Linux/macOS/WSL2:
curl -fsSL https://raw.githubusercontent.com/alplabai/tan-cli/main/install.sh | sh
# Windows PowerShell: irm https://raw.githubusercontent.com/alplabai/tan-cli/main/install.ps1 | iex
# Open a new terminal if `tan` isn't immediately on PATH.

tan bootstrap --sdk-root "$PWD"    # one-time: west + Zephyr workspace + Python deps.
                                    # Works natively on Linux, macOS, and Windows
                                    # (PowerShell) for the Zephyr-on-M path used below;
                                    # only the Yocto/A-class path needs WSL2 -- see
                                    # docs/cross-platform-setup.md.
tan doctor                         # sanity-check the host before building

# One-time: the arm-zephyr-eabi cross toolchain a real-SoM build needs --
# bootstrap does not install this for you. Run from the workspace tan
# bootstrap just created (one level above this checkout).
( cd .. && west sdk install --gnu-toolchains arm-zephyr-eabi --no-hosttools \
    --install-dir "$PWD/zephyr-sdk" )
export ZEPHYR_SDK_INSTALL_DIR="$PWD/../zephyr-sdk"

# Scaffold a sibling project and build it for its default target
# (E1M-AEN801). --sdk-root pins this checkout in my-app/.alp/sdk-path;
# `tan sdk install`/`switch` aren't ported yet, so pin explicitly for now.
tan init --name my-app --destination .. --sdk-root "$PWD"
cd ../my-app
tan build

Full walkthrough (real-hardware flashing, per-SoM options, editing in VS Code): docs/getting-started.md. tan is released independently from alplabai/tan-cli; the full verb reference is docs/cli.md.

The stack

What the SDK gives you, from model to silicon. Each layer is a real boundary: you can swap the SoM under it, or the OS slice inside it, without rewriting the layer above.

  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ E1Mβ„’ β€” Scalable AI Smarter Edge                                                   ⚑ Alp Lab β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ AI Models &   β”‚ ─► β”‚  Train (off-device):  TensorFlow Β· PyTorch  β†’  .tflite / .onnx         β”‚
  β”‚ Pipeline      β”‚    β”‚                                                                        β”‚
  β”‚               β”‚    β”‚  Compile (host):  tan model build  β†’  one fat .alpmodel package        β”‚
  β”‚               β”‚    β”‚     per-backend blobs:  Vela (Ethos-U) Β· DRP-AI Β· dxcom Β· CPU/TFLM     β”‚
  β”‚               β”‚    β”‚                                                                        β”‚
  β”‚               β”‚    β”‚  Model families:  classification Β· detection (YOLO v5/v8) Β·            β”‚
  β”‚               β”‚    β”‚                   segmentation Β· keyword-spotting Β· pose               β”‚
  β”‚               β”‚    β”‚                                                                        β”‚
  β”‚               β”‚    β”‚  β†’  the .alpmodel runs at RUNTIME via the SDK's Inference block ↓      β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ Dev Tooling   β”‚ ─► β”‚  board.yaml β†’ Python tan (in-process planner + executor)               β”‚
  β”‚               β”‚    β”‚  SDK reference emits: alp_project.py Β· alp_orchestrate                 β”‚
  β”‚               β”‚    β”‚  tan build / flash / image / size / clean                              β”‚
  β”‚               β”‚    β”‚  validate_board_yaml.py Β· program_eeprom.py Β· VS Code extension        β”‚
  β”‚               β”‚    β”‚  tan model build  β†’  .alpmodel   (the model-compile front-end)         β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ Alp SDK       β”‚ ─► β”‚  Peripherals             Audio                  Camera                 β”‚
  β”‚ <alp/*.h>     β”‚    β”‚  ─ GPIO / IΒ²C / SPI      ─ PDM in (mics)        ─ OV5640               β”‚
  β”‚               β”‚    β”‚  ─ UART / PWM / ADC      ─ IΒ²S out + amp        ─ CAM_MUX              β”‚
  β”‚               β”‚    β”‚  ─ CAN / RTC / WDT / USB ─ TAS2563                                     β”‚
  β”‚               β”‚    β”‚                                                                        β”‚
  β”‚               β”‚    β”‚  Inference  ──  the .alpmodel runtime (where on-device AI runs)        β”‚
  β”‚               β”‚    β”‚  ─ alp_inference_open_alpmodel()  loads the fat .alpmodel              β”‚
  β”‚               β”‚    β”‚  ─ selects the blob: silicon-ref + SRAM-fit + SoM auto_order          β”‚
  β”‚               β”‚    β”‚  ─ dispatches β†’  Ethos-U Β· DRP-AI3 Β· DEEPX DX-M1 Β· CPU / TFLM          β”‚
  β”‚               β”‚    β”‚                                                                        β”‚
  β”‚               β”‚    β”‚  IoT / BLE               Security               Storage                β”‚
  β”‚               β”‚    β”‚  ─ Wi-Fi 6 Β· MQTT        ─ MbedTLS PSA Crypto   ─ LittleFS             β”‚
  β”‚               β”‚    β”‚  ─ BLE 5.4               ─ OPTIGA Trust M       ─ <alp/storage.h>      β”‚
  β”‚               β”‚    β”‚                                                                        β”‚
  β”‚               β”‚    β”‚  Display / GUI           HW Info                DSP / Power            β”‚
  β”‚               β”‚    β”‚  ─ SSD1306 / 1331        ─ EEPROM manifest      ─ alp_dsp_* FFT/FAC/IIRβ”‚
  β”‚               β”‚    β”‚  ─ LVGL Β· GPU2D/Dave2D   ─ EEPROM hw_info      ─ <alp/tmu.h> Β· power  β”‚
  β”‚               β”‚    β”‚                                                                        β”‚
  β”‚               β”‚    β”‚  Heterogeneous IPC:  <alp/rpc.h> Β· <alp/system_ipc.h> Β· <alp/mproc.h>  β”‚
  β”‚               β”‚    β”‚     framed RPMsg/OpenAMP Β· auto endpoint IDs Β· mailbox/shmem/hwsem     β”‚
  β”‚               β”‚    β”‚  Vendor escape hatches:  <alp/ext/{alif, renesas, deepx}>              β”‚
  β”‚               β”‚    β”‚                                                                        β”‚
  β”‚               β”‚    β”‚  ── 80+ Tier-1 chip drivers + Tier-2 community repo:                   β”‚
  β”‚               β”‚    β”‚        lsm6dso, bmi323, bmp581, icm42670, ina236, tmp112,              β”‚
  β”‚               β”‚    β”‚        tcal9538, rv3028c7, 24c128, cc3501e, ssd1306,                   β”‚
  β”‚               β”‚    β”‚  ── User libraries (board.yaml libraries:):                            β”‚
  β”‚               β”‚    β”‚        ETL Β· fmt Β· nlohmann_json Β· doctest Β· LVGL Β· MbedTLS Β·          β”‚
  β”‚               β”‚    β”‚        CMSIS-DSP Β· LittleFS                                            β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ OS            β”‚ ─► β”‚  Zephyr (M-class cores) Β· Yocto (A-class cores) Β· Bare-metal           β”‚
  β”‚ (per-core     β”‚    β”‚  heterogeneous = peers on the same SoM (per-core in cores:)            β”‚
  β”‚  slice)       β”‚    β”‚                                                                        β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ Vendor SDK    β”‚ ─► β”‚  Alif Ensemble (AEN) Β· Renesas RZ/V2N Β· DEEPX DX-M1                    β”‚
  β”‚               β”‚    β”‚  NPU runtimes dispatched into: Ethos-U/Vela Β· DRP-AI Β· DEEPX dx_rt     β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ HW + HAL      β”‚ ─► β”‚  E1M (35Γ—35 mm) + E1M-X (45Γ—65 mm) SoMs  Β·  NPU silicon                β”‚
  β”‚               β”‚    β”‚  E1M-EVK / E1M-X-EVK reference boards  +  vendor HALs                  β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Two consumer paths

Both are first-class β€” pick whichever fits:

  • Standalone / hand-written firmware. Write Zephyr, Yocto, or bare-metal C directly against <alp/...> headers, using instance IDs from <alp/e1m_pinout.h> (E1M) or <alp/e1m_x_pinout.h> (E1M-X). The standalone path is not a fallback β€” it's what the studio path also compiles down to.
  • alp-studio codegen. alplabai/alp-studio (not a public GitHub repo) reads this repo's per-SoM presets (metadata/e1m_modules/<SKU>.yaml), runs its pin allocator, and emits the same <alp/...> calls you'd write by hand.

See ADR 0001 and ADR 0005.

Portability

Swap-and-run is measured within a SoM family, against the generated swap-test matrix: the 7 released E1M-AEN SKUs pass all three canonical examples (all 21 E1M cells), and the 6 E1M-X SKUs pass two of three (12 / 18 cells β€” adc-voltmeter fails on all six). Matrix at docs/portability-matrix.md. Crossing between E1M and E1M-X is intentionally out of scope: they're separate product lines with separate pinout namespaces (ADR 0011). Cookbook + worked examples: docs/portability.md.

Supported hardware

Family Form factor SKUs Primary silicon AI throughput OS targets
E1M-AEN E1M (35Γ—35 mm) E1M-AEN301/401/501/601/701/801 + E1M-AEN803 Alif Ensemble E3–E8 (Cortex-M55 + optional A32 + Ethos-U55, U85 on E4/E6/E8) up to ~1024 GOPS Zephyr Β· bare-metal
E1M-X V2N E1M-X (45Γ—65 mm) E1M-V2N101 Renesas RZ/V2N (4Γ— A55 + M33 + DRP-AI3) 4 TOPS Yocto (A55) Β· Zephyr (M33 system manager)
E1M-X V2N E1M-X (45Γ—65 mm) E1M-V2N102 Renesas RZ/V2N (4Γ— A55 + M33 + DRP-AI3) 4 TOPS Yocto (A55); Zephyr M33 tree not yet built
E1M-X V2N E1M-X (45Γ—65 mm) E1M-V2N103 Renesas RZ/V2N (4Γ— A55 + M33 + DRP-AI3) 4 TOPS Yocto (A55); Zephyr M33 tree not yet built
E1M-X V2N-M1 E1M-X (45Γ—65 mm) E1M-V2M101 Renesas RZ/V2N + DEEPX DX-M1 4 + 25 TOPS Yocto (A55) Β· Zephyr (M33 system manager)
E1M-X V2N-M1 E1M-X (45Γ—65 mm) E1M-V2M102 Renesas RZ/V2N + DEEPX DX-M1 4 + 25 TOPS Yocto (A55); Zephyr M33 tree not yet built
E1M-X V2N-M1 E1M-X (45Γ—65 mm) E1M-V2M103 Renesas RZ/V2N + DEEPX DX-M1 4 + 25 TOPS Yocto (A55); Zephyr M33 tree not yet built

All modules share the E1M open-standard form factor β€” pinout + mechanical spec in alplabai/e1m-spec (pinned v1.0). Evaluation kits: E1M EVK and E1M-X EVK, per-EVK detail in docs/boards/.

Firmware engineers, start here

Pick your SoM's one-pager, bring-up guide, and reference examples in docs/firmware-quickstart.md. New to the terms? docs/glossary.md. Stuck on an error? docs/troubleshooting.md.

Using with VS Code

This repo's .vscode/ config (extensions, tasks, c_cpp_properties.json) is pre-wired for Zephyr-module + plain-CMake development β€” clone, open the folder, accept the recommended extensions. For schema-aware board.yaml editing, a GUI configurator, and tan wrappers, install the alplabai/alp-sdk-vscode extension (a separate repo).

Alp Platform releases

One platform version pins five owned components, records the upstream pins and lists the validated hardware

An Alp Platform release is one version number for a tested stack: the Alp SDK, tan, the VS Code extension and the GD32 and CC3501E bridge firmware, built and bench-validated together on real modules. Each component keeps its own SemVer and gates; the SDK version below is unchanged by it.

  • Version: YY.M.MICRO[-rcN], for example 26.11.0. The month is never zero-padded (27.2, not 27.02). The first line is 26.11 (November 2026); a new line ships every one to two months.
  • Pin a workspace: tan 0.8.0, shipping with the 26.11 line, adds a platform command that pins a workspace to a line; tan doctor then reports any component that differs from the manifest.
  • Lock file: when a workspace is pinned, alp.lock records platform: {version, manifestSha256} and verify_lock reports a changed pin or an SDK version that differs from the pinned one. Without a pin the lock is unchanged.
  • Support: the latest line gets every fix; the previous line gets security and brick-risk fixes for three months after the next line ships.

Pinning a platform never flashes firmware.

Development hosts

First-class on Linux, macOS, and Windows 11/10 (native PowerShell or WSL2). Real-silicon Zephyr builds and tan build do not work on Intel Macs β€” the pinned Zephyr SDK dropped its macos-x86_64 host build; native_sim still works there. Yocto builds need Linux or WSL2 by upstream bitbake constraint. Per-OS quickstart + gotchas: docs/cross-platform-setup.md (ADR 0012).

Status

Verification status. Code merged β‰  verified: every claim is tracked in docs/test-plan.md, and a release doesn't tag until its gating rows flip to βœ…. Treat register addresses, timing values, and per-SoM accelerator wiring as paper-correct only until their test-plan row flips. Silicon-verified today: the V2N GD32-bridge campaign (since v0.6) AEN801 (15/17 peripheral apps) + CC3501E (Wi-Fi/BLE, GPIO proxy) since v0.8, and E1M-V2M103 (DEEPX DX-M1 inference, GD32 bridge, provisioning flow); breadth beyond these families remains pre-HIL. Per-driver status also lives in metadata/chips/<name>.yaml's verification: block and as @par Verification status: [UNTESTED] Doxygen tags.

Backlog (cherry-picked as items land, no per-version commitments β€” full list in VERSIONS.md): AEN family + V2N101 + V2M101 silicon-verified via self-hosted HiL Β· <alp/mproc.h> shmem/hwsem on Zephyr Β· <alp/power.h> fleshed out Β· concurrent multi-NPU dispatch on V2M101 Β· Mender OTA E2E on a V2N101 fleet Β· ABI snapshot frozen for v1.0 Β· ≀30-day customer onboarding dry-run Β· v1.0.0 after first customer pilot. Deferred indefinitely past v1.0: the Ubuntu backend and FreeRTOS/ThreadX/NuttX backends.

License

Apache License 2.0 β€” see LICENSE.

Copyright 2026 Alp Lab AB.

About

Unification C/C++ SDK for E1M edge-AI modules - one portable API across Alif Ensemble, Renesas RZ/V2N and DEEPX NPUs, on Zephyr, Yocto, and bare-metal

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages