Performance and program size disadvantages of Arduino on AVR and reducing them using LLVM
summary
Implements a custom LLVM pass that resolves Arduino digitalWrite/digitalRead pin-number math into direct AVR port writes at compile time, using Clang/LLVM for AVR but linking with AVR‑GCC because the AVR backend is experimental; repository contains an Arduino hardware folder configured for Clang and the optimization pass. Benchmarks use a blink test and show frequency rising from ~144 kHz -> ~2 MHz. Notes disabled LTO, removed interrupt-table use of function-pointer arrays, and reports I/O and size win.
AI-written summary · about
chapters (9)
- 0:00Introduction
- 0:43What is Arduino
- 1:50Advantages
- 3:10Disadvantages
- 4:04Why use LLVM
- 5:15Limitations
- 5:55Optimization
- 6:43Testing
- 7:32Other opportunities
related talks
17mMaking LLVM RISC-V Compiler More Performant for Everyone
42mpicolibc: a C library for small 32-bit systems
54mCost of Abstractions in Embedded Systems
27mBreaking Barriers: Arduino Core API advancements in Zephyr, Linux and IoT Systems
10mSoftware PPA Metrics Results from Real world MCU Security Applications
23mRunning an Open Source LLM on Open Source Hardware
22mOptimize Your Industrial IoT Application in Every Dimension
01h 01mMicrocontrollers in Micro-increments...
