工厂车间任务

制造包含 Azure Sphere 硬件的连接设备涉及以下工厂车间任务,以准备设备交付:

  • 将每个 Azure Sphere 芯片连接到工厂车间电脑
  • 获取设备详细信息并记录它们以供以后使用
  • 根据需要更新 Azure Sphere OS
  • 如有必要,请更新受信任的密钥存储
  • 将软件加载到设备上
  • 运行功能测试以验证产品的正确操作
  • 执行射频 (RF) 测试和校准
  • 验证 Wi-Fi 通信
  • 为以太网配置设备
  • 完成要交付的 Azure Sphere 设备

必须先将芯片连接到电脑,第二次获取设备详细信息,最后完成设备,但可以按照适合制造环境的任何顺序执行其他任务。

重要

你应该做一些准备,以帮助确保工厂车间任务可以无延迟地完成。 准备工作包括设置工厂车间电脑和任何其他必要的设备,以及安装必要的电脑软件工具。 制造过程 准备中介绍了为顺利完成制造过程而应执行的所有任务。

将每个 Azure Sphere 芯片连接到工厂车间电脑

在制造过程中,必须将每个 Azure Sphere 芯片连接到工厂车间电脑。 如果要同时将多个 Azure Sphere 设备连接到一台电脑,请参阅制造准备任务中的 工厂车间任务 设备。

大多数工厂车间任务都涉及 az sphere device 命令。 当有多个设备附加到电脑时,必须指定应用 az sphere device 命令的设备,方法是将 --device 参数设置为设备的 IP 地址 或设备的 连接路径。 如果省略参数并附加了多个设备, --device 则命令将失败。 若要获取 IP 地址或连接路径,请参阅 获取设备详细信息

重要

Azure Sphere SDK 仅支持通过 Windows 与多个附加设备通信。 如果使用 Linux,则仅支持与单个附加设备通信。 但是,可以使用多个 Linux 虚拟机 (VM) ,每个虚拟机都有一个映射到它的单个 USB 端口,使一台电脑具有多个 Linux 实例,这些实例同时与多个 Azure Sphere 设备通信。

获取设备详细信息

必须记录公司整合到制造产品中的每个 Azure Sphere 芯片的设备 ID。 云配置任务需要设备 ID。

如果有多个设备连接到工厂车间电脑,则还必须记录附加设备的 IP 地址或连接路径,以便以后在工厂车间任务中使用。 如 连接每个 Azure Sphere 芯片中所述,当有多个附加设备时,需要 IP 地址或连接路径来指定目标设备。

若要获取附加设备的设备 ID、IP 地址和连接路径,请使用 az sphere device list-attached 命令。 以下说明提供有关设备 ID、IP 地址和连接路径的基本详细信息。

  • 设备 ID - 芯片制造商创建设备 ID,将其存储在芯片上,并将其注册到 Microsoft。 此设备注册可确保 Microsoft 了解所有 Azure Sphere 芯片,并且只有合法芯片才能在连接的设备中使用。

  • IP 地址 — 当基于 FTDI 的设备接口附加到电脑时分配 IP 地址;它不指示存在响应式设备。 当基于 FTDI 的设备接口连接到电脑时,即使将其他 Azure Sphere 设备插入该接口,IP 地址也会保留。 但是,在电脑重新启动后,IP 地址可能会更改。 要附加的第一个基于 FTDI 的设备接口的地址为 192.168.35.2 分配。 为每个设备分配了一个 IP 地址(即使无响应),因此你可以使用 IP 地址来标识需要恢复的设备。

  • 连接路径 - 连接路径是标识 USB 连接的 FTDI 位置 ID 。 当基于 FTDI 的设备接口连接到同一 USB 集线器上的同一 USB 端口,然后连接到电脑上的同一端口时,位置 ID 会保留。 因此,它在重新启动后会持续存在。 但是,电脑和设备之间的任何连接更改都可能导致连接路径发生更改。 与 IP 地址一样,即使将其他 Azure Sphere 设备插入 FTDI 接口,它也不会更改。

