在空中固件更新期间的容错变量区域重新铺设的制作方法

文档序号:16989999发布日期:2019-03-02 00:53阅读:162来源:国知局
在空中固件更新期间的容错变量区域重新铺设的制作方法

空中(ota)编程可以被用于通过网络连接将计算机可执行指令、软件、更新和其他代码分发给诸如智能电话、可穿戴计算设备、机顶盒、个人计算机和其他计算平台的设备。类似地,可以使用空中固件(fota)过程来将设备固件更新分发给设备。

提供本

背景技术:
以介绍以下针对

技术实现要素:
和具体实施方式的简要上下文。本背景技术并不旨在帮助确定要求保护的主题的范围,也并不旨在将要求保护的主题限制为解决上述任何或所有缺点或问题的实现。

发明内容

在fota更新过程中,在耐久性的非易失性设备存储器中的安全存储库内以容错方式重新铺设在提供各种引导和运行时服务的设备固件中被使用的变量。安全存储库中的备用区域被用于临时保持其中写入固件变量的主区域的备份。使用基于事务的容错写入(ftw)过程,可以利用被包含在从远程服务被递送的固件更新有效载荷中的变量来重新铺设主区域中的变量。在故障在变量区域重新铺设过程中出现的情况中,主区域或备用区域将保持有效,从而使得可以利用已知良好状态中的固件来使得设备能够成功地引用并且可以重新启动fota更新过程中的变量区域重新铺设。

在各种说明性示例中,符合由统一efi论坛维持的规范的统一可扩展固件接口(uefi)在设备固件与设备的操作系统(os)之间提供接口。除了针对设备提供初始系统配置和加载os的传统角色之外,uefi还被扩展为支持对安全存储库的修改,从而使得在fota更新期间可以在容错过程中重新铺设uefi变量。uefi变量存储各种种类的信息,包括配置设置、供应商/oem(原始设备制造商)数据、语言信息、输入/输出和错误处理接口以及引导顺序等信息。设备可以可选地被配置有一个或多个开关,这些开关可以被设置为选择性地启用或禁用容错变量区域重新铺设。此外,固件更新有效载荷可以包括可以在重新铺设期间被保留的uefi变量的白名单。还可以使用加密过程,其中在uefi变量区域重新铺设之前验证传入的固件更新有效载荷。

有利地,在fota更新过程期间的容错uefi变量区域重新铺设解决了其中不支持非易失性uefi变量存储库的重新供应的当前固件更新过程的限制。通过扩展uefi以使得变量能够以容错方式在非易失性存储库中被重新铺设,可以通过空中来高效且有效地供应固件更新,同时确保已知良好引导状态始终可用。这样的能力提供了附加的灵活性以在离开工厂环境并且被部署在现场中之后保持设备最新。

提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中被进一步描述。本发明内容并不旨在标识要求保护的主题的关键特征或必要特征,也并不旨在用于帮助确定要求保护的主题的范围。此外,要求保护的主题不限于解决在本公开的任何部分中提到的任何或所有缺点的实现。应当领会到,上述主题可以被实现为计算机控制的装置、计算机过程、计算系统、或者被实现为诸如一个或多个计算机可读存储介质的制品。通过阅读以下具体实施方式和回顾相关联的附图,这些和各种其他特征将是很清楚的。

附图说明

图1示出了设备可以在其中在空中固件(fota)更新过程期间通过网络与远程固件更新服务通信和交互的说明性计算环境;

图2示出了设备上的说明性分层架构,其包括硬件层、统一可扩展固件接口(uefi)层和操作系统(os)层;

图3示出了说明性片上系统(soc)布置;

图4示出了被实现在非易失性存储器中的安全存储库的说明性主区域和备用区域;

图5示出了在fota更新过程中被执行的说明性容错uefi变量区域重新铺设方法;

图6示出了用于在fota更新过程中启用/禁用uefi变量区域重新铺设的说明性开关;

图7示出了可以被包括在固件更新有效载荷中的uefi变量的说明性白名单;

图8示出了在uefi变量区域重新铺设之前在设备上被暴露以验证固件更新有效载荷中的uefi变量记录的说明性加密过程;

图9、图10和图11示出了fota更新期间的说明性变量区域重新铺设方法;

图12是可以部分地用于在fota更新期间实现当前容错变量区域重新铺设的、诸如个人计算机(pc)的说明性计算机系统的简化框图;

图13示出了可以部分地用于在fota更新期间实现当前容错变量区域重新铺设的说明性设备的框图;

图14是诸如移动电话或智能电话的说明性设备的框图;

图15是说明性多媒体控制台的框图;

图16是虚拟现实或混合现实头戴式显示器(hmd)设备的说明性示例的示图;以及

图17示出了虚拟现实或混合现实hmd设备的说明性示例的框图。

相同的附图标记在附图中表示相同的元件。除非另有说明,否则元件未按比例被绘制。

具体实施方式

图1示出了相同或不同的用户105可以在其中采用被配置为通过网络115与远程固件更新服务130通信的各种设备110的说明性环境100。网络115可以包括因特网120的部分,或者可以包括支持到因特网的连接的接口,从而使得设备110可以访问内容并且绘出由各种远程或基于云的应用服务(未示出)提供的用户体验。应用服务可以分别支持各种应用,诸如社交联网、地图绘制、新闻和信息、娱乐、旅游、生产力、金融等。

网络115可以包括各种组合或子组合中的各种网络类型和网络基础设施中的任何网络类型和网络基础设施,包括蜂窝网络、卫星网络、诸如ieee802.11下的wi-fi和ieee802.3下的以太网网络的ip(因特网协议)网络、公共交换电话网(pstn)、诸如网络的短程网络和/或近场通信(nfc)网络。例如,移动运营商、企业、因特网服务提供商(isp)、电话服务提供商、数据服务提供商等可以支持网络基础设施。

在一些情况中,设备110可以支持语音电话能力,并且除了各种其他特征之外,通常还支持数据消费应用,诸如因特网浏览和多媒体(例如,音乐、视频等)消费。设备110可以包括例如用户设备、移动电话、蜂窝电话、功能电话、平板计算机和智能电话,用户经常采用它们来拨打和接收语音和/或多媒体(即,视频)电话,参与消息接发(例如,发短信)和电子邮件通信,使用采用数据的应用和访问服务,浏览万维网,等等。

