Pigweed#

Sustained, robust, and rapid embedded product development for large teams

Get started#


Tour of Pigweed

Explore key Pigweed features, such as hermetic building, full C++ code intelligence in VS Code, communicating with devices over RPC, host-side and on-device unit tests, and lots more in a guided walkthrough.

Bazel quickstart

Fork our minimal, Bazel-based starter project to create a new Pigweed project from scratch. The project includes a basic blinky LED program that runs on Raspberry Pi Picos and can be simulated on your development host.

More get started guides

Set up a C++-based Zephyr project, set up GitHub Actions, integrate Pigweed into an existing Bazel project, and more.

Pigweed SDK launches with Raspberry Pi RP2350#

The first preview release of the Pigweed SDK has launched with official hardware support for Raspberry Pi’s newest microprocessor products, the RP2350 and Pico 2! Check out the following blog posts to learn more:

What is Pigweed?#


Libraries

Over 150 libraries (“modules”) enabling you to use modern C++ and software development best practices without compromising performance, code size, or memory

Automation

Easier automated building, testing, and linting for Bazel, GN, and CMake projects

Environments

Hermetic and replicable development environments for your entire team - no more struggling with toolchains and “it worked on my machine”

Frameworks

Turnkey solutions for new projects that want to make full use of everything that Pigweed offers

Who’s using Pigweed?#

Pigweed has shipped in millions of devices, including Google’s suite of Pixel devices, Nest thermostats, satellites, and autonomous aerial drones.

Showcase: pw_console#

pw_console is our multi-purpose, pluggable REPL and log viewer. It’s designed to be a complete development and manufacturing solution for interacting with hardware devices via pw_rpc over a pw_hdlc transport. Gone are the days of hacking together a REPL and log viewer for each new project!

Using pw_console to interact with a device

Using pw_console to interact with a device#

What’s new in Pigweed#

Highlights (Sep 20, 2024 to Oct 3, 2024):

  • The pw_async2 and pw_containers docs now contain code examples that are built and tested alongside the rest of Pigweed, minimizing the chance that they bit rot over time.

  • The new pw::async2::Dispatcher class is a single- threaded, cooperatively scheduled runtime for async tasks.

  • The new pw::uart::UartBase class provides a common abstract base class for UART interfaces.

  • pw::rpc::RawServerReaderWriter and pw::rpc::RawClientReaderWriter have new methods that let you directly serialize RPC payloads to the RPC system’s encoding buffer instead of requiring a copy from an externally managed buffer.

See Oct 3, 2024 in our changelog for details.

Talk to us#


Chat room

For real-time discussion with the Pigweed team, head over to our Discord.

Monthly community meeting

Our next Pigweed Live is Mon Oct 21, 2024 1PM (PDT). Please join us to discuss what’s new in Pigweed and anything else Pigweed-related that’s on your mind. Join our mailing list to receive an invite to the next meeting.

Issues

Found a bug? Got a feature request? Please create a new issue in our tracker.