Pigweed is a modular, open-source platform designed to streamline embedded development for large teams, aiming to enhance project velocity, sustainability, and product robustness. It provides heavily optimized and battle-tested C++ libraries, with growing support for Rust and Python, adaptable to various resource-constrained hardware and extreme environments. The platform emphasizes a Bazel-first build system strategy for hermeticity and ease of onboarding, alongside support for host-side simulation to enable rapid, hardware-agnostic firmware development. Pigweed also includes a suite of product lifecycle tools, such as interactive consoles and size reporting, to assist from development through mass production.
Exploring Pigweed: A Modular Platform for Embedded Development
0:00 - Introduction to Pigweed: Pigweed is a modular platform for embedded development, allowing teams to adopt only the necessary components rather than the entire suite.
0:30 - Target Audience and Mission: Primarily aimed at large embedded development teams, Pigweed seeks to increase team velocity, project sustainability, and product robustness. It addresses the inherent complexity of world-class product development at scale.
1:00 - High-Performance Embedded Libraries: Pigweed's modules are heavily optimized for resource-constrained hardware, battle-tested in millions of consumer devices, deployed in high-stakes environments like satellites, and designed for portability on both development hosts (via simulation) and various embedded systems.
1:45 - Comprehensive Build System Integrations: Pigweed offers full support for Bazel (recommended for new projects due to its thriving ecosystem and strong hermeticity guarantees), partial support for GN (with expected decline), CMake (for integrating into existing projects), and ongoing effort for Zephyr. It does not support Make, Buck2, Meson, or PlatformIO.
2:45 - Streamlined Development Environment: The Bazel-based development environment reduces new team member onboarding time and mitigates "works on my machine" issues through strong hermeticity. Linux and macOS are robustly supported, with Windows having more "sharp edges."
3:30 - Rapid, Portable Firmware Development: Pigweed provides extensive support for host-side simulation and testing, allowing core business logic to be developed and tested hardware-agnostically. This approach boosts team productivity, enables fast and reliable unit tests, and facilitates the use of advanced code analysis tools like ASan and fuzzers.
4:30 - Essential Product Lifecycle Tooling: The platform offers reusable tools to address common concerns in product mass production. Examples include pw_console for interactive console capabilities, lightweight scripts for factory-at-your-desk workflows, pw_bloat for generating size reports, and pw_web for creating custom web applications to communicate with embedded devices.
5:30 - Typical New Project Journey (Bazel): The recommended process for a new Pigweed project using Bazel involves forking the example Sense repo, adding Bazel support for vendor SDKs and other dependencies (ideally via Bazel Central Registry), creating hardware-agnostic Pigweed wrappers around vendor SDKs, and finally setting up device-specific build toolchains.
6:30 - Supported Driver and Peripheral APIs: Pigweed provides C++ abstract classes for common drivers and peripherals (e.g., ADC, GPIO, I2C, SPI, UART), with existing implementations for popular vendor SDKs like Raspberry Pi Pico C/C++ SDK, MCUXpresso, and STM32Cube.
8:00 - Bluetooth Functionality: Multiple Pigweed modules offer Bluetooth capabilities, including pw_bluetooth_sapphire (a full, production-deployed central/peripheral stack), pw_bluetooth (a generic BLE-only API), and pw_bluetooth_proxy for advanced packet management.
8:45 - Robust Language Support: Pigweed offers an extensive collection of C++ libraries (compatible with C++17/20 and indefinitely supported), incrementally adds Rust support with plans for significant growth (indefinite support alongside C++), and uses Python 3.10/3.11 as its primary language for scripting tasks, following Python's official support lifecycle.
9:45 - Next Steps for Engagement: For deeper understanding, users are encouraged to explore the "Tour of Pigweed" and study the "Sense" example project. Further questions can be addressed by filing bugs or reaching out via Discord or email.