更新 Azure Sphere OS

从芯片制造商发货时,每个 Azure Sphere 芯片都加载了 Azure Sphere OS。 根据供应商提供的芯片上的 Azure Sphere OS 版本,以及应用程序的 OS 版本要求,可能需要在连接设备的制造过程中更新 Azure Sphere OS。 你可以通过安装特定的恢复映像来更新 OS,这些映像应已存在于你的电脑上。 请参阅在制造准备任务中 准备操作系统的更新制造示例包括执行并行多设备恢复的示例脚本。

可以通过发出 az sphere device recover 命令来更新 Azure Sphere 设备上的 OS。 --images使用 参数安装特定的恢复映像:

az sphere device recover --images <path-to-images> [--device <IP-address or connection-path>]

注意

如果多个设备已连接到电脑,请包含 --device 参数以按 IP 地址或连接路径标识目标设备。 有关详细信息 ,请参阅将每个 Azure Sphere 芯片连接到工厂电脑

更新受信任的密钥存储

作为将软件加载到设备上的先决条件, 可能需要 更新设备上的受信任密钥存储。 仅当设备上的操作系统早于软件时,并且仅当 AS3 使用的 Azure Sphere 映像签名密钥在发布的操作系统与正在生产签名的软件之间更新时,才需要这样做。 若要避免此步骤并减少制造时间,请考虑更新在制造期间使用的 OS 版本。

通过尝试根据下一部分中的说明加载软件,可以轻松确定是否需要更新受信任的密钥存储。 如果加载成功,则无需更新受信任的密钥存储。 如果加载失败并显示开头的消息, Internal device error: Image not trusted by device 则原因就是过期的受信任密钥存储。

若要更新受信任的密钥存储,需要 获取最新的受信任密钥存储文件。 然后,作为制造脚本的一部分,在加载应用程序软件之前,使用 az sphere device sideload deploy 命令加载更新的受信任密钥存储,并将 <path-to-trusted-keystore.bin> 替换为受信任密钥存储文件的路径:

az sphere device sideload deploy --image-package <path-to-trusted-keystore.bin> [--device <IP-address or connection-path>]

加载设备软件

加载的所有软件(无论它是板配置映像、测试应用程序还是生产应用程序)都必须经过生产签名。 如果加载临时应用程序进行测试,则必须在测试完成后将其删除。

在开始流程之前,应将工厂车间过程中所需的所有生产签名映像保存在工厂车间电脑上,如在制造准备任务中 获取生产签名映像 中所述。

具有工具的电脑界面

在制造过程中,Azure Sphere 设备不得要求任何特殊的 设备功能,例如启用调试的 appdevelopment 功能。 为单个设备获取功能会降低设备安全性,并需要 Internet 连接,这在工厂车间通常是不需要的。

若要将软件加载到工厂中的设备上或在测试完成后从设备中删除临时软件,请使用 az sphere device sideload 命令,如下所示:

  • 使用 az sphere device sideload deploy 加载映像,将 <file-path> 替换为生产签名映像文件的名称和路径:

    az sphere device sideload deploy --image-package <file-path> [--device <IP-address or connection-path>]
    
  • 使用 az sphere device sideload delete 删除临时映像,将 <component-id> 替换为要删除的映像的组件 ID:

    az sphere device sideload delete --component-id <component-id> [--device <IP-address or connection-path>]
    

注意

如果多个设备已连接到电脑,请包含 --device 参数以按 IP 地址或连接路径标识目标设备。 有关详细信息 ,请参阅将每个 Azure Sphere 芯片连接到工厂电脑

运行功能测试

需要进行功能测试才能验证产品是否正常运行。 在制造准备任务中运行为功能测试而开发的应用程序。 请参阅 开发用于功能测试的应用程序

如果功能测试需要与正在测试的芯片通信,请通过自己设计的合适电路将 MT3620 外围 UART (ISU0、ISU1、ISU2 或 ISU3) 连接到工厂车间电脑或外部测试设备。

