Live data from Hacker News

So you want to build an embedded Linux system? (2020)

jaycarlson.net

61–70 of 80 posts

Re: So you want to build an embedded Linux system? (2020)

#61

Earlier quoted context omitted.

There is no global standard of definitions, what you might be seeing is the difference in the educational system in different parts of the world. We know definitions change over time because slang words come and go and someone's vocabulary can be used to identify people online or identify their knowledge.

Whatever, but if someone of the "Distinction Criteria is existence of MMU" crowd comes and claims the 8086 is not a microprocessor, because it doesn't have an MMU (which would be a logical conclusion from the article). i'll probably not be respectful.

The clearest distinction today is the lack of an MMU. That's just a useful metric to go by that neatly divides SoCs into "things intended to run bare metal/RTOS code" and "things intended to run Linux", that are two different product groups with significant differences.

Obviously this wasn't always the case, e.g. a good 15+ years ago I put ucLinux on an old ISP router I had lying around for fun, and it was an ARM946 without an MMU. But that class of device no longer exists today for all practical purposes, and so it's easy to use the existence of an MMU to decide what to call them.

The 8086 may have been a microprocessor, and so was the 80186, but you know where you find 80186 cores today? Microcontrollers. Specifically, some video processing chip manufacturers (e.g. stuff that goes into monitors and DP-HDMI adapters) seem to like using V186 cores still.

Re: So you want to build an embedded Linux system? (2020)

#62
post #7

I have issues with the section "Microcontroller vs Microprocessor: Differences" Microprocessors are just the CPU, usually with the system bus wired out. Microcontrollers are combined systems, which include a processor and usually some kind of firmware storage and RAM. You can usually differentiate them by whether their pins are address/data lines or gpio-like. > microprocessors have a memory management unit The 8086…

Microprocessors in the traditional sense no longer exist. All modern microprocessors are actually SoCs (yes, even Intel ones at least to a partial extent). And all microcontrollers are SoCs by strict definition, but we don't usually call them that.

So really the more practical terminology difference should be SoC vs. microcontroller.

Re: So you want to build an embedded Linux system? (2020)

#63

Previous thread, 2020: https://news.ycombinator.com/item?id=24800037 This article is awesome and has a ton of great knowledge, but it’s a little dismissive of openembedded, and if you click through to the previous thread you’ll see a lot of people come to it’s defense.

Lots of good replies on that thread. I have been doing embedded development for 30 years, and Yocto is the best build system that I have used for managing large embedded systems. If you need to professionally manage multiple distributions across menagerie of different host and target machines, there simply is no other meaningful choice that operates at its scale. I first encountered BitBake before either the OpenEmbe…

Yocto is fantastic and well documented but getting started is hard and nothing makes much sense until you fully understand it. Once it clicks, though, it’s great. Totally worth the effort.

Re: So you want to build an embedded Linux system? (2020)

#64

Previous thread, 2020: https://news.ycombinator.com/item?id=24800037 This article is awesome and has a ton of great knowledge, but it’s a little dismissive of openembedded, and if you click through to the previous thread you’ll see a lot of people come to it’s defense.

Lots of good replies on that thread. I have been doing embedded development for 30 years, and Yocto is the best build system that I have used for managing large embedded systems. If you need to professionally manage multiple distributions across menagerie of different host and target machines, there simply is no other meaningful choice that operates at its scale. I first encountered BitBake before either the OpenEmbe…

I have been doing embedded linux for 22 years and sadly Openembedded/Yocto has been the worst build system ever. It's the Gentoo for embedded(where is Gentoo nowadays), over-engineered so much for most use cases unless you work at Windriver or Amazon that deals with lots of different boards from different vendors and you have unlimited resource to work with the complexity.

If I got a codebase that uses Yocto/Openembedded, the first thing I do is to find the related patches there and convert them to buildroot/debian/openwrt/LTIB(old stuff)/etc depends on the hardware spec. I wasted too much time when there is a bug in Openembedded that could take forever to debug, layer over layer, override over override on those meta mazes, it always feels like you're fighting with openembedded/yocto itself instead of getting your work done. I since have been avoiding openembedded/yocto at all costs.

Re: So you want to build an embedded Linux system? (2020)

#65

Earlier quoted context omitted.

Lots of good replies on that thread. I have been doing embedded development for 30 years, and Yocto is the best build system that I have used for managing large embedded systems. If you need to professionally manage multiple distributions across menagerie of different host and target machines, there simply is no other meaningful choice that operates at its scale. I first encountered BitBake before either the OpenEmbe…

I have been doing embedded linux for 22 years and sadly Openembedded/Yocto has been the worst build system ever. It's the Gentoo for embedded(where is Gentoo nowadays), over-engineered so much for most use cases unless you work at Windriver or Amazon that deals with lots of different boards from different vendors and you have unlimited resource to work with the complexity. If I got a codebase that uses Yocto/Openembe…

There is a learning curve, but when crossed, it’s a beautiful system.

Re: So you want to build an embedded Linux system? (2020)

#66
post #65

Earlier quoted context omitted.

