Tell Me About Your Toolchain

A question from listener and reader Taak:

Is there a chance we can get a blog post about setting up build systems (make, TCL, etc.) for embedded systems? Maybe how to integrate them with our text editors (sublime, VS Code)? I hate having to use a IDE GUI to build and hiding myself from the magic that goes on in the background. I feel like I should understand how to manually build, link, and flash stuff.

I think that is more a book than a post. There are too many variables there. And then there are too many configurations of each possible path. Worse, the variables they change with new versions of the tools, processors, HALs, and host operating systems.

To get my Nordic Semiconductor based Cortex-M4 system hooked up, I had to install GCC for ARM and Windows GNU Make using parts of Nordic's GCC and Eclipse Tutorial. To make it work with my JLink programmer, I used nrfutils. Then to hook it into VSCode, I used an extension to add in IDE style GDB debugging. VSCode already knows about make, so that was smooth. I also needed Python and intelhex for part of my process (involving security keys in the boot image).  I use an MS-DOS batch file to do manufacturing program (though I'm moving that to bash for my Mac teammates).

I read about 6 different blogs on how to configure all that and was shocked when it first worked. I had been using Eclipse but it ate its own project directory, stored (idiotically) outside my version control system and backed up at a frequency that made me decide to try something else before rebuilding Eclipse. I live in fear that some piece will change revision and knock down the house of cards so it won't run anymore (or so the next new person won't be able to put it together). While I run a Windows version of all of this, I support this tool chain for my Mac-using teammates so there is an additional level of risk and uncertainty.

For every processor, compiler, programmer, editor/IDE and dev operating system, this process will be different. That is one reason that I still am willing to (have other people) pay for IAR or Keil or one of the other pay-for IDEs. They aren't great but the installation process is "install IAR v6.7" and then focus on getting the product working. The free tools add exponential complexity during setup.

Reading your question again, checking if I answered it, I wonder did you listen to Alvaro's debugging Embedded episode? That or Andrei’s post on general setup may be all you wanted know about about vocabulary instead of the how-to specifics, for which I can only give you some information focusing on once instance.