Google’s Pigweed For ARM Development Is A Nice Surprise

Setting up an environment for Embedded Development was traditionally a pain and so vendors provide integrated development environments to help bridge the gap. Google has open-sourced their version of an embedded targeted environment designated as embedded-targeted libraries which they trademarked Pigweed.

Google trademarked Pigweed with the U.S. Patent and Trademark Office in February and it popped up on the Google Open Source Blog along with some details.

The repository contains what Google is calling modules but taking a better look reveals that it a little more than that. Packaged in a Python Virtual Environment is a number of tools including an ARM compiler, the clang-format tool and Python 3.8 interpreter which runs more than a few things. The modules that come with Pigweed assist developers by running micro-automations such as the pw_watch module that monitors files for change and triggers a build, test and even flash and debug on hardware. There is also a module that allows pre-submit checks such as linting and formatting.

Google still does not consider this offering production ready though from what we have seen so far, it is a great place for many to start experimenting with for their embedded development automation needs. Anyone tried it out yet?

If you have been inspired with the amazing powers of automation and want to dive in yourself, have a look at Software Development in BASH and Continuous Integration with Python.


25 thoughts on “Google’s Pigweed For ARM Development Is A Nice Surprise

    1. Drivers are the domain of the operating system. This would spit it out to a standard port/device that you will have previously installed the correct drivers for for the USB to serial solution in your product. Or maybe you’ve got an actual serial port and transparent level conversion straight to the SPI header.

    2. mbed CMSIS-DAP debuggers don’t need any drivers, at least on non-microsoft platforms. They work with all ARM Cortex chips and they cost about $3 so why bother with anything else?

  1. It’s cool, but does anyone else think it looks very heavyweight for what it offers?

    There’s no HAL or peripheral helpers or anything, and I need to set up a new environment for it?

    Promising idea, but nah. Call me when it can set up a UART. I don’t mean to criticize such an early-stage project, but this is Google; they can take it. It needs a more compelling use case before I’d want to try it.

    Also, this is Google; $5 says they sunset this within 3 years, leaving anyone who did adopt it holding the bag.

      1. It’s a big effort to incorporate a large system like this into your workflow.

        If I did that, I would hope for more long-term support than “pull requests welcome”.

    1. “I don’t mean to criticize such an early-stage project” but that is exactly what you are doing. Are you saying that you have no control over your own typing?

      “Call me when it can set up a UART. ” Hey we are calling you, it uses pyserial to set up a UART. In fact it even parses the serial output automatically for running unit tests.

      ” It needs a more compelling use case before I’d want to try it.” that would be nothing more than your own lack of imagination, you can bring up any project you want on this platform.

      1. Sorry if I offended you; I’m just happy with the tools I have now and don’t see a reason to use this.

        Are you saying that this platform provides a way to configure SPI, UART, I2C, USB, etc peripherals without using a vendor-specific library? That would be very exciting.

        1. This is not about platform specific hacks, this is a better development environment. Do you have platform-independent libraries? Great, import them.

          So you don’t even want to experiment with continuous integration? Why? The framework automatically rebuilds and downloads as you edit. Does your unit test framework work as well as this one? I bet not. Nobody does enough testing so anything that makes it easier is a good thing. Is it really true that there is nothing for you to learn here?

          This is not an all-or-nothing proposition, you don’t have to give up any of the tools you have. Shoot, you might even learn something about continuous development that you can carry over to your other platforms.

          1. Not particularly; to me, CI seems like a poor fit for embedded development. I imagine that I would brick a lot of boards if my code ran every time that I saved a file, and some of them are a pain to revive.

            Statically-allocated C++-style strings are neat, but not worth adopting a new development environment over IMO. Plus, ARM-only is very limiting.

            If I were interested in a more integrated environment, I’d use PlatformIO which is also open-source and also supports Python scripting in the build environment.

            But this is just one developer’s opinion, there’s no need to get upset about it. I sure don’t drive the market with my Makefiles and “not invented here” nearsightedness.

  2. I would rather donate to Platformio, than even touch anything coming from google.
    Once google stops their business model based on advertisements I’lll start giving them back a captital g.

    Advertisements are a way to give attention to products which do not deserve them, and to push any projects from the market which do not have an advertisement budget. I always put on add blockers on every website. No exceptions. And I refuse to look at websites that nag about add blockers. There are (still) plenty of other websites that do not nag me.

    Any website that starts with “We respect your Privacy” per definition does not.
    If they respected my privacy they would not need the stuff that forces them to put up those nag screens.

    I do donate to open source projects though.

      1. Hackaday is still very usable with an ad blocker and without clicking on the nag bar at the bottom of my screen. Hackaday does not seem to be (in want of) monetary donations.
        One of the things I do here is to try to help people by moving to perfectly usable Open Source programs. For example, by putting a bit of time into converting someone else eagle project into KiCad. It helps both the “yet-another-m68k-homebrew” project ( curiosity for KiCad was already in writing) and KiCad ( successfully converted project, REAL advertisement without bull. KiCad mentioned a few times in the project logs. etc.

        I’ve also contributed to Hackaday by submitting on the tip line, and a handful of these tips have become Hackaday articles, and by dropping links in the comments to other projects wherever I find it applicable.

        I’m longing for the Internet of the ’90-s, from before it was taken over by people smelling money and when you had to put in some effort to create a website, which kept most of the babbling idiots at bay. Back then it was easy to find quality content. Now it’s much harder to find them without sites such as Hackaday which collect links to interesting places.

        1. ” from before it was taken over by people smelling money”

          Wow, your memory is really really bad. The Internet was Always about making money. You don’t remember when Verizon bought up just about every ISP? You don’t remember when all those AOL disks showed up in your mail and in every product you bought? Do you really think they were giving that stuff away? You don’t remember Elon Musk and Jeff Bezos salivating over all the money they were going to make??? WOW

          “Back then it was easy to find quality content. Now it’s much harder to find them”. You are aware that all that old stuff is readily available and easily found at

          1. You completely miss the point.
            Is it really so hard to understand?
            It’s the whole attitude in this (western?) world where it is accepted as “normal” to collect money, with no regard whatsoever to consequences to others. If you can collect 10ct but it costs someone else USD5 you’re considered a hero.
            What is the price of happiness?

            With a little bit of thought about how your own actions affect others and taking that into the equation this could be a beautiful world to live in. Instead (almost) everybody seems to be on a quest to push the rest of the world down for personal gain.

            Human thought processes have evolved for living in small groups, where people were dependent on each other and cooperation benefited the group. This mechanism does not work anymore in this overcrowded world. Things like this become very clear if you go hiking for a few days, walk from small villages to larger towns. With each km you get closer to a large town people become less friendly and more on their guard. Most of them don’t even realize it, because they’ve been building artificial walls around their souls for their whole life it has become “normal”. They’re not even able anymore of imagining another way of life. They do not see and therefore do not care how they’re being exploited by the wolves and sharks that are produced for this never ending quest for collecting more money.

  3. so, platformio?
    when the whole thing runs in a browser to a hosted toolchain-as-a-service, and the ide can interface locally with in-circuit programmer/debuggers via webusb, then I’ll raise an eyebrow. maybe both of them.

    1. Then we can agree to disagree.
      When a program needs a browser to run it’s instant garbage bin for me, especially if it needs the whole internet to do something on my local computer or even switching a light bulb.
      It’s why I never used Chillipeppr for example, but use bCNC instead, which is a program I quite like for CNC stuff.

      I don’t do programming for big platforms, and I can’t see a “Blue Pill” hosing such a tool chain. If I did some more programming for my Cubie boards and BBB’s I would first look into remote debugging with GDB.

      I did spend half an hour on a (probably) similar setup on the BBB. When I bought it, it’s instructions was to plug it into an USB port, start a browser and browse to some local IP address, where I got to view and use some IDE I did not like (Cloud 9?) for a programming language I did not want to learn (Java?).
      I was impressed though by something like that working out of the box and without installing a single line of code on my desktop computer. That was approx 5 years ago.
      (Maybe I had to write an udev rule to get it going).

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.