还设想了其他类型的电子设备在环境100内可使用,这些电子设备包括手持计算设备、pda(个人数字助理)、便携式媒体播放器、使用耳机和耳麦的设备(例如,蓝牙兼容设备)、平板电话设备(即,组合智能电话/平板设备)、可穿戴计算设备(诸如头戴式显示器(hmd)系统和智能手表)、嵌入式系统(诸如导航设备,如gps(全球定位系统)系统)、膝上型pc、台式pc、多媒体控制台、游戏系统、智能家电和电视、物联网(iot)设备等。在随后的讨论中,术语“设备”的使用旨在覆盖被配置有通信能力并且能够连接到通信网络115的所有设备。

环境100中的各种设备110可以支持不同的特征、功能和能力(这里通常被称为“特征”)。在给定设备上被支持的特征中的某些特征可能类似于在其他设备上被支持的特征,而其他特征对于给定设备可能是唯一的。在各种设备110上被支持的特征之间的重叠和/或区别的程度可以根据实现而变化。例如,一些设备110可以支持触摸控制、手势识别和语音命令,而其他设备可以启用更有限的用户界面。一些设备可以支持视频消费和因特网浏览,而其他设备可以支持更有限的媒体处理和网络接口特征。

诸如腕带和其他可穿戴系统的附件设备114也可以存在于环境100中。这样的附件设备114通常适于使用如蓝牙的短程通信协议来与耦合的设备110互操作以支持诸如以下功能:监测佩戴者的生理学(例如,心率、步数、燃烧的卡路里等)和环境条件(温度、湿度、紫外线(uv)水平等),以及显露来自耦合的设备110的通知。一些附件设备可以被配置为独立工作(即,不依赖于耦合的设备110以用于诸如因特网连接的功能)作为可以支持操作系统和应用的可穿戴计算设备。

图2示出了可以在给定设备(例如,图1中的设备110或114)上被使用的说明性架构200。架构200被分层地布置,并且包括操作系统(os)205、固件接口210和硬件220。硬件220通常至少包括处理器235和非易失性(即,耐久性)存储装置240。

在这一特定示例中,固件接口210利用uefi而被实现,并且被配置为符合由统一efi论坛发布的规范。fota递送过程(如由附图标记225所示)通常根据在uefi规范中被定义的更新胶囊运行时功能、通过网络(未示出)从远程固件更新服务130提供固件更新有效载荷230。在备选实现中,还可以扩展满足其他标准或协议的其他固件接口以在fota更新期间支持容错变量区域重新铺设,如本文所述。uefi210提供通用框架,引导管理器245和uefi应用250可以利用该框架提供各种引导服务255和运行时服务260。uefi已经成功地将bios(基本输入/输出系统)作为许多计算平台上的、被配置为初始化硬件220并且然后将设备引导到主os205中的标准固件。

固件更新驱动程序262被用于通过重新铺设uefi变量来修改固件,如下所述。驱动程序262可以被实现为uefidxe(驱动程序执行环境)驱动程序。在备选实现中,由驱动程序262提供的功能可以被并入引导管理器245或uefi应用250中,而不是被实例化为uefi210中的分离的组件。

引导服务255可以包括用于使用向引导过程增加安全性的固件来启用uefi安全引导的过程。支持uefi安全引导的系统在uefi变量265内维持内部安全数据库。这些uefi变量265通常被存储在非易失性存储装置240中,非易失性存储装置240被配置有防止未授权方的修改的硬件保护。非易失性存储装置240还包括被用于存储被用于密码验证的公钥的散列的一次性可编程(otp)熔丝270,如下面在图8所附的文本中被讨论的。如上所述,uefi变量可以存储各种种类的信息,包括配置设置、供应商/oem数据、语言信息、输入/输出和错误处理接口以及引导顺序等信息。另外,uefi变量可以控制uefi210的安全性检查,并且存在定义包括用于os205的引导加载程序的引导目标的若干变量。

图3示出了利用其可以实现架构200(图2)的说明性硬件。在这一示例中,片上系统(soc)300在单个芯片上集成一个或多个处理器核305和完整的一组系统组件310。系统组件310利用与外部组件的各种互连和总线,如由附图标记315和320代表性地指示的。因此,soc300可以支持诸如图形和显示器、视频编解码器、音频、存储器控制器、端口、通用输入/输出(gpio)等系统。一个示例性系统组件是与非易失性spi闪存330(例如,串行nor闪存或spi-nor闪存)对接的spi(串行外围接口)总线组件325。其他类型的非易失性存储器和嵌入式存储装置也可以由soc300利用,soc300诸如使用sdio(安全数字输入输出)总线组件340的emmc(嵌入式多媒体卡)335或nand闪存(图3中未示出)。这样的存储器提供安全存储库,这些安全存储库提供硬件保护以防止未授权方的修改,例如,使用用于emmc存储器的rpmb(重放保护的存储器块)下的安全分区以及用于spi闪存的rpmc(重放保护的单调计数器)。

安全非易失性存储器400(例如,spi闪存、emmc)在图4中表示,图4示出了被分布到主区域405和备用区域410中的存储器。主区域405安全地存储与uefi变量相关联的记录402。主区域包括工作存储库415,工作存储库415保持与如由tianocore.org维持的edkii(efi开发工具包版本ii)描述的ftw协议相关联的事务记录420。如图所示,工作存储库通常被实现为主区域405中的最后的块,尽管工作存储库在一些实现中可以使用多个块而被实现。固件更新驱动程序262(图2)可以访问tiano核ftw堆栈以启用主区域405中的记录的容错更新,其中使用被包含在固件更新有效载荷230(图2)中的数据来重新铺设选择的uefi变量。备用区域410被设置大小以支持由主区域405执行备份。因此,如果主区域是128kb,则在典型实现中备用区域的大小也被设置为128kb。在变量区域重新铺设过程期间临时利用备用区域410。

