Embedded Programming Without the IDE
reecestevens.me
Embedded Programming Without the IDE
1–10 of 59 posts
Re: Embedded Programming Without the IDE
#2That said, I think he's onto something here because, invariably, the IDE experience for embedded programming sucks. The amount of chipsets that pretty much force you to use an outdated compiler toolchain with some shitty unmaintained Eclipse plugin, or Visual Studio 2008 or whatever outdated piece of shit, is baffling.
I'll never understand why professional embedded developers just suck this up. I know large companies that develop enormous C codebases in stuff like Notepad++ or SlickEdit with ancient toolchains, no way to attach a debugger, and no way to automate tests. When I moved from embedded programming to web dev, I moved to an environment where people care about their own productivity. I can't understate how different that is, it was a breath of fresh air.
Re: Embedded Programming Without the IDE
#3I'm blown away by the features, speed of code completion, tooling, and great built-in terminals. These's were all the features I've wanted for a while but always seemed kind of clunky in vim plugins (I didn't look too hard :)). I'm still not a fan of the memory footprint but I have plenty of it.
I'm not an embedded guy, but Makefiles are super versatile, I still use them to automate everything from building large latex docs to trivial git commits. I consider Make one of the greatest pieces of free software developed.
Re: Embedded Programming Without the IDE
#4I know that IDEs are incredibly popular nowadays, but I do 100% of my development in Vim without any issues. It does require proficiency with the command line, Makefile and shell scripting though.
For instance the Makefile shown in TFA is not great, in particular because it doesn't track changes on header files. My personal template looks like:
NAME = my_prog
CFLAGS = -Wall -O2 -MMD -MP
SRC = main.c foo.c bar.c
OBJ = $(SRC:%.c=%.o)
DEP = $(SRC:%.c=%.d)
$(NAME) : $(OBJ)
$(info LD $@)
$(CC) $(LDFLAGS) -o $@ $^
-include $(DEP)
%.o: %.c
$(info CC $@)
$(CC) -c $(CFLAGS) -o $@ $
Note that it hides the actual commands being executed unless you set "V" on the command line, which I know some people actively dislike.The "magic" here is the "-MMD -MP" flags to gcc to generate header dependencies and the "-include $(DEP)" to integrate them in the Makefile.
Re: Embedded Programming Without the IDE
#5I'm very unlike the author in that I mostly dislike the terminal and I really like IDEs. That said, I think he's onto something here because, invariably, the IDE experience for embedded programming sucks . The amount of chipsets that pretty much force you to use an outdated compiler toolchain with some shitty unmaintained Eclipse plugin, or Visual Studio 2008 or whatever outdated piece of shit, is baffling. I'll neve…
Re: Embedded Programming Without the IDE
#6I'm very unlike the author in that I mostly dislike the terminal and I really like IDEs. That said, I think he's onto something here because, invariably, the IDE experience for embedded programming sucks . The amount of chipsets that pretty much force you to use an outdated compiler toolchain with some shitty unmaintained Eclipse plugin, or Visual Studio 2008 or whatever outdated piece of shit, is baffling. I'll neve…
No need to configure tons of vim plugins, you have tons of powerful features in the default settings, like type hierarchy, call hierarchy, debugging etc.
Re: Embedded Programming Without the IDE
#7I'm very unlike the author in that I mostly dislike the terminal and I really like IDEs. That said, I think he's onto something here because, invariably, the IDE experience for embedded programming sucks . The amount of chipsets that pretty much force you to use an outdated compiler toolchain with some shitty unmaintained Eclipse plugin, or Visual Studio 2008 or whatever outdated piece of shit, is baffling. I'll neve…
Eclipse CDT is perfect for embedded developing, with no real competitor. Given the compilation command line output, its buildin parser can understand very large code base (the linux kernel, chrome browser et) efficiently and precisely, long before llvm-based tools appeared. No need to configure tons of vim plugins, you have tons of powerful features in the default settings, like type hierarchy, call hierarchy, debugg…
Check the linked article for more details: https://developer.mozilla.org/en-US/docs/Mozilla/Developer_g...
Re: Embedded Programming Without the IDE
#8I'm very unlike the author in that I mostly dislike the terminal and I really like IDEs. That said, I think he's onto something here because, invariably, the IDE experience for embedded programming sucks . The amount of chipsets that pretty much force you to use an outdated compiler toolchain with some shitty unmaintained Eclipse plugin, or Visual Studio 2008 or whatever outdated piece of shit, is baffling. I'll neve…
That said, there are some promising projects out there. PlatformIO seems to offer a more comprehensive solution. arduino-cli is useful for those who don't use IDEs and appears to be something that IDE developers can build upon.
Re: Embedded Programming Without the IDE
#9Hasn't Make been launched in, like 1976? And vi in '77. Congrats on rediscovering them.
Re: Embedded Programming Without the IDE
#10I'm very unlike the author in that I mostly dislike the terminal and I really like IDEs. That said, I think he's onto something here because, invariably, the IDE experience for embedded programming sucks . The amount of chipsets that pretty much force you to use an outdated compiler toolchain with some shitty unmaintained Eclipse plugin, or Visual Studio 2008 or whatever outdated piece of shit, is baffling. I'll neve…
Life as an amateur is probably worse. I understand why businesses don't focus on this market, but the hurdles imposed on simply getting into embedded programming are absurd. Yes, you have things like Arduino that can target multiple platforms. On the other hand, all of the hand-holding with libraries and hardware modules doesn't exactly encourage diving deeply into the subject. Then there is the stuff that simply isn…
As a professional (as in getting paid to do it), I shed being ashamed of using Arduino a while ago. With PlatformIO, you have great tooling and you can avoid the garbage that are the vendor supplied IDEs. And even tough the Arduino HAL isn't exactly elegant, I can switch between uCs without having to learn a new API. I can even port between uCs by simply changing some pin names and so on.
I'm currently looking into other frameworks, like Zephyr, to trade up from Arduino, and I'm especially looking into using Rust in the future (because Rust would give me an actual benefit to offset the cost of using the "harder" language, which will in the long run make stuff easier).
But the ease of use, especially ease of prototyping, of Arduino + PlatformIO is now the baseline.
There is also MicroPython and Espruino - again, stuff that people will make fun of for you using, but you won't care because you will have to much fun using it. Performance and size penalties means they don't work for all problems, but often enough, they do.
There is even working examples for using Swift on uCs - and I really wish that language was better supported under Linux.