I have been doing embedded linux for 22 years and sadly Openembedded/Yocto has been the worst build system ever. It's the Gentoo for embedded(where is Gentoo nowadays), over-engineered so much for most use cases unless you work at Windriver or Amazon that deals with lots of different boards from different vendors and you have unlimited resource to work with the complexity. If I got a codebase that uses Yocto/Openembe…

There is a learning curve, but when crossed, it’s a beautiful system.

same could be said to gentoo, from experience over 2 decades and at least 5 projects involved yocto(back then it was openembedded), for the same project, yocto will take 5x more time/efforts per my measurement. yes adding stuff is fine, building is the slowest but I can wait, however if something went wrong, be prepared to debug openembdded/yocto-itself for days, this does not exist in other alternatives: you debug your own code, not the framework there.

It's over engineered, over rated, great for consultants to charge hours, terrible for companies(except for big guns) to deliver product fast.

Sorry I have a strong opinion here but it just wasted too much of my time in the past.

Re: So you want to build an embedded Linux system? (2020)

#67

Previous thread, 2020: https://news.ycombinator.com/item?id=24800037 This article is awesome and has a ton of great knowledge, but it’s a little dismissive of openembedded, and if you click through to the previous thread you’ll see a lot of people come to it’s defense.

Lots of good replies on that thread. I have been doing embedded development for 30 years, and Yocto is the best build system that I have used for managing large embedded systems. If you need to professionally manage multiple distributions across menagerie of different host and target machines, there simply is no other meaningful choice that operates at its scale. I first encountered BitBake before either the OpenEmbe…

>I have been doing embedded development for 30 years

What's your take on the various *BSD distros in the embedded space? A lot of BSD proponents like to talk about the stability and minimalism (a proxy for resource-efficiency I guess) of BSD in comparison to Linux.

Is there any reason to reach for BSD in an embedded application these days?

Re: So you want to build an embedded Linux system? (2020)

#68
post #7

I have issues with the section "Microcontroller vs Microprocessor: Differences" Microprocessors are just the CPU, usually with the system bus wired out. Microcontrollers are combined systems, which include a processor and usually some kind of firmware storage and RAM. You can usually differentiate them by whether their pins are address/data lines or gpio-like. > microprocessors have a memory management unit The 8086…

The problem is that by your definition, every processor manufactured in the last 30 years should actually be called a "microcontroller"

Microprocessors going back to the Intel 486 have more on-chip RAM than many microcontrollers sold today have. CPUs have built-in firmware ROM for loading boot code. Also, CPUs haven't had a system bus with address/data pins for like 30 years — somewhat ironically, the only chips that have that are microcontrollers. Northbridges haven't existed for 15 years, and southbridges are basically just PCIe-to-USB/SATA/Ethernet/I2C adapters. And many mobile CPUs that Intel and AMD make have on-chip I2C, SPI, UART, GPIO peripherals.

In my article, I'm trying to differentiate between processors that can run a modern multiuser operating system like Linux and microcontrollers that runs bare-metal code, since that's a question I get asked a ton. After carefully considering all the options, the MMU seemed like the most obvious place to draw the line. Every CPU in the last 40 years (since the Intel 286) has had an MMU, while no microcontroller ever made has had one. I'm not sure why that seems so unreasonable to you.

Re: So you want to build an embedded Linux system? (2020)

#69
post #7

I have issues with the section "Microcontroller vs Microprocessor: Differences" Microprocessors are just the CPU, usually with the system bus wired out. Microcontrollers are combined systems, which include a processor and usually some kind of firmware storage and RAM. You can usually differentiate them by whether their pins are address/data lines or gpio-like. > microprocessors have a memory management unit The 8086…

The problem is that by your definition, every processor manufactured in the last 30 years should actually be called a "microcontroller" Microprocessors going back to the Intel 486 have more on-chip RAM than many microcontrollers sold today have. CPUs have built-in firmware ROM for loading boot code. Also, CPUs haven't had a system bus with address/data pins for like 30 years — somewhat ironically, the only chips that…

It is unreasonable because you redefine "Microprocessor" in a way that the 8086, the one that made the word popular, isn't one anymore.

Surely odd, but tolerable. But what is worse that people will read your article, think the MMU is what makes a microprocessor. And upon hearing that the 8086 has no MMU, they will deny that it is a microprocessor. Which would be a logical conclusion from your article.

I listed some other words here that suffer from similar issues https://news.ycombinator.com/item?id=30278936

Re: So you want to build an embedded Linux system? (2020)

#70
post #54

Earlier quoted context omitted.

Wine actually IS an emulator, just not the kind of emulator you think of. While wine is not an virtual machine, it literally emulates the win32 api. https://web.archive.org/web/20150928042254/http://wiki.wineh... I mentioned the shift of meaning to "virtual machine" in the post you replied to, please read it more carefully. Emulation and Simulation are different in some regard: emulation is only imitating some aspect…

Then Windows NT is emulating Win32. Also, back in the day emulators emulated the CPU for sure, while an API implementation wasn't never called "emulation". Ever.

xterm calls itself an emulator in the manpage right now.
Post reply on HN