图5示出了参考图4中所示的存储器400的示图在fota更新过程中被执行的说明性容错uefi变量区域重新铺设方法500。本文中使用的术语“重新铺设”表示主区域中的一些或所有uefi变量被替换为来自固件更新有效载荷230(图2)的对应的变量。在典型的实现中,uefi变量区域重新铺设可以是fota更新中的最后的步骤,因为这增加了存储器400中的空闲空间可用于备份uefi变量的可能性,如下面更详细地描述的。除非被特别说明,否则流程图中示出和所附文本中描述的方法或步骤不限于特定的次序或顺序。另外,其中的一些方法或步骤可以同时地发生或被执行,并且不是所有方法或步骤都必须在给定实现中取决于这样的实现的要求而被执行,并且可以任选地利用一些方法或步骤。在步骤505中,使用上述ftw协议将主区域405的内容复制并且写入备用区域410(通常在执行步骤505之前擦除备用区域)。在判定框510,如果故障在步骤505期间发生,则主区域405仍然是完整的,并且其中存储的变量可以在设备的后续引导时被使用,并且可以重新启动fota更新过程中的变量区域重新铺设,如步骤512中所示。

在步骤515中,如果步骤505成功,则擦除主区域405中的工作存储库415。如果步骤505成功,则变量和工作存储库的有效副本被包含在主区域405和备用区域410中。在判定框520,如果检测到在步骤515期间或之后的故障(例如,通过驱动程序能够清理工作区域的第一位),则在步骤525中,将完整备用区域410复制回主区域405中,重置系统,并且可以在后续引导中重新启动fota更新过程中的变量区域重新铺设。

在步骤530中,擦除主区域405中的变量记录。如果步骤530成功,则变量和工作存储库的有效副本被包含在备用区域410中。在判定框535,如果故障在步骤530期间发生,则在步骤540中,优雅地中止fota更新过程,将完整备用区域410复制回主区域405中,重置系统,并且可以在后续引导中重新启动fota更新过程中的变量区域重新铺设。

在步骤545中,使用ftw协议从传入的固件更新有效载荷230(图2)复制变量记录并且将其写入主区域405中。如果步骤545成功地完成,则变量的有效副本被包含在主区域和备用区域两者中,但是主区域利用来自有效载荷230的最新变量被重新铺设。备用区域410中的工作存储库(即,备用区域的最后的块)包含有效内容,而主区域405中的工作存储库是空的并且未初始化。在判定框550,如果故障在步骤545期间发生,则在步骤555中,优雅地中止fota更新过程,将完整备用区域410复制回主区域405中,重置系统,并且可以在后续引导中重新启动fota更新过程中的变量区域重新铺设。在判定框560,如果故障在步骤545之后发生,则在步骤565中,可以优雅地初始化主区域405中的工作存储库415并且正常设备操作可以恢复。

在步骤570中,擦除备用区域410。如果步骤570被成功地完成,则fota更新过程完成,因为利用来自固件更新有效载荷的已更新信息来重新铺设主区域中的变量通常是fota更新过程的最后的步骤,如上所述。在判定框575,如果故障在步骤570中发生,则在步骤580中,可以优雅地初始化主区域405中的工作存储库415并且正常设备操作可以恢复。

现在呈现可以作为fota更新过程的一部分针对容错变量区域重新铺设而被实现的各种选项。图6示出了用于启用/禁用该过程的说明性开关600。这些开关允许设备跳过变量区域重新铺设,这在某些情况中是有利的,特别是当设备资源和/或网络带宽更有限时。例如,一些固件更新可以旨在解决设备上的具体功能问题和/或可以不包括安全修复。因此,这样的更新可能不需要在主区域中重新铺设变量记录,并且在某些情况中可以减少固件更新的时间和复杂性。

在这一示例中,开关600包括固件版本605和名为“reinitializeuefivariables”的重新初始化变量610。固件版本605存储版本号,例如在这一示例中被称为“critical_svn”的bios安全版本号(svn)。可以将设备上的现有固件的版本与传入的固件更新有效载荷中的固件的版本比较。如果设备固件具有比更新的svn更旧的svn,则可以使用在图5中示出并且在所附文本中描述的方法500来重新铺设变量区域。否则,可以跳过更新。类似地,可以将重新初始化变量610设置为“开启”状态,从而使得fota更新过程中的容错变量区域重新铺设能够在下一可用更新时继续。如果变量610被设置为“关闭”状态,则可以跳过更新。

图7示出了可以被包括在固件更新有效载荷230中的uefi变量的说明性白名单705。白名单705使得开发者、oem和设备制造商例如能够跨越固件更新保留某些关键uefi变量。例如,可以利用uefi变量的白名单来使得设备状态能够在固件更新之后被保持不变。例如,一些设备特征可以保持被锁定或未锁定,可以启用双引导功能,等等。

图8示出了在uefi变量区域重新铺设之前在设备(例如,图1中的设备110、114)上被暴露以验证固件更新有效载荷230中的uefi变量记录的说明性加密过程802,如上面在图5的所附的文本中所述。这意味着在引导过程中仅将运行可信固件。如图所示,固件更新有效载荷中的变量记录的散列805被包括在固件更新有效载荷230中的安全引导清单810中。安全引导清单810本身通过验证被用于认证的公钥812的散列与被存储在otp熔丝270上的散列匹配而被信任。过程802通过验证变量记录的运行时计算的散列815与被包含在安全引导清单810中的散列匹配来验证变量记录,如由附图标记820所示。因此,加密验证过程提供了确保变量记录的完整性,从而使得仅使用有效的变量记录来重新铺设存储器的主区域中的uefi变量。

图9、图10和图11示出了在fota更新期间的说明性变量区域重新铺设方法。图9示出了可以由设备(例如,图1中的设备110或114)实现的方法900。在步骤905中,在设备上暴露安全非易失性存储器存储库。存储器包括主区域和备用区域,每个区域具有用于与ftw协议相关联的事务记录的工作存储库。在步骤910中,主区域中的变量记录被复制并且被写入备用区域。在步骤915中,擦除主区域的工作存储库中的内容。在步骤920中,来自在设备处被接收(例如,作为fota更新过程的一部分)的固件更新有效载荷的变量记录被复制并且被写入主区域中。在步骤925中,擦除备用区域中的变量记录。在步骤910到925中发生的故障被处理,如图5所附的文本中所述。

