There are many components required for embedded software development, including cross-toolchain, a build system like buildroot or YoCto Project, and debugging tools like OpenOCD. Once you’ve installed those, development involving several steps including building the code, flashing it to the board, and then running the program on the target.
Google would like to make embedded software development to be as easy as web development as possible, similar to editing a file and running it in a web browser, so they’ve just released Pigweed open-source collection of embedded-targeted libraries/modules to streamline the development process for 32-bit microcontrollers such as STMicro STM32L452 or Nordic Semi nRF52832.
Pigweed aims to help all steps of the process including tools/environment setup, program development, and code submission.
Setup consists of running a bootstrap script that will automatically install tools such as Python 3.8, clang-format, and an Arm compiler in a virtual environment in order to leave the system’s default environment unmodified.
There are several development “pw_” modules such as Pigweed’s pw_watch that will automatically detect file modification, cross-compile the code, push it to the target, and run a test unit. That means once the developer saves the file, and everything happens automatically.
While working as part of a team, people usually agree to a code formatting standard, but in my experience, some people may not be willing to adjust their ways or are simply not convinced of the importance of keeping a common format. pw_presubmit helps with this task by having linting and automatic formatting presubmit checks before a git commit.
If you wonder why Google went with the Pigweed name, here’s the explanation:
Pigweed, also known as amaranth, is a nutritious grain and leafy salad green that is also a rapidly growing weed. When developing the project that eventually became Pigweed, we wanted to find a name that was fun, playful, and reflective of how we saw Pigweed growing. Teams would start out using one module that catches their eye, and after that goes well, they’d quickly start using more.
Pigweed is still in early development, and should not be used for production at this stage. The source code is released under an Apache 2.0 license, and you’ll find out how to get started and an explanation for all module in the README file.
Thanks to Ben for the tip.