[翻譯]如何構建Windows 8

這是windows老大寫的一篇構建WOA(Windows On ARM)的文章,隨手翻譯過來一大部分,留作學習用途。

原文地址:

 

http://blogs.msdn.com/b/b8/archive/2012/02/09/building-windows-for-the-arm-processor-architecture.aspx
 
 
準備導出
在導出工作準備開始時,我們需要一個ARM編譯器和構建Windows的工具鏈。自從微軟的其它產品(比如Windows Phone 和 Embedded)使用ARM處理器後,我們有這些工具,但更長遠的目標是提供他們以構建Windows。這些工具要適用於開發人員,如果您正在Windows 8 開發者預覽版中使用C#/VB/XAML/HTML5,那就正合適了。C/C++ 需要ARM本地硬件進行測試,接下來會談到。
 
啓動Windows的核心
一旦我們有了工具,就可以開始導出Windows啓動環境並開發系統固件。
我們甚至要自己定製原型固件。有這幾個方面:
UEFI固件:
是WOA系統的最底層,提供持續不斷的服務以加載操作系統。對WOA來說,我們創建固件初始化我們交付給合作伙伴的系統。WOA系統也包含一個基於固件的TPM以完成可信賴的啓動和存儲加密。使用TPM時,例如,我們已經實現了可信任的啓動,驗證系統沒有被惡意軟件篡改。
ACPI固件:
用於系統平臺啓動時即插即用枚舉,也負責SoC上的外設(比如傳感器、觸摸控制器等)電源管理。這些年來,PC已經將即插即用總線和ACPI標準化,所以操作系統軟件和驅動可以在PC上沿着指定的方向找到每個東西。隨着Soc嵌入式設計的進行,沒有“樹”或能力發現什麼連接上了SoC,或者SoC如何被連接上了。在Windows8中,我們定義了一個新的標準在表格裏描述系統配置,所以軟件可以很簡單的讀取到表格並且配置系統。
 
從固件中,系統可以加載啓動管理器、啓動加載器、輪流到內核、HAL和啓動設備驅動。
Windows HAL(硬件抽象層)支持在覈心繫統資源上(計時器、DMA、中斷控制器)進行變化。Windows 設計用來支持多種架構指令集合(ISA),HAL是採用不同系統架構的關鍵經常出現一個新的ISA。抽象硬件層之後,OS自己不是必須要爲了適應新的核心繫統資源SoC而被修改。通過ARM平臺的變化顯然足夠了,所以我們設計HAL以支持新級別的抽象能力。Windows 8 HAL的新亮點是能夠通過擴展HAL通過每個插入的核心繫統資源,有點像中斷控制器的驅動。
 
設備和總線
爲了加載設備驅動然後繼續Windows啓動,我們必須構建一些新的驅動以支持新類型低功耗總線,加上設備驅動從而支持這些總線的連接。
我們的設備策略使用廣泛的標準協議和類驅動。我們下面的第一個例子是HID通過觸摸控制器和許多傳感器的I2C(Inter-Integrated Circuit兩線式串行總線)驅動,另一個是通過USB連接的移動寬頻無線電的類驅動。當然Windows內部有很多類驅動,當您插入一個各種類型的USB設備比如存儲、鼠標、鍵盤時就能體會到。
 
ž   低功耗串行總線比如I2C/UART在ARM PC上是很普遍的,但是在x86 PC上比較少。這些總線通常有較低的傳輸速率,但也有很少的功耗,有時不足10倍。支持這些總線是降低WOA整體功耗和擴展電池壽命的關鍵。總體上,我們把這些總線叫做SPBs(Simple Peripheral Busses簡單串行總線),而且我們已經在WOA上爲它們開發了接口。一旦我們有了接口,就需要定位一個缺口。在Windows中,我們有很多設備類通過USB的類驅動而被天然地支持。這些類在I2C中沒有被定義,因此它們缺少類驅動支持。一個流行的設備類是基於設備的HID協議(Human Interaction Device)。HID是選擇設備的協議,例如鍵盤、鼠標、觸板、麥克風、按鈕、觸屏等。通過定義一個標準協議和實現I2C上的HID驅動支持,我們可以和合作伙伴一起通過一個單獨的類驅動來採用他們的基於I2C設備的固件。例如,通過支持I2C的HID,觸摸控制器通過接口和Windows已經有的輸入支持槓桿就可以使用了。
ž   SD I/O 允許連接低功耗Wi-Fi無線電。當前PC中的無線電是通過USB或者PCI-E連接的。在改進電池壽命的同時我們添加SD I/O支持以保存高速數據速率(100MB/s)。在WOA上支持Wi-Fi也允許高效的卸載以在很少功耗時在連接備用中維持連接。
ž   嵌入式多媒體卡存儲(eMMC)是ARM設備存儲的事實標準(因爲大多數不支持SATA)。這對我們來說是一個有趣的挑戰,因爲Windows期望有快速的磁盤和高帶寬數據傳輸。除了支持eMMC之外,我們做了一些OS的性能優化以降低和聯合I/O存儲,從而對存儲有更少的讀和寫。
ž   GPIO(通用輸入/輸出)驅動支持連接按鈕,中斷或其它ARM處理器的I/O。
ž   除GPIO以外,也有一個Windows的按鈕驅動,電源和聲音按鈕。按鈕在ARM設備上不是標準的。每個系統對所有硬件按鈕來說需要一個指定的驅動。
ž   我們構建了新的電源框架便於管理SoC寬度的電源,總平臺電源、連接準備開/關使用模型。
 