图10示出了可以针对作为fota更新过程的一部分的变量区域重新铺设由设备(例如,图1中的设备110或114)实现的方法1000。在步骤1005中,通过网络连接接收固件更新有效载荷。在步骤1010中,在备用区域中创建被存储在安全非易失性存储器的主区域中的固件变量的备份。在步骤1015中,来自固件更新有效载荷的变量被写入主区域中,例如使用基于事务的ftw协议。在步骤1020中,如果故障在fota更新过程期间在变量区域重新铺设中发生,则可以使用备份将设备设置为已知良好引导状态。在步骤1025中,如果来自有效载荷的固件变量被成功地写入主区域,则擦除备份。

图11示出了可以在与固件更新服务130(图1)相关联服务器上被执行的方法1100。在步骤1105中,将可以被用于跨固件更新来保持设备状态的uefi变量的白名单并入固件更新有效载荷内。在步骤1110中,通过网络向远程设备(例如,图1中的设备110或114)传输固件更新有效载荷。白名单可以作为安全更新胶囊的一部分被包括在固件更新有效载荷中,并且因此可以经受与上述相同的密码验证以确保白名单的完整性不受损害。

图12是利用其可以实现fota更新期间的当前容错变量区域重新铺设的说明性计算机系统1200(诸如pc、客户端机器或服务器)的简化框图。计算机系统1200包括处理器1205、系统存储器1211和系统总线1214,系统总线1214将包括系统存储器1211的各种系统组件耦合到处理器1205。系统总线1214可以是使用各种总线架构中的任何总线架构的若干类型的总线结构中的任何总线结构,包括存储器总线或存储器控制器、外围总线或本地总线。系统存储器1211包括只读存储器(rom)1217和随机存取存储器(ram)1221。基本输入/输出系统(bios)1225(包含有助于在计算机系统1200内的元件之间传送信息的基本例程,诸如在启动期间)被存储在rom1217中。计算机系统1200还可以包括用于从内部布置的硬盘(未示出)读取和向其写入的硬盘驱动1228、用于从可移除磁盘1233(例如,软盘)读取或向其写入的磁盘驱动1230以及用于从可移除光盘1243(诸如cd(光盘)、dvd(数字通用光盘)或其他光学介质)读取或向其写入的光盘驱动1238。硬盘驱动1228、磁盘驱动1230和光盘驱动1238分别通过硬盘驱动接口1246、磁盘驱动接口1249和光盘驱动接口1252被连接到系统总线1214。驱动以及它们的相关联的计算机可读存储介质针对计算机系统1200提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。虽然这一说明性示例包括硬盘、可移除磁盘1233和可移除光盘1243,但是在fota更新期间的当前容错变量区域重新铺设的一些应用中也可以使用可以存储由计算机可访问的数据的其他类型的计算机可读存储介质,诸如磁带盒、闪存卡、数字视频盘、数据盒、随机存取存储器(ram)、只读存储器(rom)等。另外,如本文中使用的,术语计算机可读存储介质包括介质类型的一个或多个实例(例如,一个或多个磁盘、一个或多个cd等)。出于本说明书和权利要求的目的,短语“计算机可读存储介质”及其变体不包括波、信号和/或其他暂态和/或无形通信介质。

多个程序模块可以被存储在硬盘、磁盘1233、光盘1243、rom1217或ram1221上,包括操作系统1255、一个或多个应用程序1257、其他程序模块1260和程序数据1263。用户可以通过诸如键盘1266的输入设备和诸如鼠标的指点设备1268向计算机系统1200中输入命令和信息。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、轨迹球、触摸板、触摸屏、触敏设备、语音命令模块或设备、用户动作或用户手势捕获设备等。这些和其他输入设备通常通过被耦合到系统总线1214的串行端口接口1271被连接到处理器1205,但是可以通过其他接口(诸如并行端口、游戏端口或通用串行总线(usb))而被连接。监示器1273或其他类型的显示设备也经由诸如视频适配器1275的接口而被连接到系统总线1214。除了监示器1273之外,个人计算机通常还包括其他外围输出设备(未示出),诸如扬声器和打印机。图12中所示的说明性示例还包括主机适配器1278、小型计算机系统接口(scsi)总线1283以及被连接到scsi总线1283的外部存储设备1276。

计算机系统1200在联网环境中使用到一个或多个远程计算机(诸如远程计算机1288)的逻辑连接而可操作。远程计算机1288可以被选择为另一个人计算机、服务器、路由器、网络pc、对等设备或其他公共网络节点,并且通常包括上面相对于计算机系统1200而被描述的元件中的很多或所有元件,尽管图12中仅示出了单个代表性远程存储器/存储设备1290。图12中描绘的逻辑连接包括局域网(lan)1293和广域网(wan)1295。这样的联网环境通常被部署在例如办公室、企业范围的计算机网络、内联网和因特网中。

当在lan联网环境中被使用时,计算机系统1200通过网络接口或适配器1296而被连接到局域网1293。当在wan联网环境中被使用时,计算机系统1200通常包括宽带调制解调器1298、网络网关或用于通过诸如因特网的广域网1295建立通信的其他装置。宽带调制解调器1298(其可以是内部或外部的)经由串行端口接口1271被连接到系统总线1214。在联网环境中,与计算机系统1200或其部分有关的程序模块可以被存储在远程存储器存储设备1290中。应当注意,图12中所示的网络连接是说明性的,并且可以使用在计算机之间建立通信链路的其他装置,这取决于在fota更新期间的当前容错变量区域重新铺设的应用的具体要求。

图13示出了针对能够执行本文中描述的各种组件以用于在fota更新期间提供当前容错变量区域重新铺设的设备的说明性架构1300。因此,图13中所示的架构1300示出了可以适用于服务器计算机、移动电话、pda、智能电话、台式计算机、上网本计算机、平板计算机、gps设备、游戏控制台、膝上型计算机等的架构。架构1300可以被用于执行本文中呈现的组件的任何方面。

图13中所示的架构1300包括cpu(中央处理单元)1302、包括ram1306和rom1308的系统存储器1304以及将存储器1304耦合到cpu1302的系统总线1310。包含有助于在架构1300内的元件之间传送信息的基本例程(诸如在启动期间)的基本输入/输出系统被存储在rom1308中。架构1300还包括用于存储软件代码或被用于实现应用、文件系统和操作系统的其他计算机执行的代码的大容量存储设备1312。

