Live data from Hacker News

Steps to designing an embedded software architecture, Step 1

embedded.com

11–20 of 22 posts

Re: Steps to designing an embedded software architecture, Step 1

#11
post #4

Is separating the hardware and software layers really a radical notion for embedded programming?

Well yes, but "embedded" is a pretty broad category.

Some major cases are:

- High-volume and cost-driven: where a you're picking the cheapest MCU you can make work (often by a matter of cents).You want to squeeze every last bit of performance (or IO, or power consumption, or pinout, or whatever the drivers are).

- Real-time: where abstracting the hardware beyond a certain point is counter-productive.

In my experience it's much less common that you don't care about the hardware than the reverse.

Re: Steps to designing an embedded software architecture, Step 1

#12
post #4

Is separating the hardware and software layers really a radical notion for embedded programming?

Unfortunately yes. Lots of embedded software development is done by folks without a software background. EE's and electronics technicians dabbling in firmware.

>"unfortunately"

>"dabbling"

Re: Steps to designing an embedded software architecture, Step 1

#13
Step #1 - Strong arm the business and hardware team into putting a ton of ram on said embedded device together with a relatively up to date SoC ARM core

Step #2 - Run Linux on it (preferably with in-tree drivers)

Step #3 - Application development is now Somebody Else's Problem

On a serious note, unless your power envelope is tiny or you have hard real-time constraints, you really shouldn't be pushing small microcontrollers to the limit and running custom networking stacks on those. That's a security disaster. Don't connect things to the internet if you don't have a reliable way of updating the firmware.

Re: Steps to designing an embedded software architecture, Step 1

#14
post #4

Is separating the hardware and software layers really a radical notion for embedded programming?

Unfortunately yes. Lots of embedded software development is done by folks without a software background. EE's and electronics technicians dabbling in firmware.

I think a big part of the reason is that embedded software payscales seem to be closer to EE pay than typical SWE pay. I've never understood why but from what I can tell the more specialized EE knowledge is not valued very well. I had a colleague who moved out of embedded software to become a backend developer for this reason.

Re: Steps to designing an embedded software architecture, Step 1

#15
post #4

Is separating the hardware and software layers really a radical notion for embedded programming?

Well yes, but "embedded" is a pretty broad category. Some major cases are: - High-volume and cost-driven: where a you're picking the cheapest MCU you can make work (often by a matter of cents).You want to squeeze every last bit of performance (or IO, or power consumption, or pinout, or whatever the drivers are). - Real-time: where abstracting the hardware beyond a certain point is counter-productive. In my experience…

I'd also add: ultra low power consumption. If you really want to use as little power as possible to do a specific task

Re: Steps to designing an embedded software architecture, Step 1

#16
post #14

Earlier quoted context omitted.

Unfortunately yes. Lots of embedded software development is done by folks without a software background. EE's and electronics technicians dabbling in firmware.

I think a big part of the reason is that embedded software payscales seem to be closer to EE pay than typical SWE pay. I've never understood why but from what I can tell the more specialized EE knowledge is not valued very well. I had a colleague who moved out of embedded software to become a backend developer for this reason.

There's thankfully some room in the market for pay reasonably comparable to typical SWE payscales, but most embedded developers live in their own little worlds largely disconnected from trends in the rest of the software industry. They're often simply not aware of what they're worth to demand it and the kind of companies that need embedded developers tend to be both unable and unwilling to pay those rates.

Re: Steps to designing an embedded software architecture, Step 1

#17
post #4

Is separating the hardware and software layers really a radical notion for embedded programming?

Unfortunately yes. Lots of embedded software development is done by folks without a software background. EE's and electronics technicians dabbling in firmware.

To be honest I am not sure who those dabbling in software actually are. A lot of the embedded software running in safety critical environments on certified compilers and is build and tested to a much, much higher standard than most people would think. This is so much closer to software engineering than what can be observed by "software developers" who pull in unchecked dependencies like there is no tomorrow.

Sure there are also electrical engineers who don't actually know how to program and they indeed dabble in it in a very naive fashion, but you got those people in software developement as well and they are also naive — just in a different way.

Re: Steps to designing an embedded software architecture, Step 1

#18
post #17

Earlier quoted context omitted.

Unfortunately yes. Lots of embedded software development is done by folks without a software background. EE's and electronics technicians dabbling in firmware.

To be honest I am not sure who those dabbling in software actually are. A lot of the embedded software running in safety critical environments on certified compilers and is build and tested to a much, much higher standard than most people would think. This is so much closer to software engineering than what can be observed by "software developers" who pull in unchecked dependencies like there is no tomorrow. Sure the…

webdevs think their higher pay is reflective of the complexity of their field or their mastery of CS concepts

Re: Steps to designing an embedded software architecture, Step 1

#20
post #14

Earlier quoted context omitted.

Unfortunately yes. Lots of embedded software development is done by folks without a software background. EE's and electronics technicians dabbling in firmware.

I think a big part of the reason is that embedded software payscales seem to be closer to EE pay than typical SWE pay. I've never understood why but from what I can tell the more specialized EE knowledge is not valued very well. I had a colleague who moved out of embedded software to become a backend developer for this reason.

That’s pretty much my situation, I originally did electronic engineering and firmware but have switched professionally to backend software. Partly because of the pay, but mostly because the tooling and quality of most embedded software is so painful to work with. I’d rather have an overgrown dependency tree than a debugger which crashes more often than not.
Post reply on HN