Currently I'm pretty far out to sea with a combination of Visual Studio Code, the Platform.io extension, while writing new code in C++ using avr-gcc.

I'm hoping for a combination that would offer the most crossover educational value, in the event that I potentially experiment (if only to prove the Arduino platform's superiority to any doubters) with non-Arduino-specific embedded development.

The default IDE seemed to present me with less information about the remarkably sound underpinnings and marvelous overall artistry with which they've woven the many different design techniques and languages together. I'm mainly curious about other (inferior to Arduino, mind you), more widely used combinations / tool chains in the world of embedded programming.

  • Comments are not for extended discussion; this conversation has been moved to chat. – VE7JRO Nov 3 at 16:11

A great deal of what you learn with any comprehensive IDE will transfer to another one, if you need to. The IDEs that come to mind are Eclipse (listed first, only because it is my personal choice and has a broad range of application), Visual Studio, and others I have no experience with.

The Arduino IDE is as limited as you found it, primarily because it was written as (1) a learning tool for (2) AVR-based Arduinos, and goes to some lengths to offer an easier entry into embedded systems programming for non-programmer hobbyists. To that end, it achieves its goal very well. But as you have observed, you quickly run into its limitations, especially when your goal is to branch out onto other processors and other tool-sets.

Once someone is over the hump of basic programming and debugging, more advanced tools like a full-on IDE take most of those limitations out of your way, at the cost of less hand-holding, but by that time, you presumably need the freedom much more than the help!

I don't want to outright tell you "You need to use FiddleFoo 18.4 or you'll never get anywhere" - one (or a couple) of the industrial strength IDEs will appeal to your view of programming and your personal work-style. Try a few of them, paying attention to what toolsets and processors each one can target with OEM or third-party support, for the processors you think you might become interested in. It's quite likely T-H-E right IDE for you will stand out from the rest.


Eclipse will need a plug-in to target Arduino and other embedded system boards. The one I use - and the only one being maintained AFAIK - is Sloeber by Jan Baeyens, who occasionally posts here as jantje. It is pretty comprehensive, including the ability to write and import new board descriptors.

Memory limitations come with the hardware, and while compiler advances can help this out, it's pretty much governed by the numbers. An Arduino Uno still has only 2K of RAM and 32K of Flash minus whatever the bootloader uses (if you choose to use a bootloader). Heap is still problematic for all the usual reasons - fragmentation of free memory (positioned, as it is, between static area and the bottom of the stack), and reduction of available stack and/or data space. There are, of course, more embedded boards available, with larger memories, but that just helps you put off the inevitable. I view the use of heap in an embedded system as a reliability issue even more than as a memory limitation; it is all too easy for fragmentation and memory leaks to eventually take down your system, and a Blue Screen Of Death is a big no-no in embedded systems.

  • I appreciate the input, JRobert. It's been some years since I used Eclipse, and the only reason I stopped then was due to insufficient RAM, which shouldn't be an issue these days. I take it there isn't any plug-in / extension required? Also, since posting the original question last night I was able to find an older, but interesting, discussion concerning language use and memory limitations of various boards. Have these last five years changed that consensus (avoid the heap, C is best) with the increases in available onboard memory? – Withnail Nov 2 at 15:36

Not the answer you're looking for? Browse other questions tagged or ask your own question.