大容量存储设备1312通过被连接到总线1310的大容量存储控制器(未示出)而被连接到cpu1302。大容量存储设备1312和它的相关联的计算机可读存储介质针对架构1300提供非易失性存储。

尽管本文中包含的计算机可读存储介质的描述涉及大容量存储设备,诸如硬盘或cd-rom驱动,但是本领域技术人员应当领会到,计算机可读存储介质可以是可以由架构1300访问的任何可用存储介质。

通过示例而非限制,计算机可读存储介质可以包括在用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术而被实现的易失性和非易失性、可移除和不可移除介质。例如,计算机可读介质包括但不限于ram、rom、eprom(可擦除可编程只读存储器)、eeprom(电可擦除可编程只读存储器)、闪存或其他固态存储器技术、cd-rom、dvd、hd-dvd(高清晰度dvd)、蓝光或其他光学存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备或可以被用于存储期望的信息并且可以由架构1300访问的任何其他介质。

根据各种实施例,架构1300可以使用通过网络到远程计算机的逻辑连接来在联网环境中操作。架构1300可以通过被连接到总线1310的网络接口单元1316连接到网络。应当领会到,网络接口单元1316还可以被用于连接到其他类型的网络和远程计算机系统。架构1300还可以包括输入/输出控制器1318以用于接收和处理来自多个其他设备的输入,包括键盘、鼠标或电子触笔(图13中未示出)。类似地,输入/输出控制器1318可以向显示屏、打印机或其他类型的输出设备(也在图13中未示出)提供输出。

应当领会到,本文中描述的软件组件在被加载到cpu1302中并且被执行时可以将cpu1302和整体架构1300从通用计算系统变换为被定制为促进本文中呈现的功能的专用计算系统。cpu1302可以由任何数目的晶体管或其他分立电路元件构成,其可以单独地或共同地呈现任何数目的状态。更具体地,响应于被包含在本文中公开的软件模块内包含的可执行指令,cpu1302可以作为有限状态机操作。这些计算机可执行指令可以通过指定cpu1302如何在状态之间转换来变换cpu1302,由此变换构成cpu1302的晶体管或其他分立硬件元件。

对本文中呈现的软件模块编码还可以变换本文中呈现的计算机可读存储介质的物理结构。在本说明书的不同实现中,物理结构的具体变换可以取决于各种因素。这样的因素的示例可以包括但不限于被用于实现计算机可读存储介质的技术,而无论计算机可读存储介质被表征为主存储装置还是辅助存储装置等。例如,如果计算机可读存储介质被实现为基于半导体的存储器,则可以通过变换半导体存储器的物理状态来将本文中公开的软件编码在计算机可读存储介质上。例如,软件可以变换构成半导体存储器的晶体管、电容器或其他分立电路元件的状态。软件还可以转换这样的组件的物理状态,以便在其上存储数据。

作为另一示例,本文中公开的计算机可读存储介质可以使用磁或光技术而被实现。在这样的实现中,当在其中编码软件时,本文中呈现的软件可以变换磁性或光学介质的物理状态。这些变换可以包括改变给定磁介质内的特定位置的磁特性。这些变换还可以包括改变给定光学介质内的特定位置的物理特征或特性以改变这些位置的光学特性。在不脱离本说明书的范围和精神的情况下,物理介质的其他变换是可能的,其中前述示例仅被提供以促进本讨论。

鉴于以上内容,应当领会到,在架构1300中发生很多类型的物理变换以便存储和执行本文中呈现的软件组件。还应当领会到,架构1300可以包括其他类型的计算设备,包括手持式计算机、嵌入式计算机系统、智能电话、pda以及本领域技术人员已知的其他类型的计算设备。还预期了架构1300可以不包括图13中所示的组件中的所有组件,可以包括在图13中未被明确示出的其他组件,或者可以利用完全不同于图13中所示的架构的架构。

图14是诸如移动电话或智能电话的、包括各种可选的硬件和软件组件的说明性设备110的功能框图,总体上在1402处被示出。移动设备中的任何组件1402可以与任何其他组件通信,但是,为了便于说明,并未示出所有连接。移动设备可以是各种计算设备(例如,蜂窝电话、智能电话、手持计算机、pda等)中的任何计算设备,并且可以允许与一个或多个移动通信网络1404(诸如蜂窝电话或卫星网络)的无线双向通信。

所示的设备110可以包括控制器或处理器1410(例如,信号处理器、微处理器、微控制器、asic(专用集成电路)或其他控制和处理逻辑电路)以用于执行诸如信号编码、数据处理、输入/输出处理、功率控制和/或其他功能的任务。操作系统1412可以控制组件1402的分配和使用,包括功率状态、锁定上(above-lock)状态和锁定下(below-lock)状态,并且提供针对一个或多个应用程序1414的支持。应用程序可以包括通用移动计算应用(例如,图像捕获应用、电子邮件应用、日历、联系人管理器、web浏览器、消息接发应用)或任何其他计算应用。

所示的设备110可以包括存储器1420。存储器1420可以包括不可移除存储器1422和/或可移除存储器1424。不可移除存储器1422可以包括ram、rom、闪存、硬盘或其他众所周知的存储器存储技术。可移除存储器1424可以包括闪存或订户身份模块(sim)卡(其在gsm(全球移动通信系统)系统中是众所周知的)或者其他众所周知的存储器存储技术,诸如“智能卡”。存储器1420可以被用于存储用于运行操作系统1412和应用程序1414的数据和/或代码。示例数据可以包括要经由一个或多个有线或无线网络被发送给一个或多个网络服务器或其他设备/或从一个或多个网络服务器或其他设备被接收的网页、文本、图像、声音文件、视频数据或其他数据集。

存储器1420还可以被布置为或包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术而被实现的一个或多个计算机可读存储介质。例如,计算机可读介质包括但不限于ram、rom、eprom、eeprom、闪存或其他固态存储器技术、cd-rom(压缩盘rom)、dvd、(数字多功能盘)hd-dvd(高清晰度dvd)、蓝光或其他光学存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备或者可以被用于存储期望的信息并且可以由设备110访问的任何其他介质。

