Hacker News new | past | comments | ask | show | jobs | submit login

I'm an old embedded dog and I struggle with this a lot recently.

I get that an RPi or Beaglebone or any large SoC architecture qualifies as an embedded system in the sense of "this board is running a drone/driverless car/CNC machine/etc".

But, at least to me, these are highly miniaturized desktop systems now. There's disk. There's advanced I/O (HDMI, LVDS, 802.11, Ethernet, SATA, PCIe!). There's a full operating system on there. You could put one inside a 1U case and pretend it's a server.

Not that this is a bad thing. SoCs are awesome and I personally have a half-dozen projects cooking with iMX6s and other cool parts in this domain. But I think we need to find a way, especially in the IoT era, to quantify a small device node architecture versus a Linux-desktop-on-a-board. I already see Microsoft abusing this by putting Win10 on an RPi and calling it an IoT architecture.




As someone that has played in the embedded world too, i struggled with that last year.

But let's be honest. Except if you have really strong constraint about power consumption and form factor, most of these small stuff are far easier to work with, perform probably better (because yes your software has bugs) and have so so so much better tooling.

Because the embedded world has a big tooling problem. I still hope to have some Rust on lower level to push it into the XXIst century.

And the nerves project is made by people that come from the embedded world. They completely know their limits and do not try to push it everywhere.


Not only power consumption, but also for realtime applications, like those used in industrial and automotive control systems.

In such scenarios, the overhead and unpredictability of the OS scheduler is unacceptable. When you want to say isolate a fault exactly 100us after it takes place, you can't have the OS executing that task at some different delay in a nondeterministic fashion.


well in that case you enter a completely different world. Hard RealTime system are not really only "embedded". They also exists for bigger things.

It is just a really different set of way to think. And a really hard one i may add.


Hard realtime can also be with seconds latency, to further complicate things.


I think "embedded" may be the wrong word. Perhaps "very low power" is the correct way to differentiate these things (e.g. RPi versus TI MSP430). I think that at this point they are both "embedded" since I would consider "embedded" to be anything without a keyboard and monitor (hence "embedded" inside another thing).


So a headless server is ‘embedded’? An old-school vector supercomputer that required a frontside host system is ‘embedded’? No, surely not: ‘embedded’ requires the notion of the computing system to be essentially a controller of a physical process or system, i.e., the component that controls a device or machine that operates in our actual physical world. It might very well possess a (perhaps rudimentary) screen and keyboard or keypad.


I like that definition.

I used to maintain a system most people would call true "embedded" - it was a PowerPC based VME system running VxWorks. The job of the system was to monitor some analog voltages, detect an unsafe condition, and open some relays if the unsafe condition was detected in < 10 ms. VxWorks dev tools and the PowerPC cards are very expensive, so we decided to replace it with a x86-64 server running RedHat MRG. That is the Linux kernel with the PREEMPT_RT patchset. We had a PCIe card in there for monitoring the analogs and firing the relays. Was the system still embedded? I would argue it was. The heart of the code was basically the same - VxWorks has the POSIX API for pthreads after all. There were just some driver call changes and init looked different.


Thanks for mentioning VxWorks. It looks quite interesting, and I'm surprised that I haven't heard of it before!


> , the component that controls a device or machine that operates in our actual physical world.

So is a an industrial factory control server embedded? It controls valves, actuators, reads sensors. It can still be a whole rack top to bottom full of high power Xeon servers.

Embedded literally means inside something. It is not a computer used on its own, say to run general purpose software, but as part of another larger system. There is no power or size requirements for that. Well and most of all it is a fuzzy term.


You make a good point. But the old-school vector supercomputer was likely not very-low-power. That my general point, since very-low-power devices have different programming models than a more conventional OS based computer.


that would be a controller. embedded in a similar vein means that a controller or whatever is embedded in a bigger stand-alone system, and thus not it isn't stand-alone on its own.

a desktop is stand-alone. A webserver isn't but the internet its part of isn' really stand-alone. Mobiles were called embedded, but newer phones with apps are rather stand-alone. All are embeddable.


> I still hope to have some Rust on lower level to push it into the XXIst century.

Well, there are some nice tools available, but not many seem to be willing to pay for them.

http://www.mikroe.com/compilers/

http://www.astrobe.com/default.htm

http://www.ptc.com/developer-tools/apexada


I used to but have come to accept that embedded nowadays mean anything which is black box like and does its thing. Can be Linux or a PIC program written in assembler.


I'm a new Arduino hobbyist and I struggle with it too. Raspberry Pis are definitely not embedded, they're a full-blown computer that's small. It's amazing how they managed to fit an entire desktop in a Pi-Zero-sized package, but it's not embedded.


I disagree that a Raspberry Pi is "definitely not embedded".

What if I had an ARM SoC (like in the RPi) running VxWorks or RTEMS controlling a missile? Few would argue that is not an embedded system.

What if the RPi is running real-time Linux doing computer vision on an assembly line? What if the timing deadlines are pretty loose (>10 ms), a miss a month is acceptable, and it runs a stock Linux kernel? I would argue all of those cases are real-time embedded systems, albeit with different hard real-time versus soft real-time requirements.


You can replace "RPi" with "my Dell desktop" in all of these, and they would be equally true. Does that mean it's embedded? If not, that leaves just the physical size. Does "embedded" only mean "any computer that's very small"?




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: