Hacker News new | ask | show | jobs
by goombacloud 1614 days ago
A question to you as someone from the hardware side: Why is it not a focus for hardware devs to build hardware that works with existing software? Why do I always need a special kernel for every arm64 board out there?

Often it's that there are hardware components chosen without mainline drivers, then there is also the problem of each board having a different layout. With arm64 EFI things get better but it's still a difference compared to x86 where you can boot almost any old OS on your newest laptop, thanks to PCI and other standard interfaces.

3 comments

> A question to you as someone from the hardware side: Why is it not a focus for hardware devs to build hardware that works with existing software? Why do I always need a special kernel for every arm64 board out there?

Because the SoCs used in these sort of boards originally went into things like cheap Android set top boxes and the like. Those customers just need an image that can boot to Android and work well enough, and it is easier for the hardware vendors to hack at their in house kernel branch than to get everything upstream.

Cost and power efficiency. If you want cheap portable electronics that have batteries that last forever, then you need to build SoCs that have exact features needed for a specific application and no more.

Maintaining software compatibility would mean sacrificing either price or power consumption. So a manufacturer can choose between spending money rewriting the software, or having to pay anywhere between 15¢ to $100 more per unit. If you’re making millions of units, then savings from using more limited SoCs will quickly pay for an army of software engineers.

NetBSD builds one kernel for all supported ARM64 devices, there is no reason why Linux can't do the same. The devicetree selected by the firmware provides the description of a particular board.
supported really is key in that sentence. Does NetBSD build one kernel to rule them all because they only support a limited number of very similar ARM64 devices, or is their kernel just more flexible in adjusting itself at runtime?

Also, ARM64 is only one ISA. 32-bit has at least v5, v7 and thumb in wide circulation (though I may be off-target on what's exactly referred to as an ISA on arm).