存储器1420可以被用于存储订户标识符(诸如国际移动订户身份(imsi))和设备标识符(诸如国际移动设备标识符(imei))。这样的标识符可以被传输给网络服务器以标识用户和设备。设备110可以支持一个或多个输入设备1430;诸如触摸屏1432;用于实现用于语音识别、语音命令等的语音输入的麦克风1434;相机1436;物理键盘1438;轨迹球1440;和/或接近传感器1442;以及一个或多个输出设备1450,诸如扬声器1452和一个或多个显示器1454。在某些情况中,也可以利用使用手势识别的其他输入设备(未示出)。其他可能的输出设备(未示出)可以包括压电或触觉输出设备。某些设备可以提供多于一个输入/输出功能。例如,触摸屏1432和显示器1454可以被组合成单个输入/输出设备。

无线调制解调器1460可以被耦合到天线(未示出),并且可以支持处理器1410与外部设备之间的双向通信,如本领域中众所周知的。调制解调器1460被一般性地示出并且可以包括用于与移动通信网络1404和/或其他基于无线电的调制解调器(例如,蓝牙1464或wi-fi1462)通信的蜂窝调制解调器。无线调制解调器1460通常被配置用于与一个或多个蜂窝网络(诸如gsm网络)通信以用于单个蜂窝网络内、蜂窝网络之间或设备与公共交换电话网络(pstn)之间的数据和语音通信。

该设备还可以包括至少一个输入/输出端口1480、电源1482、卫星导航系统接收器1484(诸如gps接收器)、加速度计1486、陀螺仪(未示出)和/或物理连接器1490,其可以是usb端口、ieee1394(firewire)端口和/或rs-232端口。所示的组件1402不是必需的或详尽的,因为可以删除任何组件并且可以添加其他组件。

图15是多媒体控制台1500的说明性功能框图。多媒体控制台1500具有中央处理单元(cpu)1501,cpu1501具有一级高速缓存1502、二级高速缓存1504和闪存rom(只读存储器)1506。一级高速缓存1502和二级高速缓存1504临时地存储数据,并且因此减少存储器访问周期的数目,由此提高了处理速度和吞吐量。cpu1501可以被配置有多于一个核,并且因此被配置有附加的一级高速缓存1502和二级高速缓存1504。闪存rom1506可以存储在多媒体控制台1500被通电时在引导过程的初始阶段期间被加载的可执行代码。

图形处理单元(gpu)1508和视频编码器/视频编解码器(编码器/解码器)1514形成用于高速和高分辨率图形处理的视频处理流水线。数据经由总线从gpu1508被传送到视频编码器/视频编解码器1514。视频处理流水线向a/v(音频/视频)端口1540输出数据以用于传输给电视或其他显示器。存储器控制器1510被连接到gpu1508以存进处理器访问各种类型的存储器1512,诸如但不限于ram。

多媒体控制台1500包括优选地在模块1518上被实现的i/o控制器1520、系统管理控制器1522、音频处理单元1523、网络接口控制器1524、第一usb(通用串行总线)主机控制器1526、第二usb控制器1528和前面板i/o子组件1530。usb控制器1526和1528用作针对外围控制器1542(1)和1542(2)、无线适配器1548和外部存储器设备1546(例如,闪存、外部cd/dvdrom驱动、可移除介质等)的主机。网络接口控制器1524和/或无线适配器1548提供对网络(例如,因特网、家庭网络等)的访问,并且可以是各种各样的各种有线或无线适配器组件中的任何适配器组件,包括以太网卡、调制解调器、蓝牙模块、电缆调制解调器等。

提供系统存储器1543以存储在引导过程期间被加载的应用数据。媒体驱动1544被提供,并且其可以包括dvd/cd驱动、硬盘驱动或其他可移除介质驱动等。媒体驱动1544可以在多媒体控制台1500内部或外部。应用数据可以经由媒体驱动1544而被访问以用于由多媒体控制台1500执行、重放等。媒体驱动1544经由诸如串行ata总线或其他高速连接(例如,ieee1394)的总线被连接到i/o控制器1520。

系统管理控制器1522提供与确保多媒体控制台1500的可用性相关的各种服务功能。音频处理单元1523和音频编解码器1532形成具有高保真度和立体声处理的对应的音频处理流水线。音频数据经由通信链路在音频处理单元1523与音频编解码器1532之间被传送。音频处理流水线向a/v端口1540输出数据以用于由具有音频能力的外部音频播放器或设备再现。

前面板i/o子组件1530支持电源按钮1550和弹出按钮1552的功能以及在多媒体控制台1500的外表面上被暴露的任何led(发光二极管)或其他指示器的功能。系统电源模块1539向多媒体控制台1500的组件提供功率。风扇1538冷却多媒体控制台1500内的电路。

cpu1501、gpu1508、存储器控制器1510和多媒体控制台1500内的各种其他组件经由一个或多个总线而被互连,这些总线包括串行和并行总线、存储器总线、外围总线以及使用各种总线架构中的任何总线架构的处理器或本地总线。通过示例,这样的架构可以包括外围组件互连(pci)总线、pci-express总线等。

当多媒体控制台1500被通电时,应用数据可以从系统存储器1543被加载到存储器1512和/或高速缓存1502和1504中,并且在cpu1501上被执行。应用可以呈现图形用户界面,图形用户界面在导航到在多媒体控制台1500上可用的不同媒体类型时提供一致的用户体验。在操作中,可以从媒体驱动器1544启动或播放媒体被包含在驱动器1544内的应用和/或其他媒体以向多媒体控制台1500提供附加功能。

通过简单地将系统连接到电视或其他显示器,多媒体控制台1500可以作为独立系统而被操作。在这一独立模式中,多媒体控制台1500允许一个或多个用户与系统交互,观看电影或者收听音乐。然而,利用通过网络接口控制器1524或无线适配器1548可用的宽带连接的集成,多媒体控制台1500还可以作为更大的网络社区中的参与者而被操作。

当多媒体控制台1500被通电时,保留设定量的硬件资源以用于由多媒体控制台操作进行系统使用。这些资源可以包括存储器(例如,16mb)、cpu和gpu周期(例如,5%)、联网带宽(例如,8kbps)等的保留。因为这些资源在系统引导时被保留,所以保留的资源从应用的视野不存在。

