1. 36

We need a tag for embedded systems. That’s pretty-much anything involving a computer with extremely-limited resources often used for a special purpose. The Arduinos, 8-bitters, and so on are for embedded systems. Even the management engines on Intel discussed here use ARC’s. The embedded industry is huge. The MCU’s have their own programming style and issues. Some Lobsters like @stevelord are regularly referencing embedded projects as well. I don’t have post data on it but it seems like one worth having by default given embedded systems are literally all around us. :)


  2. 8

    Most embedded content now is submitted with the existing hardware tag. I’m all for an embedded tag for discussions of software targeting bare metal - but I am curious to hear how and when it would differentiate from the hardware tag.

    1. 4

      Hardware can anything really: SDRs, casemods, GPU news and on. Embedded is a fairly specific avenue of systems development. But of course it’s hard to tell how people will end up using either (or both).

      1. 3

        hardware tag includes things like RISC-V.

        1. 3

          As variag said, hardware is just one form of it. A lot of embedded work is software related since there’s a lot of standard offerings on hardware side. It’s the tooling, RTOS’s, techniques for efficiency, dedicated libraries like micro-TCP/IP stacks, and so on that remain even when hardware is ignored ir just stock (eg an Arduino).

        2. 3

          Would posts related to the Raspberry Pi fit within the tag? Or do they need to include something even smaller for the tag to be appropriately applied?

          1. 4

            That’s a great question. I specifically avoided mentioning Raspberry Pi since I don’t know the answer. This issue is bigger than the tag suggestion where lots of “embedded systems” over the years are running on what would previously be more like desktop computers. The Pi has quite a bit of hardware running OS’s such as Linux. Yet, it’s also constrained versus a “real” computer we’d use for day to day tasks such as web browsing.

            I’d say it comes down to the specs and intended use-case. We should keep this tag for resource-constrained systems that people go for to keep per-unit price dirt cheap, possibly tiny boards, and very hackable. Looking at them, the Pi 3 doesn’t look like a resource-constrained system with a quad core and 1GB of RAM. ;) Even the Pi Zero has 1GHz and 512MB of RAM. Whereas this Arduino’s specs are a lot more like what most embedded boards in consumer devices, appliances, etc would be with 16MHz MCU, 8KB of RAM, and 128KB of flash.


            You couldn’t even fit a real Linux in that thing. Even the GRUB bootloader at 20-30K couldn’t fit in its RAM (assuming all of it is loaded on startup). So, with these tiny chips, there’s whole different types of OS’s, programming styles, debuggers (some physical), and so on to handle them. You can’t just drop your vanilla stuff on them accepting that it runs slower. You have to do different things or at least chop the software until the result is not much like a full version. For example, the smallest Linux I think got to 600K. It couldn’t even fit.

            So, things using MCU’s with tiny RAM and ROM amounts to point they can’t run normal OS’s and toolchains. That’s how I’m defining it. If yall are curious, while we’re at it, here’s the lowest end of embedded that’s still in use:


            Previous record holder… a one-bit MCU… with PDF guide to it in references:


          2. 3

            Embedded does not necessarily mean resource restricted. There are plenty of special purpose devices using normal Intel hardware.

            1. 2

              Exactly. Many modern infotainment systems in cars also would not fit this requirement. Or powerful routers. I think that the environment in which the system operates (is embedded) is the defining quality.

              I would say that probably mcu or microcontroller tag would fit more to this description.

              1. 1

                One definition of embedded is special-purpose. Then there’s the resource-constrained variety that make up most of the volume. I’m focusing on the latter. We could make a tag for it like Resource-Constrained but most people in embedded call them embedded, “deeply embedded” and so on. Since this counter keeps coming up, I’m emailing Jack Ganssle to see if people in his industry have any standard way of differentiating this.

                Edit: Emailed Jack. I’ll tell yall what he tells me whenever he gets back to me. The choices so far are:

                1. Embedded w/ description “Resource-constrained, Special-Purpose Systems”

                2. Resource-constrained. This might apply to clones of old hardware, too, given no mention of embedded.

                3. Microcontrollers. They usually have microcontrollers which justifies most of the programming differences I described. The limits might also be RAM or ROM, though. I can’t recall Strong-CPU, No-RAM examples readily but scratchpads come to mind. Like in PS2’s where main system is powerful but scratchpad usage is limited more like embedded programming.

              2. 2

                I agree. Great idea for a tag.

                1. 2

                  Aren’t tags for blacklisting? Are there people who don’t want to see content about embedded systems here, but who e.g. still want to see content about hardware?

                  Sounds dubious to me, but what do I know. Personally I thing tags are a complete waste of time.

                  1. 2

                    My prior reads of these seem to indicate they were for highlighting and filtering things depending on who was using them for what. There’s probably people that would be for doing both with blacklisting hint coming from 50+ users filtering hardware tag. You might add many of the webshit developers, too, since Electron Apps on 8-bitters are probably a ways off.

                    Far as tags, I’m like you in that I don’t care about them. I mainly use them for others’ benefit.

                  2. 1

                    Ok, @jcs, I just heard back from Ganssle who a big name in that sector. He said even they can’t agree what embedded means outside a special-purpose device. The point of this tag is resource-constrained systems since they have unique programming strategies, tools, OS’s, etc. So, maybe the tag should just be Resource-Constrained, Microcontrollers, or something like that. If you add it at all that is.