What is embedded really?
What's the difference between embedded systems and other software systems? - Software Engineering Stack Exchange
Pros and cons of working as an embedded software engineer?
the future of embedded software
How does embedded software work?
How can I get started with embedded software with OEM solutions?
Why is embedded software important to ISVs and software manufacturers?
I have always been fascinated with how computers work, not so much how can they work for me, and a lot of my degree has been the latter, with minimal time spent in Assembly. I have been a fan of Sebastian Lague and Ben Eater for a while and wanted to get a breadboard and tinker, but I would ideally like to get my feet wet with something that could be put on a CV or would help me decide my career path.
I know Python, and originally learned in C which I still have a fondness for, and am currently going through learnCPP on the side in preparation for… something? I have a couple projects that I would like to do, and want to try a few different sects of CS before I graduate and have to have it all figured out.
I am looking for an answer to: What is embedded? What does a day in an embedded job look like? Should I keep my interests as a hobby, or delve deeper? What could I achieve with embedded?
As an aside, I am quite down in the dumps today as I flunked an OA for a placement opportunity (easy coding questions that I overthought) and feel like I need a rebalance, so I’m weighing my options a bit!
This is going to be a deeply unsatisfying answer.
I don't think you're going to find a simple intuitive definition for this if you look at things in too fine a detail.
Embedded software is computer software, written to control machines or devices that are not typically thought of as computers, commonly known as embedded systems. It is typically specialized for the particular hardware that it runs on and has time and memory constraints. This term is sometimes used interchangeably with firmware.
A close-up of the SMSC LAN91C110 (SMSC 91x) chip, an embedded Ethernet chip A precise and stable characteristic feature is that no or not all functions of embedded software are initiated/controlled via a human interface, but through machine-interfaces instead. (source: Wikipedia; emphasis, mine)
And
An embedded system is a specialized computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is embedded as part of a complete device often including electrical or electronic hardware and mechanical parts. Because an embedded system typically controls physical operations of the machine that it is embedded within, it often has real-time computing constraints. (source: Wikpedia; emphasis, mine)
These aren't real definitive answers. Embedded systems don't usually have the beefy hardware that a PC or smartphone has. Think: less memory and smaller processors; slower. These systems are not sold as generalized computing devices like a PC, mobile phone, or tablet computer is.
You ain't gonna be doin' spreadsheets on a pacemaker. It would be really inconvenient to work on a spreadsheet on a smart TV, although anymore all you need is a browser and a TV remote. Through some arcane combinations of remote control button presses and a specialized on-screen keyboard, I suppose you technically could load and update a spreadsheet, but that isn't the ideal device for doing so, nor is that the main intended use case.
A Smart TV is actually a good example of an embedded device that starts to blur the lines. If you can connect a Bluetooth keyboard and mouse to a smart TV, you have a gigantic monitor with an embedded computer and operating system. The difference here is that the smart TV is given hardware fast enough to play videos, and run limited apps (whose main purpose is playing videos and maybe some limited games), but not hardware designed for general purpose computing.
Another litmus test I like to use is this:
I've got loads of RAM and CPU. I'll use this O^N algorithm anyways, because the machine will still execute it quickly. The garbage collector will clean up my mess.
You have a PC, smartphone, or tablet.
Oof. This O^N algorithm is taking an hour to execute, and then the device dies because its out of memory. I need to fine tune this or it will never work under any circumstance.
You are working on embedded system.
You: this has enough hardware, why can't this thing run an app allowing the user to build a budget?
Coworker: well, it's an ATM, so... you know. It's sitting outside a bank. I don't think you'll be driving up to work on your budget. Probably work on that at home, ok?
You are working on embedded system.
I need to define minimum GPU requirements so my game runs on as many devices as it can.
Well, ****. This crosses the line. If you are creating a game for an iPhone or PC, this is not an embedded system. If this was, say, the original 8-bit Nintendo gaming system? And we pretend it had a GPU? This is an embedded system (because it was limited hardware, not because of the mythical GPU). Is this for the latest Xbox or PlayStation? You could argue it's an embedded system, because its main purpose is to play games... except the newer game consoles have an awful lot of hardware. They could be general purpose computers, but the manufacturer has determined it isn't because reasons that make them money.
And there you have it. A murky, non-precise definition that I'm sure will only get more imprecise to the point where "embedded software" is no longer a meaningful designation. I can't wait until I can get my AI-enhanced neural implant that is constantly connected to the hivemind Facebook the Internet.
The key point here is "dedicated hardware for specific tasks". A smart TV has one job which is to show pretty pictures, an embedded pacemaker has one job which is to shock someone's heart if it is misbehaving.
That's very different from something running on your PC, which has many jobs, and that means you make very different trade-offs in your system design.