Portera Windows Phone 7 till HTC HD2 "10 gånger mer komplicerat" än man först trodde

Lästid ikon 4 min. läsa


Läsare hjälper till att stödja MSpoweruser. Vi kan få en provision om du köper via våra länkar. Verktygstipsikon

Läs vår informationssida för att ta reda på hur du kan hjälpa MSPoweruser upprätthålla redaktionen Läs mer

HTC HD2 Pin-out Ingen tänkte posta Windows Phone 7 till HTC HD2 skulle vara lätt, men i det här inlägget bekräftar Da_G, som har arbetat med det, med lödkolv och JTAG-maskin i handen att det faktiskt visar sig vara en stor utmaning.

Läsa hans ganska tekniska inlägg efter rasten:

Japp, RustyGrom har det täckt ganska mycket. För det första heter det "CE" för Compact Edition, och detta är inte en felaktig benämning på något sätt. Systemet är designat för att vara så kompakt som möjligt (det finns byggtidsbrytare för allt, så du kan stänga av nästan alla komponenter för att få en mycket "lätt" bild) uppenbarligen, inklusive drivrutiner för komponenter som inte finns skulle vara slöseri utrymme, eftersom de aldrig skulle vänjas. Så det ingår inga. På PC-sidan tillhandahåller BIOS en grundläggande funktionalitet med ett standardgränssnitt så generiska drivrutiner skapas för att föra plattformen upp till den nivån, och därifrån kan leverantörsspecifika drivrutiner laddas.

Om du vill sätta en inbäddad enhet i form av en stationär dator och ladda Windows 7 på den, börjar du med en färdigmonterad dator (videokort, moderkort, cpu, ram, etc.) – slå på den. Den laddar upp BIOS som initierar den grundläggande hårdvaran och börjar ladda resten från hårddisken. Den inbäddade enheten laddar upp NAND XLDR, som endast ger stöd för läs/skrivflash. XLDR laddar sedan "EBOOT" eller "IPL" i ram på typiska enheter. HTC använder inte EBOOT/IPL-modellen som sådan (här bryter vi oss från "standarden" ännu längre) utan har istället delat upp det i mARM AMSS (en specialdesignad RtOS som laddar och kör modemets ARM CPU ) och SPL. När AMSS laddar in SPL i ram och exekverar den, initierar SPL aARM (apps ARM CPU), gör olika kontroller (är vi i uppdateringsläge? måste vi exponera ett flash-gränssnitt för att uppdatera resten av operativsystemet? göra vi bara startar upp operativsystemet och flyttar åt sidan?)

Sedan kommer du äntligen förbi den mycket enhetsspecifika koden och vidare till den (något) mer generiska CE-kärnan/drivrutinerna som kopieras till ram av SPL och exekveras (Native Kernel/XIP-partition)

Så, hur skiljer sig CE7/WP7 från den modellen? (Vilket är modellen vi nu har i CE5.x/WM6.x) – mARM AMSS tillhandahåller ett annat gränssnitt och initialiseringsprocedur. Det betyder att någon av WP7-drivrutinerna från en donatorenhet som vi kanske porterar från inte skulle fungera alls med vår nuvarande AMSS. Vilket i sin tur innebär ingen start utan att skriva om drivrutinerna/kärnan eller AMSS.

Så för att jämföra det med en stationär PC igen måste vi skriva ett BIOS, ett Hardware Abstraktionslager och en uppsättning drivrutiner för varje komponent i systemet (troligen skulle en hel del av drivrutinerna vara användbara när resten är gjorda )

Do I sound jaded yet? Yes, yes I am It’s probably a factor of 10 more complicated than I thought it would be initially.

Här är JTAG-stiftutgångarna som måste anslutas, btw. Det finns stift på båda sidor av moderkortet vilket också verkligen gör ont i min ****, eftersom jag från början tänkte montera en extern port på HD2 så att jag lätt skulle kunna hålla en JTAG-anslutning med den, men du måste i princip ta bort hela moderkortet för att upprätthålla en tillförlitlig anslutning, vilket verkligen utesluter att köra det på en aktiv enhet.

Naturligtvis fortsätter Da_G att hacka på sin HTC HD2 (bilder på insidan av enheten ansluten till en JTAG ovan), men man undrar (och detta kan vara helgerån) med utvecklingen av Android på HTC HD2, gör vi behöver du fortfarande Windows Phone 7 för att hålla ute relevanta enheter under de kommande 12 månaderna?

Låt oss veta din åsikt nedan.

Mer om ämnena: htc-hd2, programvara, Windows Phone 7