I'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…
I'll never understand why professional embedded developers just suck this up Here's my point of view: historically, software engineers didn't pick the ecosystem. The electrical engineers did. They looked at (in descending order) cost, I/O capability, manufacturing lifespan, and then finally the software ecosystem. When things started getting too similar the chipmakers picked up on this and started selling the softwar…
Embedded Programming Without the IDE
41–50 of 59 posts
Re: Embedded Programming Without the IDE
#42On the flip side, I've only recently started using an IDE (vscode) after using a pretty light vim build for almost a decade to learn full stack app development (there's no demand for a crusty scientific programmer). I've also recently ditched my arch+awesome wm box for a mac. I'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…
Make is great if you understand how to use it. It's sort of like git in that many people just pick it up as needed and so they don't understand the underlying model, which makes it mysterious to them and causes it to break in ways they don't understand.
Re: Embedded Programming Without the IDE
#43Earlier quoted context omitted.
I'll never understand why professional embedded developers just suck this up Here's my point of view: historically, software engineers didn't pick the ecosystem. The electrical engineers did. They looked at (in descending order) cost, I/O capability, manufacturing lifespan, and then finally the software ecosystem. When things started getting too similar the chipmakers picked up on this and started selling the softwar…
The tooling is not very good because nobody pays for software tools. When the electrical engineers pick the ecosystem they are not stupid enough to just use whatever tooling comes with the ecosystem for free, they spend $50k/year per engineer(!) to buy adequate tools to make their engineers productive. In contrast, software engineers and their engineering organizations are happy to waste equally valuable engineers ju…
Re: Embedded Programming Without the IDE
#44Case in point, where it explains how to teach make to compile C files into object files, and then provides a rule to compile all files _from source_ rather than from object files.
# Tell make how to compile your *.c files into *.o files
%.o: %.c
gcc -c -o $@ $
This compiles the final binary from the sources, not using the object files and the rule above it.(And clearly the leading example was never tested as it also missed the closing parentheses after "$(CFLAGS"!)
Anyway to take advantage of the c->object rule, the sources of last line should be changed to use files like this:
# Finally, tell make how to build the whole project
final_binary.elf: $(SRCS:.c=.o)
gcc $(INCLUDE) $(LFLAGS) $^ -o $@
To be pedantic, the above will recompile faster but will not necessarily be correct when header files change, so with that change it would be good to integrate automatic dependency generation [1] as well (for the object files).[1]: https://www.gnu.org/software/make/manual/html_node/Automatic...
Re: Embedded Programming Without the IDE
#45Author here. Wow, I wrote this article back in college and I was really surprised to see it up here on HN! Pretty cool to see so many talented embedded folks reading my "write to learn" piece :) This blog post was the start of me figuring out the love of diving in deep to embedded development. Since then, I built a patient monitor device using this makefile-driven build approach. Nowadays, I am re-writing this device…
Any tips on getting completion working in vim for GCC-only CXX projects is highly appreciated...
Re: Embedded Programming Without the IDE
#46I'm surprised that the author equated embedded programming with IDEs! In my experience that's where the IDE programming fares poorly because every environment is different (so everybody has their "official" IDE that you need to relearn) whereas the low level tools tend to be fairly standard (you usually have a vendor-provided GCC toolchain and a few command line tools for generating images and flashing). I know that…
I think it depends how you get into it. I came to it from a hobbyist background, so using gcc and Makefiles was natural. But people coming from a commercial background will have had a variety of terrible IDEs inflicted upon them.
Re: Embedded Programming Without the IDE
#47Earlier quoted context omitted.
The tooling is not very good because nobody pays for software tools. When the electrical engineers pick the ecosystem they are not stupid enough to just use whatever tooling comes with the ecosystem for free, they spend $50k/year per engineer(!) to buy adequate tools to make their engineers productive. In contrast, software engineers and their engineering organizations are happy to waste equally valuable engineers ju…
Having used paid software development tools, I really don't think this is the case. In particular, I'm thinking of Xilinx Vivado, a popular FPGA IDE that starts at $3000/seat and is one of the worst pieces of software I've ever had to use. FPGA developers aren't cheap; I shudder to think of the amount of money paid for time spent dealing with issues and bugs in this program.
One more way to put it is that the fully-burdened cost of a standard software engineer is something like $200k/yr. At $3k/seat Xilinx Vivado probably cost less than 1.5% of your yearly cost to your company. If your company paid you $30k/seat, or 15% of the cost of each engineer using it, do you think you could make a system that makes you (and probably everybody else in your company using it) 30% more productive than using bare Xilinx Vivado (either a different product, making your own, configuring or working around problems in Vivado)? If so, that would clearly be an economically sound investment for your company even ignoring the much more significant second-order benefits of increased productivity. Do you think anybody even seriously considered the idea of spending $30k/seat to make you more productive since everybody I have ever talked to would consider that an absolutely ludicrous throw-you-out-of-the-room amount to spend on a software engineer even though it is in fact a mere 15% cost increase and would thus only require a similarly modest productivity increase to be economically sound. Given the way people normally talk about such a thing you would think it is increasing costs by 10x so would need to result in a 10x productivity increase to make economic sense, but that is just plainly not the case.
Re: Embedded Programming Without the IDE
#48I'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…
Had this sort of argument during an interview (I was applying for a junior embedded C developer position). I was talking about the fact that I had experiences building cross-compiler, that could come in handy with embedded development.
The guy stopped me right there and said, basically: "Just no. Let's just not. We're not doing that here and have no intention of starting doing that".
He went on to explain about it and basically it boils down to the fact while technically possible, anything outside the bsp (board support package, that is IDE + compiler/linker/debugger/programmer) is unsupported. The vendors just won't support anything that's not built with their tools (in retrospect, that's very reasonable).
So the practical reason is support.
Re: Embedded Programming Without the IDE
#49Earlier quoted context omitted.
The tooling is not very good because nobody pays for software tools. When the electrical engineers pick the ecosystem they are not stupid enough to just use whatever tooling comes with the ecosystem for free, they spend $50k/year per engineer(!) to buy adequate tools to make their engineers productive. In contrast, software engineers and their engineering organizations are happy to waste equally valuable engineers ju…
Having used paid software development tools, I really don't think this is the case. In particular, I'm thinking of Xilinx Vivado, a popular FPGA IDE that starts at $3000/seat and is one of the worst pieces of software I've ever had to use. FPGA developers aren't cheap; I shudder to think of the amount of money paid for time spent dealing with issues and bugs in this program.
In the embedded space, people like Green Hills Software charge lots of money for tools that they claim are worth it.
Re: Embedded Programming Without the IDE
#50I'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…
It's only been very recently that you can apply the enterprise development tools to the embedded space.
Embedded used to have all manner of screwball compilers to support some screwball architectures. Cygnus used to specialize in porting gcc to these architectures. Now, pretty much everybody has converged on gcc so you don't have to support weird, obscure things.
It's only been recently that so much embedded development has converged on 32-bit ARM Cortex. That's a lot fewer architectures you have to support and 32 bits instead of 8 bits means that you have a unified memory space rather than weird I/O accessors and chunked memory and far pointers and ... Now your tools can specialize in one debugging format/protocol and get better with time rather than having to be rewritten and rewritten and rewritten.
Embedded folks are starting to move. A lot of chip vendors support an Eclipse-based toolchain. Microchip threw in behind Netbeans (not a good move, but they realized they simply couldn't spend enough money on their proprietary IDE to keep it going). Microsoft is throwing stupid amounts of resource behind VSCode so it's going to be hard to match. The Rust embedded folks are getting really good with Visual Studio Code integration and the Visual Studio Code architecture is much better than most other IDEs. Other people are starting to realize that they can use "standard" tools as well.
However, the critical mass required has just coalesced and embedded development changes really slowly.