top | item 10800063

(no title)

miratrix | 10 years ago

I'm assuming you're talking about Platform / BSP side of the ugliness.

You have to look at the lineage of how things evolved to the current state - on the PC ecosystem, everything is already on enumerable buses (PCI, USB, etc) with standards (PCI, UEFI, etc) describing how it's all supposed to find what device is connected where and have it all work together. The incremental cost of opening that up to the public is thus fairly small since you need to build your platform to adhere to the standards that are already there anyway. That's how you get to being able to boot a kernel image on a random system or insmod a random driver you found and expect it to (mostly) work.

In the SBC/Embedded ecosystem, there really aren't any standards. Since internal topology of each SoC is different and the pace of new SoC releases is so high, there's no time for standardization - you throw in random IPs from bunch of different vendors, figure out how to connect it all together, and get it to the market. In this scenario, having something documented is actually a negative thing - once something is documented, people expect it to work the same way going forward. You can hide a lot of hardware deficiencies in binary blobs, something that's very difficult to give up. Thus, there's a huge disincentive to provide full hardware documentation. I'd imagine that in some cases, for licensed IPs, the SoC vendors may not even be allowed to do so even if they wanted to.

Things like DeviceTree is trying to nibble around the edges of this problem, but given the current state of things, it'll be a while yet as a lot of the building pieces doesn't even seem like it's in the picture yet.

discuss

order

TD-Linux|10 years ago

The lineage is hardly an excuse - PC started out just like ARM is, with manual IRQ assignment, no hw detection, and the like. But this was solved in the mid-90s with plug and play standards. It's really sad that in 2015, embedded SoCs still don't have anything comparable.

digi_owl|10 years ago

The difference was that this was done using actual manual actions, not hardcoding in the source and then compiled it into the kernel.

IE, everything lived on separate boards that was removable and thus replaceable. Also known as user serviceable.

The SOCs are neither, and thus there is a different mental approach to them. Them and the board they live on are basically considered disposable.

akhilcacharya|10 years ago

Wouldn't that considerably increase bloat?