準備開始屏幕
一旦固件、HAL、啓動服務、啓動設備、總線都準備好了,我們就準備開始系統剩餘部分和桌面以及開始屏幕。
ž   WOA上的ARM SoCs 有Dx可以在IE10、Windows用戶接口、Metro風格應用程序中進行圖形加速。利用DX 的GPU對傳送敏感的用戶體驗是必要的。對每個WOA目標來說,ARM合作伙伴已經創建了兼容DX的圖形驅動。這是一個非常複雜代碼的重要承諾因爲今天的GPU比CPU更加複雜。爲了在這些沒有顯卡驅動的SoC上面安裝Windows 8,而且因爲ARM SoC沒有工業級標準的VGA子系統並求助於兼容模式,我們的圖形組寫了一個軟GPU驅動,擁有能夠直接和硬件幀緩存工作的能力。此外啓用開發,也能使我們在Windows中普通GPU驅動不適用時使用軟GPU驅動並重新封裝其它東西。例如,當運行Windows安裝時,或者在其它場合Windows藍屏,我們可以給出一個友好的界面並定位出問題,因此壞的消息可以通過所有平臺進行很好的展現。這是一個對X86/64架構來說很普通的小例子。
ž   WOA PC從主處理器到集成硬件子系統使用具體工作的硬件支持。這改進了性能和電池壽命。例如,觀看電影時,處理器使用多媒體卸載來完成(拿一個專用的處理器來說),其它處理是最小化的。因爲多媒體卸載優化播放,你可以觀看好幾個電影沒有電池耗盡或者PC可以被設計得更瘦且輕。另一個例子是,如果你正在進行文檔工作的同時在觀看電影,這部電影就工作在卸載硬件上,幫助整體系統反應。WOA吸取了一些包含多媒體編碼和解碼卸載類型和安全卸載方面BitLocker和EAS的優點。這種類型的工程應用於在Windows7中支持卸載的x86/64架構。
 
