Sorry maar dit slaat een beetje de plank mis. Als je kijkt naar Linux distributies (Ubuntu, Debian) voor ARM dan zie je dat ze een grote gemene deler kiezen die voor veel platforms werkt.
Sorry, maar ik denk dat je niet zo veel ervaring hebt met Linux op ARM of wel? Er is niet eens een 'standaard' Ubuntu of Debian release voor ARM, en zelfs de 'grootste gemene deler' versies van die distros (die verre van bruikbaar zijn voor serieuze toepassingen en de gemiddelde huis-tuin-en-keuken computeraar echt niet zomaar geinstalleerd krijgt) draaien maar op een heel beperkt aantal ARM systemen, en dan niet eens al te best. De debian ARM versie gebruikt bijvoorbeeld zelfs softwarematige floating point emulatie omdat niet alle ARM chips een floating point unit hebben. Dit is natuurlijk geen optie voor een volwaardige Windows 8 voor ARM versie.
Ook is OpenEmbedded absoluut niet alleen maar om minimale Linux distributies te maken, daar is het inderdaad zeker handig voor, maar neem eens een kijkje in de machine configuration directories:
http://cgit.openembedded....mbedded/tree/conf/machine
Elk van die profielen is noodzakelijk om uberhaupt een werkend ARM systeem voor een bepaald stuk ARM hardware te kunnen bouwen, en dan is de bovenstaande lijst alleen nog maar de git mainline, er zijn nog vele branches voor hardware die nog niet goed genoeg ondersteund wordt.
Zelf compileren van code is helemaal niet nodig.
Het punt was dan ook niet dat je geen ARM distro of ARM Windows versie kunt maken die je zonder compileren aan de praat krijgt, het punt is dat het nog lang niet makkelijk is om een breed ondersteund ARM OS op te zetten dat op meer dan een handjevol verschillende ARM systemen werkt. Natuurlijk gaat Microsoft geen Windows 8 versie uitbrengen waar je zelf je kernel moet compileren, maar om aan hun eigen standaarden van kwaliteit en gebruiksgemak te voldoen zullen ze zich in de eerste instantie toch echt moeten beperken tot een aantal ARM subplatformen die voldoende hardware aan boord hebben en generiek genoeg zijn.
De bewering dat Linux 'zomaar' op 'alle' ARM hardware kan draaien en het voor Microsoft dus een eitje moet zijn om Windows 8 voor ARM te ontwikkelen is gewoon onjuist, daar ging mijn reactie over.
Edit @ncoesel:
Je vergeet een hele berg andere blocks die kunnen verschillen tussen SoC's van dezelfde ARM generatie, of het ARM11 of Cortex A8/A9 is zegt in principe helemaal niet veel meer dan de ondersteunde basis instructireset. Een ARM SoC kan wel/geen NEON hebben, wel/geen extra DSP blocks (die vanuit userland gebruikt kunnen worden maar waar meestal wel een bridge in de kernel voor nodig is), sommige SoC's laten bewust hele elementaire dingen weg (denk aan controllers voor subsystemen die niet gebruikt worden), sommige SoC's communiceren met randhardware via GPIO pins, andere via een extra controller (denk aan TWL op OMAP) enzovoorts.
Verder gaat het natuurlijk niet alleen maar om de CPU, maar ook om de manier van booten, welke boot loader gebruikt wordt, welke boot media wel/niet ondersteund worden,
enzovoorts. Voor ARM hardware is niet eens echt een soort gestandaardiseerde BIOS of iets dergelijks, bijna elke fabrikant gebruikt zijn eigen oplossingen. Een linux distro die ik op mijn OMAP3xxx voor BeagleBoard bouw, gaat simpelweg niet zomaar werken op een Gumstix Ovi met vergelijkbare CPU, ook al zijn de binaries uitwisselbaar. Met een hoop gedoe kan je een heel eind komen, maar voor elk nieuw stuk ARM hardware moet je weer opnieuw beginnen om de boel werkend te krijgen.
Overigens lijkt het alsof je in de veronderstelling ben dat ik denk dat het niet mogelijk is om een goed doortimmerde ARM versie van Windows te maken die op veel verschillende ARM hardware werkt, maar dat is niet mijn punt. Mijn punt is dat het niet mogelijk is om een Windows voor ARM te maken die zomaar overal op draait, en dat Microsoft niet anders kan dan een subset van gangbare ARM hardware te pakken, en een aantal verschillende, specifiek aangepaste versies van Windows maken die een zo breed mogelijke set hardware ondersteund. Daarbij gaat het niet alleen maar om drivers, dat is een vrij eenvoudig probleem, maar om die hardware verschillen die niet in een driver kunnen worden opgelost. Het lijkt er ook op alsof Microsoft precies dit gaat doen, en een aantal verschillende ARM Windows versies uit te brengen, die op applicatieniveau waarschijnlijk wel compatible zullen zijn (bijvoorbeeld met behulp van universal binaries en dergelijke).
Vergelijkingen met x86 zijn trouwens useless, omdat de verschillen tussen x86 CPU's veel kleiner zijn, er regelmatig een nieuwe ondergrens wordt getrokken voor software (geen MMX of SSE? helaas doetnie, etc), en vooral: omdat al die x86 chips samen met gestandardiseerde PC hardware op een moederbord met een gestandaardiseerd BIOS, gestandaardiseerde bus interfaces, etc. worden geprikt.
Het is niet voor niks dat er eigenlijk geen enkel OS bestaat dat out-of-the-box op heel veel verschillende stukken ARM hardware te installeren is, zonder kernels te hoeven recompilen of handmatig allerlei dingen te moeten customizen. Als je nog steeds denkt dat het probleem even overzichtelijk is als Windows op x86 dan zie ik graag een link naar je van een ander OS dat het tegendeel bewijst. Vooralsnog denk ik dat 95% van de ARM hardware op software draait die zeer specifiek is aangepast voor de hardware.
[Reactie gewijzigd door johnbetonschaar op 22 juli 2024 13:30]