设备功能和通信

设备功能确定服务-UART 通信的特定于设备的 OS 策略。 主机与附加设备之间的所有通信都通过服务 UART 进行。 主机与附加设备通信,以在设备上执行操作。 制造商、软件开发人员和现场服务技术人员使用功能解锁其所需操作的 service-UART 通信,同时确保设备免受恶意用户的侵害。

设备制造商和 OEM 可以锁定 service-UART 通信,以防止对设备具有物理访问权限的用户进行未经授权的使用。 锁定此类通信是 设备终结的一部分。 完成后,用户可以获取设备的 ID,但无法再获取;所有其他操作都需要设备功能。 在制造商将设备运送到客户站点之前,通常在工厂车间执行最终定点。

设备功能文件仅包含单个设备的零个或多个功能。 如果功能文件应用于非预期设备,则功能文件将不起作用。 设备可以具有以下功能,本主题稍后将介绍每项功能:

注意

设备功能与应用程序功能无关。 应用程序功能指定应用程序在运行时所需的资源。 有关 应用程序 功能的详细信息,请参阅应用程序清单。

如何确定设备功能或制造状态

若要确定附加设备上存储的功能配置,请使用 az sphere device capability show-attached 命令。 命令显示使用功能文件配置的功能,以及板上默认存在的部分(但不是全部)功能。

设备功能可能会受到设备的制造状态的影响。 若要确定设备的制造状态,请使用 az sphere device manufacturing-state show 命令。 如果命令显示设备处于 DeviceComplete 制造状态或返回 Device access is forbidden,则 service-UART 通信已锁定,你需要设备功能才能从计算机与设备通信。 当设备处于 DeviceComplete 制造状态时,仅当设备通过功能文件解锁时,才允许制造操作。

注意

如果在客户站点安装设备,则应确保设备在安装前已最终确定为 DeviceComplete 制造状态。 请参阅 完成 Azure Sphere 设备

DeviceComplete manufacuring 状态通常不适用于开发工具包。 若要测试制造工程师正在开发的制造操作,开发工具包应处于 空白 制造状态或 Module1Complete 制造状态。

设备如何获取功能

设备可以通过以下三种方式之一获取功能:

  • 默认打开。 处于 空白 制造状态或 Module1Complete 制造状态的设备默认打开某些功能。 这样做是为了使仍处于制造阶段的设备无需连接到云或声明到目录中,因为使用设备功能文件解锁功能的过程需要这样做。 随着制造进度,制造商可以更改设备的制造状态,以锁定不再合适的功能,如 工厂车间任务中所述。

  • 旁加载到设备上。 设备可能有一个功能文件从主计算机旁加载到设备上。 使用 az sphere device capability download 命令检索功能文件。 此旁加载功能集一直持续到一个新的功能文件 (该文件可能是一个空白文件,没有旁加载) 的功能。 这是应用程序开发过程中的常见情况,例如,运行 az sphere device enable-development 命令时。 通过使设备处于解锁状态来帮助应用程序开发,开发人员可以在其中执行调试等操作,并轻松删除和部署应用程序的旁加载版本。

  • 通过每个操作传递给设备。 设备可以基于每个操作应用本地选择的功能。 az sphere device capability apply 命令选择本地存储在主计算机上的功能文件。 运行此命令后,所选功能将通过每个后续命令从计算机传递到设备。 这是为字段中的设备使用功能的建议方法,因为这些功能存储在计算机而不是设备上。 避免现场工程师因忘记删除功能而意外使设备处于不安全状态的风险。

必须先从 Azure Sphere 安全服务 (AS3) 下载功能文件,然后才能将功能文件旁加载到设备上或通过操作传递给设备,如 在制造后对设备进行更改中所述。 下载的功能文件特定于设备;下载后,可以在关联的设备上重复使用功能文件。

enableRfTestMode 功能

当设备的制造状态为空白时,默认情况下,设备上存在 enableRfTestMode 功能。 此功能可实现电子保险丝的编程以及 RF 操作的配置和测试。 目录所有者无法将此功能下载到主计算机。 如果需要此功能,请联系 Microsoft 代表。

当设备的制造状态为 Blank 时, az sphere device capability show-attached 命令将显示 enableRfTestMode 功能。

appDevelopment 功能

appDevelopment 设备功能可解锁 service-UART 通信,并更改设备信任的签名类型。 它用于在应用程序开发期间使用。

默认情况下,Azure Sphere 设备信任由 Azure Sphere 安全服务下载的生产签名映像包,但不信任 SDK 签名的映像包。 因此,除非设备具有 appDevelopment 功能,否则无法使用 SDK 创建映像包并将其旁加载到 Azure Sphere 设备上进行调试。 appDevelopment 功能使设备信任映像包,并使你能够启动、停止、调试或删除设备中的应用程序。

总之, appDevelopment 功能解锁 service-UART 通信以允许以下操作:

若要添加 appDevelopment 功能,请使用 az sphere device enable-development 命令。 此命令下载附加设备的 appDevelopment 功能,将该功能旁加载到设备上,并将设备移动到默认 开发设备组。 若要指定其他设备组,请包括 --device-group 参数。

使用 az sphere device enable-development 时,设备将保持解锁状态,直到你显式锁定它。 若要重新锁定设备,请使用 az sphere device enable-cloud-test 命令。 此命令会删除功能并更改设备组,具体取决于提供的命令行参数。

az sphere device enable-developmentaz sphere device enable-cloud-test 命令分别执行一系列操作,为开发和调试或云部署准备设备。 可以使用 az sphere device capability 命令下载或更新设备功能,或者查找设备当前具有的功能,而不是使用这些命令。

fieldServicing 功能

当设备的制造状态为 BlankModule1Complete 时,默认情况下,设备上会显示 fieldServicing 功能。 当设备处于 DeviceComplete 制造状态时, fieldServicing 功能可以旁加载,但通常会在维护会话期间通过每个操作传递给设备。 有关如何启动维护会话的详细信息,请参阅 在制造后对设备进行更改

无论设备的制造状态如何, fieldServicing 功能都会解锁 service-UART 通信,以允许以下操作:

  • 旁加载生产签名的映像包。
  • 启动、停止和删除标记为临时的生产签名映像包。
  • 执行日常维护任务,例如配置 Wi-Fi。

尽管当设备的制造状态为 BlankModule1Complete 时,设备上默认存在 fieldServicing 功能,但 az sphere device capability show-attached 命令不显示 fieldServicing 功能。

依赖于最新的受信任密钥存储

AS3 创建功能文件时,将使用当前映像签名密钥对其进行签名。 每个设备都有一个受信任的密钥存储,作为保留这些密钥的 OS 的一部分。 但是,如果设备未连接到 Internet,则如果该设备的受信任密钥存储已过期,则它所面向的设备可能会不信任该功能。

若要解决此问题,一种方法是允许设备连接到 Internet,以便更新受信任的密钥存储。 将设备连接到 Internet 并“重置” 以触发 OS 更新。

如果无法执行此操作,则可以旁加载更新的受信任密钥存储。 为此,请接受 许可条款 ,然后 下载最新的 OS 恢复映像,并从此 zip 文件仅提取“trusted-keystore.bin”文件。 然后,可以使用 命令 az sphere device sideload deploy --image-package <path-to-trustedkeystore.bin-file> 旁加载受信任的密钥存储,现在设备应该信任该功能。

第三种方法是 恢复系统软件 ,以将 Azure Sphere OS 更新到最新发布版本,包括最新的受信任密钥存储。