The guest half of the RoSE HW/SW co-simulation bridge, packaged as a standalone Zephyr module.
It provides the on-SoC (guest) side of the RoSE lockstep bridge:
drivers/rose/—rose_adapter, the MMIO bridge transport to the RoSE synchronizer.drivers/sensor/— virtual Zephyrsensor_driver_apishims backed by the bridge (rose_imu,rose_tof,rose_tof_zone,rose_flow) — co-sim sensor models, not real hardware drivers.subsys/rose/— therose_protopacket layer.include/rose/— the guest API (rose.h,rose_proto.h,rose_sensor.h).dts/bindings/— theucbbar,rose-*devicetree bindings the samples bind against.samples/— low-level bridge validators (rxvalidate,protovalidate,dmavalidate).
The host half of the protocol (the Spike bridge in soc/src/main/cc/rose_spike, the
synchronizer, and the generated rose_packet.h) lives in the RoSE repo. Host and guest are
versioned against the same generated packet header, so keep them in sync when the wire
protocol changes.
Add zephyr-rose as a project in your application's west manifest and Zephyr discovers it
automatically (no ZEPHYR_EXTRA_MODULES):
manifest:
remotes:
- name: ucb-bar
url-base: https://github.com/ucb-bar
projects:
- name: zephyr-rose
remote: ucb-bar
revision: main
path: modules/lib/zephyr-roseThen west update, and west build -b spike_riscv64 <app> picks up the ucbbar,rose-*
bindings, drivers, and subsystems. Applications that consume it (rose_flight_controller,
rose_nav_controller, rose_multisensor_probe, …) live alongside it in the consuming
workspace.