連接設備服務
這部分我們有大多數系統的運行,該帶來服務以支持完整的Windows寬度。這是Windows支持的共同架構,所以開發人員可以在Metro類型的應用中利用好它們。
ž   移動寬帶 (MBB類驅動。通過創建一個類驅動,我們可以將Windows PC中添加寬帶的能力變得很簡單。當WOA是這項工作的催化劑時,整個生態系統都會獲益。
ž   打印機類驅動。對windows8來說,我們重新架構了打印機驅動並添加了類支持。使用這個類驅動大多數現在銷售的打印機都是能支持的,這就意味着你能在WOA上不使用額外驅動而實現“即插即打”。因爲很多原因需要這樣的新架構,我們從一開始就考慮通過WOA PC支持打印。
ž   GPSWindows提供了可以通過Wi-Fi訪問點和備份數據庫三角形計算出PC位置的位置提供。此外,有移動寬帶的系統也可以集成GNSS(全球定位系統,在美國也叫GPS)接收器提供在戶外瀏覽時的準確位置。
ž   傳感器(加速度計、旋轉、陀螺儀、指南針、磁力儀)。最近的文章中描述了在Windows中的傳感器融合和我們如何添加了傳感器支持。這個工作也通過基於SoC的架構應用並且在I2C協議上使用了HID。
ž   藍牙。WOA支持藍牙LE和x86/64上的Windows配置一樣,使用低功耗UART連接到藍牙無線電。
ž   通過USB和IP的MTPARM上的Windows提供用戶通過MTP(Media Transfer Protocol媒體傳輸協議)連接他們的口袋設備(比如移動電話、音樂播放器、攝像機)到他們的系統的能力。這些與MTP兼容的設備可以通過USB或IP連接,利用Windows內部的類驅動來實現,允許用戶通過他們喜歡的Metro風格應用程序交換數據。
ž   基於Windows Update的服務。對所有平臺代碼(操作系統、驅動、系統和設備固件)來說,每個WOA系統將會通過WU享受到服務,從頭到尾的。我們已經在WOA系統上爲安全和強勁升級系統固件在WU中添加支持,同時還有驅動定位,也就意味着每個已經被驗證可以很好工作的設備將會獲得驅動。
正如你所見的,一些工程工作採用了新的硬件平臺。一些介紹大幅的有關新類型硬件支持。這些工作大部分定位於x86/64平臺,特別減去了邊緣產品,如新的低功耗在Intel CES上演示的ATOM處理器。
 
顯著的數量傳播到了應用層,變成新的在Build大會上介紹的WinRT API定義元素。例如,當我們編譯核以支持備用連接時,傳輸很好的電池壽命是總體WinRT應用程序模型和工具集真正的部分,所有通過WOA和x86/64運行的Windows8。
 
之前提到的,Windows的一部分可以通過技術上簡單的方式來工作被用代碼方式構建。這些包含了Windows桌面和小程序和支持API的子系統通過我們需要的更好的資源和電源使用率顯著重新架構。事實上,有一個之前的ARM設備(早期的Windows Phone)運行全部的Windows桌面。在WOA開發的早期,我們擁有的存在的ARM設備硬件比如電話(ARM平板至今也沒有)。我們認爲您會喜歡我捕獲的早期調試WOA所有都是加載到RAM中的未修飾的圖片。注:這不是一個產品計劃或者產品的意思。
 
測試
你一定很想知道我們如何在實驗室裏測試WOA。對x86/64來說我們運行大的實驗室(數以千計的機器、實體機和虛擬機)在每天的構建中高度自動化運行測試。WOA需要我們重新封裝我們的實驗室和測試步驟。對於測試x86/64來說,很簡單通過預定上千個機架式服務器即可,或者虛擬化它們。對ARM來說,沒有標準的機架式服務器可以運行WOA。因爲我們正在做高度集成的硬件/固件/軟件開發,虛擬化不是很有幫助的,我們必須設計我們自己的目標。
 
我們綜合了上百種ARM開發板和定製的I/O板到一個機架上然後連接到測試架構中。我們原來的設計聚焦於在一個機架上支持300種ARM設備,但是我們最終選擇在1U的機架上調試定製的I/O板。
 
我們設計我們的1U地盤適合於標準的服務器機架。無論是一個全形式的設備或主板都可以放到地盤上。一旦完全集合好,與IO板和地盤連接的SoC板感覺就像是一個標準的機架式PC並且正好與已存在的實驗架構匹配。
 
每個42U機架托起了32個WOA地盤,加上網絡交換機、調試主機、USB集線器。3月份我們就會有超過100完全填充的機架用於WOA測試。
 
我們也必須導出我們的測試工具架構和測試,這不是簡單的挑戰,但是這保證我們可以在WOA上通過完全相同的自動化以驗證Windows 8.這是一個我們最新的設計測試架構照片,主板和調試端口如下:
 
 
在ARM上進行開發
實際上所有這些都比看上去要深入一些。我們也有機會對Windows的每個子系統做有意義的重組。在構建WOA和Windows8的過程中,我們投入了很多精力到改變Windows所有部分在最小電源損耗和資源利用上更好地工作。在之前的啓動、電源管理、內存使用部分,你可以看到這部分工作的結果。
 
之前我們詳細描述了WOA不支持任何類型的虛擬化或仿真方法,不能使得已存在的x86/64應用程序被導入或運行。支持多種形式的仿真,需要一種產品需要一個現代的方法檢測系統穩定性和定義的可預見性,現有的代碼沒有爲WOA平臺優化。虛擬的或仿真軟件將會在一個無法接受的水平上消耗系統資源,包含電池壽命和CPU。X86/64上的仿真和虛擬化軟件也需要傳統PC環境如鼠標、鍵盤等,這對WOA PC來說不是很好的假設。
 
如果我們啓用已存在代碼的板級遷移,我們可能會失敗於我們的承諾,如更長的電池壽命、可預料的性能、尤其是可信賴的體驗。今天的Windows應用程序使用的條框不需要考慮這些:是否是後臺程序、輪詢循環、計時器、系統鉤子、啓動程序、註冊表改變、核模式代碼、管理員權限、爲標記的驅動、插件、其它通用技術的宿主。通過避免這些概念,WOA實現了一個新級別的客戶體驗:你的WOA PC將會一直表現良好因爲應用程序從系統和其它地方隔離開來,你會繼續控制額外的爲你運行的軟件,一直讓多種那個硬件有能力工作。
 
我們聚焦於使用WOA爲消費者實現一個新的安全水平是最重要的。再一個公共場合,我們被問到是否“使得病毒和惡意軟件更容易運行”。現在你可以看到答案很明顯是“不”。事實上,WOA僅僅支持通過Windows Update和Windows商店應用程序而部署的代碼。正如我們所知,安全是一個工業範圍的,多種尺寸的挑戰,沒有系統或平臺可以做到沒有考慮多種因素而進行廣泛的聲明。
 
如果你需要運行已存在的x86/64軟件,你將會在x86/64的windows8上體驗到最好的服務。如果你已經考慮一個非Windows設備,我們認爲當你考慮潛在的因素和外部設、Windows商店應用程序(和開發人員平臺)和辦公應用程序、以及一套廣泛的內在的Windows應用程序時,WOA是一個更好的替代,。
 
當然,我們意識到很多微軟和其它地方的開發人員以來已存在的編程技術,向WOA過渡需要一個投資。開發基於WinRT的應用程序解決了這些和其它挑戰,從一開始,WinRT就被設計用於提供完整的用途豐富的滿足當今軟件需求,同時爲了避免可能降低消費者總體體驗的缺陷和陷井,對工具、語言、開發人員支持做了一些很深入的承諾。
 
開發人員想要當前存在的應用程序達到WOA有兩種選擇。許多應用程序將會很好的通過新的Metro風格前後爲已存在的通過web service APi數據源或應用程序和通信服務。這個方法對業務應用程序和許多消費者頁面屬性是很普遍的,表明這是富用戶交互模型能力的最佳方法,您可以通過其它新應用程序交互和共享信息。當日,這些不需要只是前端,可以在本地數據上操作,因爲WOA提供完整的訪問區域和周邊設備。其它已存在的應用程序會通過重新使用大量的引擎或運行時代碼而很好的服務,周圍是Metro的風格體驗。這會花費一些時間,意味着應用程序可以從容的移植到WOA和WinRT。在所有情況下,WinRT代表了新的Windows操作系統集合,程序員可以構建專爲Windows8設計的軟件。
 
返回到我們在Build時的設計架構圖,從一個第三方開發人員的觀點看,思考WOA的最佳方法是表達和其它所有Windows產品共享了Windows核操作系統的Metro風格平臺。Windows核操作系統已經被重新架構用於支持ARM平臺並且,通過第三方支持WinRT API和編程模塊。
 
在ARM上進行開發的話題是很廣泛的,而且佔用了Windows團隊爲這個工程的很多時間。下一步是更多的送交WOA代碼,但是我們要從如何把WOA PC提供給市場開始。
 
提供WOA PC
因爲Windows7項目的經驗,我們已經和PC廠商一起爲Windows進化和創建Windows8工作。爲了將新的PC提供給市場有一個很廣泛的合作-在PC上看到的“爲Windows設計”圖標表明廣泛的合作伙伴共享了承諾的集體工作把新的或已存在的PC提供給市場。我們使用的模型將會繼續使用到X86/64 PC投放市場,因爲工作和我們之前常用的是相似的,我們會在一個新的Windows版本中和硬件一起介紹新的被支持的技術,比如USB 3.0、UEFI、觸屏、傳感器。和很多要在產品循環中介紹的改進一起,這是廣泛的不斷進行的努力。
 
提交WOA PC是第一次構建一個新的系統-一個完全新的igong新一代的新功能的PC子系統。我們描述這些能夠達到新水平和能力的PC通過3個尺寸:瘦的輕量級的工業設計、長電池壽命、綜合質量。
 
考慮到SoC、外圍設備、固件、操作系統、WOA PC之間的緊密連接需求,應該想到,遠遠超出了僅僅是工業合作伙伴之間協作。在Windows上做軟件的團隊結束調試硅片和烙鐵,硬件工程師不用在Visual Studio和用戶接口代碼調試缺陷。但是每個WOA PC都是一個新的從組件和國家選擇通過固件、驅動、最終集合、PC生產者唯一應用程序開始的工程上的努力。我們也帶來了新的ARM設計從一開始甚至在硅片能用之前就熟悉模擬和仿真平臺。我們也帶來了整個生態系統做整個平臺低功耗設計,不僅包含一個優秀的SoC,還有有效率的無線電、傳感器、更高效率的PC電源架構。這適合於瘦和輕量級的PC,擁有的很好的電池壽命、高質量的工程提供很好的專爲Windows8設計的應用程序和服務體驗。
 
當每個WOA OC是唯一的,Windows的角色代表了持續的客戶體驗允許唯一的創新的硬件去運行-操作系統的定義。爲了實現這個目標,我們和多個ARM授權商(之前提到的德州儀器、高通、NVIDIA),每個都已經和合作伙伴一起工作將會把WOA PC帶給市場。這些PC被設計和生產用於WOA。通過從芯片到固件和驅動,工作被優先用於WOA。合作伙伴在創新工業設計和全部(包含平板電腦)因素上努力工作。這些現在都在開發中。我們的共同目標是爲PC生成商生成WOA PC和設計用於x86/64的Windows8 PC一樣快,使用最新一代的低功耗高性能平臺。
 
這部分不是這個話題,我們想要假設你,當一個消費者買了WOA PC時,將會很清晰的標識以避免混淆x86/64上的Windows8.PC將會和操作系統、所有的驅動和支持軟件一起被預安裝。WOA不會像軟件一樣適用-僅僅用於部署,所以你不必擔心使用哪個DVD安裝或者它是否能在一個特定的PC上運行。
 
WOA PC將會通過Windows或Windows Update被服務,消費者應用程序只能從Windows 商店裏下載,所以你不必擔心從商店之外的DVD下載或安裝的程序能否被運行。一個WOA PC在如何使用和管理方面更像是消費者電器。例如,之前提到的,新的重置的功能將會適用,WOA提供了“乾淨安裝”或鏡像相等價。
 
下一步
這個故事的描述已經夠多了,我們計劃更多的部分來描述WOA工程和準備構建基於上面對話中描述的操作系統的工作。很多都熱衷於得到他們傳下去的軟件。但是當然沒有在x86/64上Windows8的硬件,也沒用適用於Windows 7的。我們着手準備使用開發硬件擴展WOA的軟件項目。
 
爲了運行這個版本,一些設計用於WOA的測試PC將會通過下一代Windows里程碑而開始。這些設備是爲開發人員和硬件合作伙伴準備的,不能代表全部的消費者,任何想象力的延伸。它們有診斷和生產工具。他們被設計用於打開和調試。他們沒有最終的組件或固件(電源或熱量管理)商業設備被使用。他們是低成本製造的。你可能已經看到在CES上演示的類似設備,我們之前的演示已經使用到了。這些PC代表了WOA和體驗,但是他們不再代表最終的當前x86/64Windows8狀態的體驗。他們會在我們的第四次開發里程碑上運行得與Windows分支一樣。
 
這些PC生產和部署是貴的,因爲他們是小批量定製的。他們經過開發人員努力後會變得適用。我們不是挑逗你或者徵求提名,但是因爲我們能在網絡上看到圖像。這些設備已經被提及和分配。一方面看上去殘酷的追求擺在你面前,另一方面我們如何開發Windows是一個透明級別的標識。Win8項目的尺寸是很明顯的,和我們即將與信息和對話決定捆綁,這是之前沒有的。
 
這個月底,x86/64上的Windows8 即Windows Consumer Preview(Beta)將會發布並可下載。我們最近改變了測試版的名字,因爲這個期限意味着一些非常不同於“免費發佈的測試版”,所以我們不想添加混淆。爲了保持所描述的開放級別,沒有測試程序需要預先註冊或管理權限,只需要在Windows7標識的PC上下載和安裝(儘管VM也是被支持的,但這不是消費者體驗的最佳方法)。我們已經做了大量的工作並且從5個月前的Windows開發者預覽版有了很多顯著的改變。順便提醒一下,我們會堅持構建Windows8和WOA,有很多工作需要從預發佈到發佈時完成。質量仍然是第一位的。代碼還沒完成。
 
我們很高興正在接近里程碑。開發一個新版本的Windows是震撼人心的,發佈一個完整的平臺如WOA是富有挑戰的,激動人心和艱鉅的。我們期望Windows消費者預覽版能儘快讓每個人歡迎。
 
Windows組的代表
 
Steven Sinofsky
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章