设备功能和通信
重要
这是 Azure Sphere(旧版)文档。 Azure Sphere(旧版)将于 2027 年 9 月 27 日停用,用户此时必须迁移到 Azure Sphere(集成)。 使用位于 TOC 上方的版本选择器查看 Azure Sphere(集成)文档。
设备功能确定服务 UART 通信的设备特定的 OS 策略。 主计算机与附加设备之间的所有通信都通过服务 UART。 主计算机与附加设备通信,以在设备上执行操作。 制造商、软件开发人员和现场服务技术人员使用功能解锁服务 UART 通信所需的操作,同时确保设备免受恶意用户的侵害。
设备制造商和 OEM 可以锁定服务 UART 通信,以防止对设备具有物理访问权限的用户未经授权使用。 锁定此类通信是设备最终完成的一部分。 定型后,用户可以获取设备的 ID,但不能获取其他任何信息;所有其他操作都需要设备功能。 在制造商将设备运送到客户站点之前,通常在工厂车间执行最终化。
设备功能文件仅包含单个设备的零个或多个功能。 如果应用于不是其预期设备的设备,则功能文件将不起作用。 设备可以具有以下功能,本主题稍后将介绍每个功能:
注意
设备功能与应用程序功能无关。 应用程序功能指定应用程序在运行时所需的资源。 有关应用程序功能的详细信息,请参阅应用程序清单。
如何确定设备功能或制造状态
若要确定存储在附加设备上的功能配置,请使用 azsphere device capability show-attached 命令。 该命令显示通过使用功能文件配置的功能,以及默认情况下在开发板上存在的一些功能,但并非所有功能。 有关需要设备功能的 azsphere 命令的完整列表,请参阅 CLI 概述中的表。
设备功能可能会受到设备的制造状态的影响。 若要确定设备的制造状态,请使用 azsphere device manufacturing-state show 命令。 如果命令显示设备处于 DeviceComplete 制造状态或返回 Device access is forbidden
状态,则 service-UART 通信已锁定,并且需要设备功能才能从计算机与设备通信。 当设备处于 DeviceComplete 制造状态时,仅当设备通过功能文件解锁时,才允许制造操作。
注意
如果在客户站点安装设备,则应确保在安装之前将设备完成到 DeviceComplete 制造状态。 请参阅 “完成 Azure Sphere 设备”。
DeviceComplete manufacuring 状态通常不适合开发工具包。 若要允许测试制造工程师正在开发的制造操作,开发工具包应处于 空白 制造状态或 Module1Complete 制造状态。
设备如何获取功能
设备可以通过以下三种方式之一获取功能:
默认打开。 处于空白制造状态或 Module1Complete 制造状态的设备默认打开某些功能。 这样做是为了使仍处于制造阶段的设备不需要连接到云或声明到租户中,因为使用设备功能文件解锁功能的过程需要这样做。 随着制造进度,制造商可以更改设备的制造状态,以锁定不再合适的功能,如工厂车间任务中所述。
旁加载到设备上。 设备可能具有从主计算机旁加载到设备的功能文件。 使用 azsphere device capability download 命令检索功能文件。 此旁加载的功能集将一直保留,直到旁加载新功能文件(可能是没有功能的空白文件)。 这是应用程序开发期间通常的情况,例如, 运行 azsphere device enable-development 命令。 通过使设备处于解锁状态,开发人员可以执行调试和轻松删除和部署旁加载版本的应用程序等操作,从而帮助应用程序开发。
通过每个操作传递到设备。 设备可以按操作应用本地选择的功能。 azsphere device capability select 命令选择本地存储在主计算机上的功能文件。 运行此命令后,所选功能将通过每个后续命令从计算机传递到设备。 这是对字段中的设备使用功能的建议方法,因为这些功能存储在计算机而不是设备上。 避免了现场工程师忘记删除该功能而意外使设备处于不安全状态的风险。
在将功能文件旁加载到设备或通过操作传递到设备之前,必须从 Azure Sphere 安全服务(AS3)下载它,如制造后对设备进行更改中所述。 下载的功能文件特定于设备;下载后,可以在关联的设备上重复使用功能文件。
enableRfTestMode 功能
当设备的制造状态为空白时,设备上默认存在 enableRfTestMode 功能。 此功能允许对电子熔丝进行编程,以及 RF 操作的配置和测试。 租户所有者无法将此功能下载到主计算机。 如果需要此功能,请联系Microsoft代表。
当设备的制造状态为 Blank 时, azsphere device capability show-attached 命令将显示 enableRfTestMode 功能。
appDevelopment 功能
appDevelopment 设备功能解锁 service-UART 通信,并更改设备信任的签名类型。 它通常用于应用程序开发阶段。
默认情况下,Azure Sphere 设备信任生产签名的映像包(由 Azure Sphere 安全服务下载),但不信任 SDK 签名的映像包。 因此不能使用 SDK 创建映像包并将其旁加载到 Azure Sphere 设备进行调试,除非该设备具有 appDevelopment 功能。 appDevelopment 功能会让设备信任映像包,并能从设备启动、停止、调试或删除应用程序。
总之, appDevelopment 功能解锁 service-UART 通信以允许以下操作:
旁加载使用 Visual Studio、Visual Studio Code、CLI 或 azsphere image-package 命令生成的映像包 。
从 Azure Sphere 设备启动、停止、调试或删除映像包(无论映像包采用哪种签名方式)。
若要添加 appDevelopment 功能,请使用 azsphere device enable-development 命令。 此命令将附加设备的 appDevelopment 功能下载到设备上,旁加载该功能,并将设备移动到默认开发设备组。 若要指定其他设备组,请包含 --device-group
参数。
在使用 azsphere device enable-development 时,设备将保持解锁状态,直到被显式锁定。 若要重新锁定设备,请使用 azsphere device enable-cloud-test 命令。 此命令将删除功能并更改设备组,具体取决于提供的命令行参数。
azsphere device enable-development 和 azsphere device enable-cloud-test 命令执行一系列操作,分别准备用于开发和调试的设备或云部署。 可以使用 azsphere device capability 命令下载或更新设备功能,或者找出设备当前具有的功能,而不是使用这些命令。
fieldServicing 功能
默认情况下,当设备具有空白或 Module1Complete 的制造状态时,设备上会显示 fieldServicing 功能。 当设备处于 DeviceComplete 制造状态时, 可以旁加载 fieldServicing 功能,但通常在维护会话期间通过每个操作传递到设备。 有关如何启动服务会话的详细信息,请参阅 制造后对设备进行更改。
无论设备的制造状态如何, fieldServicing 功能都会解锁 service-UART 通信以允许以下操作:
- 旁加载生产签名的映像包。
- 启动、停止和删除标记为临时的生产签名映像包。
- 执行常规维护任务,例如配置 Wi-Fi。
尽管当设备的制造状态为 Blank 或 Module1Complete 时,设备上默认存在 fieldServicing 功能,但 azsphere device capability show-attached 命令不显示 fieldServicing 功能。
依赖于最新的受信任密钥存储
AS3 创建功能文件时,将使用当前映像签名密钥对其进行签名。 每个设备都有一个受信任的密钥存储,作为保留这些密钥的 OS 的一部分。 但是,如果设备未连接到 Internet,则设备可能不信任该设备,如果该设备的受信任密钥存储已过期,则其目标。
若要解决此问题,一种方法是允许设备连接到 Internet,以便更新受信任的密钥存储。 将设备连接到 Internet ,然后按 Reset 触发 OS 更新。
如果无法执行此操作,则可以旁加载更新的受信任密钥存储。 为此,请接受 许可条款 ,然后 下载最新的 OS 恢复映像,然后从此 zip 文件仅提取“trusted-keystore.bin”文件。 然后,可以使用命令 azsphere device sideload deploy --image-package <path-to-trustedkeystore.bin-file> 旁加载受信任的密钥存储,并且该功能现在应由设备信任。
第三种方法是 恢复系统软件 ,将 Azure Sphere OS 更新到最新版本,包括最新的受信任密钥存储。