设为首页 收藏本站
查看: 986|回复: 0

[经验分享] [翻译]如何构建Windows 8-Windows Embedded Standard 7 嵌入式定制

[复制链接]

尚未签到

发表于 2018-6-27 10:20:57 | 显示全部楼层 |阅读模式
  这是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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-531263-1-1.html 上篇帖子: lnmp、lamp、lnmpa一键安装包(Updated: 2016-4-28) 下篇帖子: 部署Vista(11)——使用Windows PE
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表