J1939 on Zephyr RTOS

Integrating a vendor-certified SAE J1939 protocol stack onto Zephyr - demonstrated on Infineon AURIX, portable to any CAN FD-capable MCU. Functional safety and cybersecurity evidence included.

The de-facto standard on heavy-vehicle CAN networks. Mandatory for interoperability, contractual for OEM acceptance.

J1939 at a Glance

SAE J1939 is the higher-layer protocol that runs on top of CAN in trucks, agricultural and construction vehicles. It defines how ECUs name data, address each other, move large messages and report faults.

PGN / SPN

Message and signal identity - every parameter on the bus has a unique name.

Addressing

Source address, destination, and dynamic address claiming for plug-and-play ECUs.

Transport

BAM and RTS/CTS segmentation for messages larger than 8 bytes.

Diagnostics

DM1 / DM2 fault reporting - active and previously active trouble codes.

Integration Architecture

The certified stack rides on top of Zephyr. We build the glue layer - the only new safety-relevant code - and validate the integration end-to-end.

Certified J1939 Stack
PGN/SPN handling | address claiming | J1939-TP | DM1/DM2 diagnostics
Vendor-certified | delivered as-is
Porting / Glue Layer
CAN TX/RX callbacks | timers | buffers | OS abstraction | config
Linumiz deliverable
Zephyr CAN Subsystem + ISO-TP
Native driver API | ISO 15765-2 transport | CAN-FD capable
Upstream Zephyr | production-ready
Target MCU
CAN / CAN-FD controller | Physical layer (e.g. AURIX MCMCAN)

Stack stays untouched

Integrate, don't fork - modifying certified code destroys its evidence.

Thin, auditable glue

The port is small, reviewable, and the only new safety-relevant code we own.

Stable interface contract

One documented boundary between stack and Zephyr so either side can evolve.

Re-run conformance

Validate the integrated build against the vendor's J1939 test suite.

Zephyr Foundation & the Gap

Zephyr provides the transport foundation. We add the certified J1939 application layer on top - not rebuild what already exists.

Already in Zephyr

  • Native CAN subsystem Unified driver model, CAN-FD capable, clean device API.
  • ISO-TP (ISO 15765-2) In-tree: single/first/consecutive frames, flow control, reassembly.
  • RTOS plumbing Threads, timers, work queues, memory slabs, stable OSAL surface.

The Gap We Fill

  • No J1939 application stack PGN/SPN, address claiming, J1939-TP, DM diagnostics - none in Zephyr.
  • No conformance certificate Even a community module would carry no OEM-acceptable conformance evidence.
  • No integration evidence Safety (SEooC AoU mapping), security (R155 CVE ownership), and timing validation.

What Linumiz Delivers

We own the integration from certified stack to running hardware - and deliver the evidence that makes it auditable.

Glue Layer + Bring-up

OSAL shim, CAN binding, timer mapping. First J1939 frames on the AURIX target. Small, reviewable, safety-relevant.

Conformance Re-test

Vendor's J1939 test suite re-run on the integrated build. Conformance evidence preserved through integration.

Safety & Security Evidence

SEooC Assumptions of Use mapping. UNECE R155 CVE ownership split. Footprint, timing and CPU load benchmarking.

Safety: the SEooC Model

The certified stack is an SEooC (ISO 26262) - developed standalone against assumed safety requirements. Integration validity depends on those assumptions being met.

Stack = SEooC

Built and certified standalone. Carries: safety manual, assumptions of use (AoU), and conformance evidence.

Assumptions of Use

  • CAN driver timing within assumed bounds
  • Sufficient, correctly-sized buffers
  • OSAL primitives behave as expected
  • Config stays within certified ranges
  • API boundaries preserved

Our Obligation

Validate every AoU is met by the Zephyr + AURIX integration - and document the evidence. Unmet assumption = broken safety argument.