特别地,存储器保留优选地足够大以包含启动内核、并发系统应用和驱动程序。cpu保留优选地是恒定的,从而使得如果系统应用不使用保留的cpu使用,则空闲线程将消耗任何未使用的周期。

关于gpu保留,通过使用gpu中断来调度代码以将弹出窗口绘出为覆盖图来显示由系统应用(例如,弹出窗口)生成的轻量级消息。覆盖所需的存储器量取决于覆盖区域大小,并且覆盖优选地随屏幕分辨率而缩放。在由并发系统应用使用完整用户界面时,优选的是使用独立于应用分辨率的分辨率。可以使用缩放器来设置这一分辨率,从而使得消除对于改变频率和引起tv重新同步的需要。

在多媒体控制台1500引导并且系统资源被保留之后,并发系统应用执行以提供系统功能。系统功能被封装在一组系统应用中,这些系统应用在上述保留的系统资源内执行。操作系统内核标识作为系统应用线程比对游戏应用线程的线程。系统应用优选地被调度以在预定的时间和间隔在cpu1501上运行,以便向应用提供一致的系统资源视野。调度是为了最小化针对在控制台上运行的游戏应用的高速缓存中断。

当并发系统应用需要音频时,由于时间敏感性,音频处理相对于游戏应用被异步地调度。当系统应用活动时,多媒体控制台应用管理器(下面描述)控制游戏应用音频级别(例如,静音、衰减)。

输入设备(例如,控制器1542(1)和1542(2))由游戏应用和系统应用共享。输入设备不是保留的资源,而是要在系统应用与游戏应用之间被切换以使得每个应用将具有设备的焦点。应用管理器优选地控制输入流的切换,而不需要知道游戏应用的知识,并且驱动程序保持关于焦点开关的状态信息。

图16示出了透视、混合现实或虚拟现实hmd设备1600的一个特定说明性示例,并且图17示出了设备1600的功能框图。hmd设备1600包括形成透视显示子系统1604的一部分的一个或多个透镜1602,从而使得可以使用透镜1602(例如,使用到透镜1602上的投影、被并入透镜1602中的一个或多个波导系统(诸如近眼显示系统)、和/或以任何其他合适的方式)来显示图像。hmd设备1600还包括被配置为获取用户正在观看的背景场景和/或物理环境的图像的一个或多个面向外的图像传感器1606,并且可以包括被配置为检测声音(诸如来自用户的语音命令)的一个或多个麦克风1608。面向外的图像传感器1606可以包括一个或多个深度传感器和/或一个或多个二维图像传感器。在备选布置中,如上所述,混合现实或虚拟现实显示系统可以通过用于面向外的图像传感器的取景器模式来显示混合现实或虚拟现实图像,而不是并入透视显示子系统。

hmd设备1600还可以包括被配置用于检测用户的每只眼睛的注视方向或者焦点的方向或位置的注视检测子系统1610,如上所述。注视检测子系统1610可以被配置为以任何合适的方式确定用户的眼睛中的每只眼睛的注视方向。例如,在所示的说明性示例中,注视检测子系统1610包括被配置为引起闪烁的光从用户的每个眼球反射的一个或多个闪烁源1612(诸如红外光源)和被配置为捕获用户的每个眼球的图像的一个或多个图像传感器1614(诸如面向内的传感器)。如从使用(多个)图像传感器1614而被收集的图像数据而确定的、来自用户眼球的闪烁和/或用户瞳孔的位置的变化可以被用于确定注视的方向。

另外,从用户的眼睛投射的注视线与外部显示器相交的位置可以被用于确定用户正注视的对象(例如,显示的虚拟对象和/或真实背景对象)。注视检测子系统1610可以具有任何合适数目和布置的光源和图像传感器。在一些实现中,可以省略注视检测子系统1610。

hmd设备1600还可以包括附加的传感器。例如,hmd设备1600可以包括全球定位系统(gps)子系统1616以允许确定hmd设备1600的位置。这可以帮助标识可能位于用户的邻接物理环境中的真实世界对象,诸如建筑物等。

hmd设备1600还可以包括一个或多个运动传感器1618(例如,惯性、多轴陀螺仪或加速度传感器)以在用户佩戴作为混合现实或虚拟现实hmd设备的一部分的系统时检测用户头部的移动和位置/取向/姿势。可以可能与眼睛跟踪闪烁数据和面向外的图像数据一起使用运动数据以用于注视检测以及用于图像稳定,以帮助校正来自面向外的图像传感器1606的图像中的模糊。即使来自(多个)面向外的图像传感器1606的图像数据不能被分辨,运动数据的使用也可以允许跟踪注视位置的变化。

另外,运动传感器1618以及(多个)麦克风1608和注视检测子系统1610也可以被用作用户输入设备,从而使得用户可以经由眼睛、颈部和/或头部的姿势以及在某些情况中经由口头命令与hmd设备1600交互。可以理解,图16和图17中示出并且在所附文本中描述的传感器出于示例的目的而被包括,并且并不旨在以任何方式进行限制,因为可以利用任何其他合适的传感器和/或传感器的组合以满足特定实现的需要。例如,在一些实现中,可以利用生物识别传感器(例如,用于检测心脏和呼吸率、血压、大脑活动、体温等)或环境传感器(例如,用于检测温度、湿度、海拔、uv(紫外线)光水平等)。

hmd设备1600还可以包括具有通过通信子系统1626与传感器、注视检测子系统1610、显示子系统1604和/或其他组件通信的逻辑子系统1622和数据存储子系统1624的控制器1620,诸如一个或多个处理器。通信子系统1626还可以促进显示系统与远程定位的资源(诸如处理、存储、电力、数据和服务)一起被操作。也就是说,在一些实现中,hmd设备可以作为可以在不同组件和子系统之间分发资源和能力的系统的一部分而被操作。

存储子系统1624可以包括存储在其上的指令,这些指令由逻辑子系统1622可执行以例如接收和解释来自传感器的输入,标识用户的位置和移动,使用表面重建和其他技术来标识真实对象以及基于到对象的距离来使显示器变暗/淡化以便使得用户能够看到对象,以及其他任务。

