logoalt Hacker News

topspinlast Tuesday at 2:55 AM2 repliesview on HN

That may change. There are some very powerful MCUs appearing, with astonishing features, including hardware virtualization (hypervisors on an MCU,) multicore superscalar, heterogeneous CPU cores with high performance context switching, "AI" co-processors with high throughput buses, and other exotic features.

At some point, it might start making sense to level up the OS to (nommu) Linux on these devices. When the applications get complex enough, people find themselves wanting a full blown network stack, full featured storage/file systems that are aligned with non-embedded systems, regular shells, POSIX userland, etc.

All of the architectures I have in mind are 32 bit and "nommu"[1]: Cortex-R52/F, Infineon TriCore, Renesas RH850, NXP Power e200. Then you have RISC-V MCU Cambrian Explosion underway.

I qualify all this with mays and mights: it hasn't happened yet. I'm just careful not to discount the possibly of a <50 mAh RP Pico 3 booting uLinux, running python and serving web pages being a big hit.

[1] They all have various "partition" schemes to isolate banks of RAM for security, reliability, etc., but real MMUs are not offered.


Replies

leoedinlast Tuesday at 10:12 AM

I've spent quite a lot of the last year setting up an embedded Linux device for mass deployment - so I've seen a lot of its downsides first hand.

When you have a fleet of embedded devices you want pre-compiled disk images, repeatable builds, read only filesystems, immutable state (apart from small and well controlled partitions), easy atomic updates, relatively small updates (often devices are at the other end of a very slow cell connection) and a very clear picture of what is running on every device in your fleet.

Linux can do all that, but it's not the paradigm that most distros take. Pretty much the entire Linux world is built around mutable systems which update in place. So you're left to manage it yourself. If you want to do it yourself, you end up in the hacky fragile world of Yocto.

Compared to that, using an RTOS or application framework like Zephyr is fairly easy - at the expense of app development time, you just need to worry about getting a fairly small compiled binary onto your device.

I do agree that there's some really powerful parts available which would benefit from the shared drivers and consistent syscalls a standardised operating system offers. But building and maintaining a Linux system for any part isn't a simple undertaking either - and so the complexity of that needs to be considered in total development time.

show 1 reply
snvzzlast Tuesday at 4:37 AM

Generally, MCU people want predictable behavior and small TCB.

Linux is too unorthogonal for them.