功能测试流

执行射频 (RF) 测试和校准

Azure Sphere 芯片可以使用 Wi-Fi 来接收软件更新并与 Internet 通信。 如果你的产品使用 Wi-Fi 并且它采用了芯片化设计或 经过 RF 认证的模块,则必须对每台设备执行 RF 测试和校准。 在制造准备任务中 用于 RF 测试和校准的设备和软件 中介绍了此任务所需的设备和工具。

RF 工具包包括实用工具和 C API 库,供测试期间使用。 可以使用 C API 库在电子保险丝中对特定于产品的 RF 设置进行编程。 例如,电子保险丝被编程为配置天线和频率、优化设备以获得最佳性能以及启用 Wi-Fi 通道。 RF 测试工具主题介绍如何使用 RF 工具。

编程电子保险丝以启用 Wi-Fi 通道

Azure Sphere OS 根据在偏移地址0x36和0x37编程到 MT3620 电子保险丝的区域代码选择 Wi-Fi 通道。 有关 MT3620 上的电子保险丝的详细信息,请参阅 MT3620 电子保险丝内容指南 Mediatek 文档。

区域代码是一个双字母 ASCII 代码。 Azure Sphere OS 使用 e-fuses 中的区域代码设置在 Linux 无线法规数据库中 查找该区域,然后选择该区域允许的通道。 如果没有将区域代码编程到电子保险丝中,在这种情况下,电子保险丝仍设置为0x00 0x00,或者如果对字符“00”进行了编程,则 OS 默认使用所有区域通常允许的一组保守通道。 Linux 无线监管数据库中指定了区域“00”允许的通道。

电子保险丝中的区域代码设置不需要与设备使用的国家/地区匹配。 制造商可以选择映射到操作区域允许的一组通道的任何区域代码。 不同的区域和国家/地区通常采用类似或相同的法规,允许互换使用区域代码。

