EntoBench is a framework and benchmark suite for computer vision, state estimation, and control kernels on insect-scale robots.
It targets ARM Cortex-M (STM32) MCUs and provides reproducible measurements of:
- Cycle counts
- Latency
- Peak power
- Energy
This Artifact Evaluation (AE) release reproduces the results in the paper’s Workload Characterization section using automated build scripts and GUI-based measurement tools.
- NUCLEO-STM32G474RE (Cortex-M4F)
- NUCLEO-STM32U575ZIQ (Cortex-M33F)
- NUCLEO-STM32H7A3ZIQ (Cortex-M7F)
- STLINK-V3PWR — current measurements, flashing, semihosting
- Saleae Logic Pro — logic timing & trigger capture
Alternative probes (e.g., X-NUCLEO-LPM01A) may work but are not officially supported.
All steps are automated via scripts in scripts/. Run them in order:
cd scripts
./00-install-system-packages.sh./01-install-arm-toolchain.sh./02-setup-python-venv.sh
source ~/.venvs/entobench-ae/bin/activate./03-setup-udev-stlinkv3pwr.sh
# unplug/replug STLINK-V3PWR after this- STM32CubeMonPwr: download from ST and extract to
~/external/STMicroelectronics/STM32CubeMonitor-Power/ - Saleae Logic 2: place AppImage under
~/external/logic2/
Register convenient launchers:
./04-register-cmp-logic2.sh
source ~/.bashrc./05-verify-setup.shgit clone https://github.com/cornell-brg/ento-bench.git
cd ento-bench./scripts/flow/00-setup-experiment-env.shCreates:
- Builds:
build/build-g474,build/build-u575,build/build-h7a3 - Experiments:
experiments/ae/m4/example/{example-cache,example-nocache}
./scripts/flow/01-launch-apps.shThen in your desktop/XRDP session, bring STM32CubeMonitor-Power and Logic 2 to the foreground.
- In Logic 2: press Play
- In CMP: press Start Acquisition
- In a terminal:
cd build/build-g474 make stm32-flash-bench-example-semihosted - Wait until the trigger pin (D7) goes low in Logic 2, then stop both acquisitions.
- Logic 2: Save a
.saland Export Raw Data to
experiments/ae/m4/example/example-cache/ - CMP: “Save Graph” to the same directory
(tip: the button can be finicky—click near the lower-right corner)
source ~/.venvs/entobench-ae/bin/activate
./scripts/flow/02-analyze-energy.sh \
-d experiments/ae/m4/example/example-cacheOutputs include cycle counts, average energy, peak power, and latency.
Expected/illustrative outputs are shown in docs/expected-results.md (PDF provided).
Change per-benchmark parameters in:
benchmark/configs/example_benchmarks.json(for the example)- Other domains under
benchmark/configs/
Disable caches by setting:
"enable_caches": falseRe-configure builds to propagate config changes:
./scripts/clean-and-rebuild.shCMP won’t launch (JavaFX error) or no GUI under XRDP
- Use the registered launcher which runs the bundled JRE and XRDP-friendly flags:
(The
cube-monitor-pwr
04-register-cmp-logic2.shscript sets this up as:SWT_GTK3=0 _JAVA_OPTIONS="-Dsun.java2d.xrender=false" "$CMP_DIR/jre/bin/java" -jar "$CMP_DIR/STM32CubeMonitor-Power.jar")
Logic 2 AppImage won’t start (FUSE)
- Install FUSE v2 compatibility:
sudo apt-get install -y libfuse2
udev permissions
- Re-run
./03-setup-udev-stlinkv3pwr.shand unplug/replug the device.
CMake floods warnings
- AE release globally suppresses most warnings in the top-level CMake for clarity.
ento-bench/
├─ benchmark/ # Benchmarks and configs
│ └─ configs/ # JSON configs (e.g., enable_caches)
├─ docs/ # Setup guides, expected results, customization
├─ scripts/ # Install & helper scripts
│ ├─ install/ # AE install scripts (00,01,02...,05)
│ └─ flow/ # AE workflow scripts (00,01,02...)
├─ src/ # Source code (kernels, eval framework)
├─ stm32-cmake/ # Toolchain files & MCU configs
├─ tools/ # Analysis scripts (rename/sync/analyze)
└─ build/ # Generated build dirs (after setup)
- Tag:
v1.0.0-ae - Any AE-only fixes will bump the last segment:
v1.0.0-ae.1,v1.0.0-ae.2, …
Please cite our paper (to appear) if you use EntoBench in your research. Will be added upon publication.
TBD (will be updated upon camera-ready).
- Issues & feature requests: GitHub Issues
- Hardware enablement requests welcome (open an issue with board details)