hmd设备1600被配置有一个或多个音频换能器1628(例如,扬声器、耳机等),从而使得音频可以被用作混合现实或虚拟现实体验的一部分。功率管理子系统1630可以包括一个或多个电池1632和/或保护电路模块(pcm)以及相关联的充电器接口1634和/或远程功率接口,以用于向hmd设备1600中的组件供应功率。

可以理解,hmd设备1600出于示例的目的而被描述,并且因此并不意味着限制。可以进一步理解,在不脱离本布置的范围的情况下,显示设备可以包括除了所示的之外的附加的和/或备选的传感器、相机、麦克风、输入设备、输出设备等。另外,在不脱离本布置的范围的情况下,hmd设备以及它的各种传感器和子组件的物理配置可以采用各种不同的形式。

现在通过说明而不是所有实施例的详尽列表来呈现在fota更新期间的本容错变量区域重新铺设的各种示例性实施例。示例包括一种用于更新设备上的固件的方法,其包括:在设备上暴露安全非易失性存储器存储库,安全非易失性存储器存储库包括主区域和备用区域,主区域和备用区域中的每个区域包括被配置为存储事务记录的工作存储库和被配置为存储变量记录的变量存储库;复制主区域中的变量记录并且将变量记录写入备用区域;擦除主区域内的工作存储库中的内容;擦除主区域中的变量记录;从在设备处被接收的固件更新有效载荷复制变量记录并且将复制的变量记录写入主区域中;以及擦除备用区域中的变量记录。

在另一示例中,变量记录表示uefi(统一可扩展固件接口)变量。在另一示例中,存储器存储库是以下之一:spi(串行外围接口)、闪存或emmc(嵌入式多媒体卡)存储器。在另一示例中,写入步骤中的每个写入步骤包括使用如由tianocore.org指定的事务记录的容错写入(ftw)协议。在另一示例中,该方法还包括:如果故障在工作存储库中的内容的擦除期间发生,则从备用区域复制变量记录,将复制的变量记录从备用区域写入主区域中,并且在后续设备引导之后重新启动固件更新。在另一示例中,该方法还包括:如果故障在主区域中的变量记录的擦除期间发生,则中止固件更新,并且在后续设备引导之后重新启动固件更新。在另一示例中,该方法还包括,如果故障在变量记录从固件更新有效载荷的复制期间或者在复制的变量记录向主区域的写入期间发生,则中止固件更新,并且在后续设备引导之后重新启动固件更新。在另一示例中,该方法还包括:如果故障在变量记录从固件更新有效载荷的复制之后或者在复制的变量记录向主区域的写入之后发生,则初始化主区域中的工作存储库并且恢复正常设备操作。在另一示例中,该方法还包括:如果故障在备用区域中的变量记录的擦除期间发生,则初始化主区域中的工作存储库并且恢复正常设备操作。在另一示例中,故障更新是在空中固件更新中被执行的最后的步骤。

另外的示例包括一种设备,其包括:一个或多个处理器;网络接口;以及存储计算机可读指令的一个或多个基于硬件的存储器设备,这些计算机可读指令在由一个或多个处理器执行时,使得设备:通过网络接口接收固件变量的固件更新有效载荷作为空中固件(fota)更新过程的一部分,使用非易失性存储器设备的安全备用区域来创建被包含在非易失性存储器设备的安全主区域中的固件变量的备份,将固件变量从有效载荷写入主区域中,如果故障在fota更新过程中发生,则使用固件变量的备份将设备设置为已知良好引导状态,并且如果来自有效载荷的固件变量被成功地写入主区域,则擦除备份。

在另一示例中,该设备还包括:在发生故障的情况下,使得设备在设备的后续引导之后重新启动fota更新过程。在另一示例中,使用容错写入(ftw)过程来写入固件变量,该过程使用被存储在被实现在非易失性存储器设备中的工作存储库中的事务记录。在另一示例中,固件变量描述配置设置、供应商数据、oem(原始设备制造商)数据、语言信息、输入/输出或错误处理接口或引导顺序中的一个或多个。在另一示例中,fota更新过程利用uefi(统一可扩展固件接口)中的更新驱动程序,并且固件变量是uefi变量,其中更新驱动程序被实现为uefidxe(驱动器执行环境)驱动程序。在另一示例中,该设备还包括使得设备暴露一个或多个开关以用于在fota更新过程中选择性地启用或禁用可变写入,其中开关包括与更新有效载荷中的固件的版本比较的设备上的当前安装的固件的版本,并且如果安装的固件版本比更新固件版本更旧,则启用fota更新过程中的变量写入。在另一示例中,该设备还包括使得设备在fota更新过程中在开始变量写入之前验证固件更新有效载荷,其中验证使用加密过程而被执行。在另一示例中,验证包括将变量记录的运行时计算的散列与被包含在从远程源接收的固件更新有效载荷中的变量记录的散列匹配,其中被包含在固件更新有效载荷中的变量记录的散列被存储在固件更新有效载荷中的安全引导清单中。

另外的示例包括存储计算机可执行指令的一种或多种基于硬件的计算机可读存储器设备,这些指令在由被布置在计算机服务器中的一个或多个处理器执行时,使得服务器:在固件更新有效载荷中并入uefi(统一可扩展固件接口)变量的白名单,uefi变量的白名单指定在远程设备的空中固件(fota)更新被完成之后被保持的设备状态;以及通过网络向远程设备传输固件更新有效载荷。

在另一示例中,远程设备使用固件更新有效载荷来重新铺设被包含在安全非易失性存储库中的uefi变量,其中uefi变量被备份到安全非易失性存储库中的备用区域以使得fota更新容错。

基于前述内容,应当领会到,本文中已经公开了用于在fota更新期间的容错变量区域重新铺设的技术。尽管已经用计算机结构特征、方法和变换动作、具体计算机器和计算机可读存储介质专用的语言描述了本文中呈现的主题,但是应当理解,所附权利要求中限定的本发明不一定限于本文中描述的具体特征、动作或介质。相反,具体特征、动作和介质被公开作为实现权利要求的示例形式。

上述主题仅以说明的方式而被提供,并且不应当被解释为限制。可以对本文中描述的主题进行各种修改和改变,而不遵循所示出和描述的示例实施例和应用,并且没有脱离在所附权利要求中阐述的本发明的真实精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1