Er is geen elke technische reden waarom dat niet mogelijk zou zijn.
Microsoft heeft hun kernel al werkende op gelijkaardige arm-cores.
Helaas zij die arm-cores maar een klein deeltje van de SoC. Er zit heel wat meer in.
En dat zorgt voor een praktische/financiële reden: iemand moet drivers schrijven voor die SoC.
Je hebt, om te beginnen, meerdere toolchains (compiler, linker, assembler) nodig. Met ondersteuning voor de specifieke core extensies. (Denk aan Neon, Simd, SVE2, SME2, etc)
Voor de liefhebbers/mensen met interesse:
https://developer.arm.com/documentation/ddi0487/latest -> armv9 architecture, zo'n kleine 15000 blz.
https://developer.arm.com/documentation/108014/latest/ -> (publieke!) ref manual voor de C1-Ultra core.
https://developer.arm.com/documentation/109416/latest/ -> (publieke!) ref manual voor de C1-Premium core.
https://developer.arm.com/documentation/107771/latest/ -> (publieke!) ref manual voor de C1-Pro core.
Vervolgens komt er daar een interne bus bij. Deze zorgt dat de (cpu) cores toegang krijgen tot de memory controller en de verschillende interfaces van de chip. Ik denk dat de D9500 de AMBA CHI -e gebruikt.
https://developer.arm.com/documentation/ihi0050/h -> algemene specificatie voor AMBA, slechts 700blz.
Dit heeft een driver nodig, iemand moet die schrijven / bestaande aanpassen.
Deze bus is veel te snel voor bepaalde interne periferie, dus zijn er bridges nodig naar tragere bussen.
Met opnieuw drivers.
Er is een memory controller nodig. Wie mag welk stuk geheugen aanraken? Hoe gaan we dat mappen? Wat met gedeeld geheugen?
Wat met coherency? Wat met flushing? Wie krijgt welke prioriteit?
Er zijn bijvoorbeeld 8 cpu cores, maar er zit ook een interne GPU in, verschillende dma-cores, etc. Die willen allemaal data, maar er is slechts 1 (of 2) memory bus(sen). Dus er moet gedeeld worden.
Dit beestje heeft alweer een driver nodig.
En dan volgt er een hele waslijst aan hardware blocken.
* Clocking -> driver.
* Power gating -> driver.
* Interne flash (emmc - UFS4.1), met controller & phy. -> meerdere drivers.
* Externe flash (sdcard), met controller & phy -> meerdere drivers.
* Sim kaartjes (serieel) -> seriele bus & interactie met sim -> meerdere drivers.
* Draadloze interface (Wifi) -> controller + phys + software stack voor WiFi 7 -> meerdere drivers
* GNSS (gps) -> (seriele bus +) core + driver voor phy/antenne -> meerdere drivers
* Draadloze interface (modem) -> core + phys -> meerdere drivers
* Bluetooth -> (seriele bus +) core + phy -> meerdere drivers
* Camera -> MIPI CSI2 -> mipi core + phy -> meerdere drivers
* Per camera module -> driver
* ISP (interne video core + routing) -> meerdere drivers
* GPU -> driver
* Video encoding/decoding -> Hardware acceleratie -> driver / codec. (en dat zijn geen kleintjes!)
* Beeldscherm -> MIPI DSI/TRI-port -> core + phy -> meerdere drivers.
* AI processor -> driver.
* Audio input / output. -> interne / externe ADC/DAC + multichannel cores -> meerdere drivers.
* Audio backplane & enhancement -> verschillende cores & digitale bus -> meerdere drivers.
Eventueel nog pci-e, i2c, i3c, gpio's, spi, ... interfaces. -> meerdere drivers.
Er komen dan ook nog bootloaders bij, hypervisors, non-accessable busses.
Het is gewoon gigantisch veel werk om dat allemaal te schrijven/aan te passen. En dat kost bergen geld.
Natuurlijk, die veel van die cores/phys worden aangekocht, en daar krijg je soms een (linux!) driver bij, maar ook die moeten nog aangepast/geporteerd worden.
En al die zaken moeten ook uitgebreid getest worden natuurlijk.
[Reactie gewijzigd door Elminster op 22 september 2025 20:58]