例子: 若要指示 Azure Sphere OS 为德国) (区域“DE”选择 Wi-Fi 通道,请将 0x44=D 和 0x45=E 编程到地址0x36和0x37。 从 Linux 无线监管数据库摘录的德国允许的通道如下所示。 欧盟的大多数国家/地区 (欧盟) 允许同一组通道。

country DE: DFS-ETSI
        (2400 - 2483.5 @ 40), (100 mW)
        (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
        (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
        (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
        # short range devices (ETSI EN 300 440-1)
        (5725 - 5875 @ 80), (25 mW)
        # 60 GHz band channels 1-4 (ETSI EN 302 567)
        (57000 - 66000 @ 2160), (40)

验证 RF 配置

使用 RfSettingsTool 验证目标传输电源、区域代码和 Wi-Fi 媒体访问控制 (MAC) 地址等无线电配置选项是否已正确设置。 RF 设置工具文档提供了有关使用此工具的详细信息。

验证 Wi-Fi 通信

请考虑连接到 Wi-Fi 接入点,以验证产品应用程序是否能够通过 Wi-Fi 进行通信。 确保 Wi-Fi 连接无法访问 Internet,因为如果芯片连接到启用了 Internet 的接入点,则可能会进行无线更新。

若要将设备连接到 Wi-Fi 接入点,请按照 快速入门 (CLI 选项卡中的说明) 。 如果多个设备已连接到电脑,则必须在 az sphere device wifi show-status 命令和 az sphere device wifi add 命令中包含 --device 参数。 有关将 az sphere device 命令用于多个附加设备的详细信息,请参阅 将每个 Azure Sphere 芯片连接到工厂车间电脑

Wi-Fi 测试后,应从芯片中删除用于测试的任何 Wi-Fi 接入点,以便客户看不到这些接入点。 设备恢复会从芯片中删除所有 Wi-Fi 配置数据。

为以太网配置设备

Azure Sphere 设备可以通过以太网进行通信。 设备需要外部以太网适配器和板配置映像,以便通过以太网进行通信。

若要为以太网配置 Azure Sphere 设备,请将以太网适配器连接到 Azure Sphere 设备,如 连接以太网适配器中所述。

Azure Sphere 操作系统支持两个以太网设备。

  1. Microchip ENC28J60。 这是一个 10Base-T (10mbps) 适配器。 它可以以半双工速度连接 LED 指示灯,也可以不使用全双工速度的 LED 指示器。 看到的开发工具包是用于半双工操作的有线。
  2. Wiznet W5500。 这是一个 100Base-TX (100mpbs) 适配器。 它支持集成的 TCP/IP 堆栈和 NIC 直通模式,但在使用 W5500 进行 Internet 连接时,Azure Sphere 仅支持 NIC 直通。 由于总线带宽限制,MT3620 设备可能无法实现完全 100mbps 的速度。

加载板配置后,将自动启用以太网接口,如 加载设备软件中所述,并重新启动设备。 默认情况下,所有接口都使用动态 IP 地址。

完成 Azure Sphere 设备

最终确定可确保 Azure Sphere 设备处于安全状态,并且已准备好交付给客户。 在交付设备之前,必须完成设备。 最终完成涉及:

  • 运行随时可交付的检查,以确保安装正确的系统软件和生产应用程序并禁用 RF 工具。

  • 设置设备制造状态以锁定 RF 配置和校准工具并防止安全漏洞。

运行随时发货的检查

在交付包含 Azure Sphere 设备的产品之前,请务必运行随时发货的检查。 必须对不同的生产状态执行不同的检查。 随时发货的检查可确保以下各项:

  • 为该生产阶段正确设置设备制造状态。
  • 设备上的 Azure Sphere OS 有效且版本为预期版本。 只能检查尚未处于 DeviceComplete 状态的设备。
  • 设备上用户提供的图像与预期图像列表匹配。 只能检查尚未处于 DeviceComplete 状态的设备。
  • 设备上未配置意外 Wi-Fi 网络。 只能检查尚未处于 DeviceComplete 状态的设备。
  • 设备不包含任何特殊功能证书。 对于基于 MT3620 的设备,只能在不处于“空白”状态的设备上进行检查。

在制造的不同阶段需要进行不同的检查,因为设备的制造状态决定了设备 的功能

运行哪些检查还取决于你正在设计模块还是连接的设备。 例如,作为模块制造商,你可以选择将芯片保留为空白制造状态,以便模块的客户可以执行其他无线电测试和配置。

使用 device_ready.py 执行检查

制造示例包包含一个名为 device_ready.py 的工具,该工具根据每个生产状态执行上述检查。 它应针对与设备相关的每个生产状态运行。

下表列出了 device_ready.py 脚本采用的参数:

参数 描述
--expected_mfg_state 确定要检查的制造状态,并控制运行哪些测试。 如果未指定此参数,则默认为“DeviceComplete”。 如果设备的制造状态与此值不同,则检查失败。
--images 指定设备上必须存在的映像 ID (GUID) 的列表,以便检查成功。 该列表由用空格分隔的图像 GUID 组成。 如果未指定,此参数默认为空列表。 如果设备上已安装的映像 ID 列表与此列表不同,则检查失败。 通过检查映像 ID (而不是组件 ID) 此检查可确保存在组件的特定版本。
--os 指定 Azure Sphere OS 的版本列表。 如果未提供,此参数默认为空列表。 如果设备上存在的 OS 版本不在此列表中,则此检查失败。
--os_components_json_file 指定 JSON 文件的路径,该文件列出了定义每个操作系统版本的 OS 组件。 对于基于 MT3620 的设备,此文件名为 mt3620an.json。 使用 download_os_list.py 该工具下载最新版本。
--azsphere_path 指定 azsphere.exe 实用工具的路径。 如果未指定,此参数默认为 Windows 上的 Azure Sphere SDK 的默认安装位置。 仅当默认位置未安装 Azure Sphere SDK 时,才使用此参数。
--help 显示命令行帮助。
--verbose 提供其他输出详细信息。

以下示例是具有以下参数的工具 device_ready.py 示例运行:

  • --os 22.07
  • --os_components_json_file mt3620an.json
  • --expected_mfg_state Module1Complete
device_ready.py --os 22.07 --os_components_json_file mt3620an.json --expected_mfg_state Module1Complete
Checking device is in manufacturing state Module1Complete...
PASS: Device manufacturing state is Module1Complete
Checking capabilities...
PASS: No capabilities on device
Checking OS version...
PASS: OS '22.07' is an expected version
Checking installed images...
PASS: Installed images matches expected images
Checking wifi networks...
PASS: Device has no wifi networks configured
------------------
PASS

设置设备制造状态

包含 Azure Sphere 芯片的设备最终用户不应访问敏感制造操作,例如将无线电置于测试模式和设置 Wi-Fi 配置电子保险丝。 Azure Sphere 设备的 制造状态 限制对这些敏感操作的访问。

这三种制造状态如下所示:

  • 空白空白状态不会限制芯片上的制造操作。 处于 空白 状态的芯片可以进入 RF 测试模式,并且其电子保险丝可以编程。 芯片从硅工厂发货时,它们处于 空白 制造状态。

  • Module1CompleteModule1Complete 制造状态旨在限制用户可以对无线电配置设置进行的调整,例如最大传输功率水平和允许的频率。 在设置 Module1Complete 之前,可以使用 RF 命令。 可能需要限制最终用户访问这些设置,才能满足无线电硬件的监管策略。 此设置主要影响需要测试和校准无线电操作参数的制造商。

    Microsoft 建议在无线电测试和校准完成后设置此制造状态;RF 命令在设置后不能使用。 Module1Complete 状态可保护设备免受可能中断附近无线电和其他无线设备正常运行的更改。

  • DeviceCompleteDeviceComplete 制造状态允许成品制造商保护现场部署的设备免受更改。 将设备置于 DeviceComplete 状态后,在执行任何软件加载和配置任务时,必须使用特定于设备的功能文件。 利用 fieldservicing 功能,可以旁加载生产签名的映像,但不能删除它们。 appdevelopment 功能允许旁加载和删除图像。

    不要为未完成的设备或模块设置 DeviceComplete , (Wi-Fi 模块、开发板等) 可用作较大系统的一部分;此状态限制生产活动,例如生产线测试、软件安装和配置。 许多 CLI 命令在设置 DeviceComplete 后不可用,因此必须在设置此状态之前运行某些现成的检查。 受限命令可以使用 设备功能 (例如 fieldservicing 功能)重新启用,但仅适用于已声明的设备,因此,这不适合在工厂车间环境中使用,因为它需要云连接。

下表汇总了每种制造状态存在的设备功能。

制造状态 设备功能
空白 enableRfTestModefieldServicing 以及旁加载或通过操作传递的那些,如 设备功能中所述。
Module1Complete fieldServicing 以及旁加载或通过操作传递的那些,如 设备功能中所述。
DeviceComplete 仅那些旁加载或通过操作传递的那些,如 设备功能中所述。

制造完成后,使用 az sphere device manufacturing-state update 命令设置 DeviceComplete 状态:

az sphere device manufacturing-state update --state <desired-state> [--device <IP-address or connection-path>]

注意

如果多个设备已连接到电脑,请包含 --device 参数以按 IP 地址或连接路径标识目标设备。 有关详细信息 ,请参阅将每个 Azure Sphere 芯片连接到工厂电脑

重要

将芯片移动到 DeviceComplete 状态是永久性操作,无法撤消。 芯片一旦处于 DeviceComplete 状态,就不能进入 RF 测试模式:其电子保险丝设置无法调整;和 Wi-Fi 设置、操作系统更新和已安装的应用程序,如果不声明设备并使用设备功能,则无法更改。 如果需要在设备功能未重新启用的单个芯片上重新启用功能(例如在故障分析方案中),请联系 Microsoft。