准备用于以太网的 Azure Sphere

若要通过以太网进行通信,Azure Sphere 设备需要外部以太网适配器和板配置映像。 若要准备设备通过以太网进行网络,需要执行以下步骤:

  1. 将适配器连接到设备

  2. 创建和部署板配置映像

  3. 启用以太网接口

谨慎

如果设备通过以太网连接,则需要低流量网络来防止数据丢失或性能不佳。 当网络上存在大量传入流量时,设备将从传入的非 TCP 数据包中丢失数据。 无论流量大小如何,传入的 TCP 数据包通常都不会丢失数据,因为 TCP 将重新传输丢弃的数据包。 但是,重新传输以性能为代价。

将适配器连接到设备

有关支持的以太网适配器的列表和说明,请参阅 支持的以太网适配器板和模块 ,以及有关如何将它们连接到 Azure Sphere 开发板的说明。

创建和部署板配置映像

用于 Azure Sphere 的每个以太网适配器都需要 一个板配置映像 。 板配置映像包含 Azure Sphere 安全服务向 Azure Sphere OS 添加对以太网的支持所需的信息。 必须为以太网适配器创建 板配置映像包 ,并将其与应用程序映像包一起部署。 可以 旁加载开发与调试的板配置映像包 。 还可以 从云以及 Azure Sphere 应用程序部署板配置映像包,以供现场使用。 开发板配置不计入 为高级应用保留的闪存或 RAM。

创建开发板配置映像包

若要创建板配置映像包,请使用 azsphere image-package pack-board-config CLI 命令。

注意

Azure CLI 扩展当前不支持 pack-board-config。

旁加载板配置映像包

若要在开发和调试期间使用板配置映像包,请执行以下操作:

  1. 准备设备进行开发和调试:

    az sphere device enable-development --resource-group MyResourceGroup --catalog MyCatalog --device <DeviceIdValue>
    
  2. 使用 az sphere device sideload delete 命令从设备中删除任何现有应用程序。 请务必在加载板配置映像包之前删除现有应用程序,以避免现有应用程序和板配置之间的资源冲突。

  3. 旁加载板配置映像包。 如果在上一部分中创建了自定义板配置文件,现在可以旁加载该文件。 预设选项包括:

    已查看适用于 Microchip ENC28J60 NIC 的 MT3620 以太网防护:

    az sphere device sideload deploy --image-package lan-enc28j60-isu0-int5.imagepackage
    

    适用于 Wiznet W5500 NIC 的 Avnet Rev1 开发工具包单击模块:

    az sphere device sideload deploy --image-package lan-w5500-isu1-int2.imagepackage
    

    Avnet Rev2 Devkit Click Module for Wiznet W5500 NIC:

    az sphere device sideload deploy --image-package lan-w5500-isu0-int5.imagepackage
    
  4. 使用 Visual Studio 或 az sphere device sideload deploy 命令旁加载应用程序。

云部署板配置映像包

若要通过云部署板配置映像包,设备必须具有产品、属于设备组,并且不得安装 AppDevelopment 功能。 请参阅 创建部署 ,了解如何设置这些部署。

设备准备就绪后,可以在单个部署中部署板配置映像以及应用程序映像。

若要创建部署,请执行以下操作:

  1. 使用 az sphere image add 将映像包上传到 Azure Sphere 目录
  2. 使用 az sphere deployment create 为上传的图像的设备组创建新部署。
az sphere deployment create --resource-group <resource-group-name> --catalog <catalog-name> --product <product-name> --device-group <device-group-name> --images <image-ID>

将 image-ID> 替换为<映像包的映像 ID。

删除旁加载的板配置

如果在开发期间旁加载开发板配置,以后可能需要删除该配置,以便其他应用程序可以使用开发板保留的资源。 如果在 Azure Sphere 设备上加载板配置时尝试运行使用这些资源的应用程序,将发生引脚冲突错误。

若要删除开发板配置,请执行以下步骤:

  1. 列出设备上安装的映像:

    az sphere device image list-installed
    
  2. 在列表中查找开发板配置的组件 ID:

     {
     "does_image_type_require_restart": true,
     "image_type": "Board configuration",
     "images": [
       {
         "length_in_bytes": 428,
         "replica_type": 0,
         "uid": "839e699a-1b23-44de-bc56-f2b19e472098",
         "uncompressed_length_in_bytes": 428
       }
     ],
     "is_update_staged": false,
     "name": "lan-enc28j60-isu0-int5_29f10d",
     "uid": "29f10d1e-29aa-4ae0-a48c-cc24305b288a"
     }
    

    组件 ID 是与开发板配置关联的 uid,因此例如,在上面的输出中,它将启动“29f10...”。

  3. 通过指定其组件 ID 删除开发板配置映像包:

    az sphere device sideload delete --component-id 29f10d1e-29aa-4ae0-a48c-cc24305b288a
    
  4. 通过按“重置”按钮或发出 az sphere device restart 命令来重启设备

启用以太网接口

加载板配置并重新启动设备后,将自动启用接口。 若要禁用接口,请使用 az sphere device network disable 命令或调用 Networking_SetInterfaceState 函数,该函数是网络配置 API 的一部分。

默认情况下,所有接口都使用动态 IP 地址。 有关 Azure Sphere 应用程序可以使用的服务类型的详细信息,请参阅 使用网络 服务。

配置用于以太网的 Azure Sphere

将 Azure Sphere 设备连接到受支持的以太网适配器并部署板配置映像后,可以将 Azure Sphere 设备配置为从命令行 (CLI) 或使用 Azure Sphere SDK 应用程序库 (Applibs) 从应用程序连接到网络。

使用 CLI 进行以太网配置

若要从命令行管理以太网配置,请使用 az sphere device network CLI 命令。 例如, 设备网络启用 命令在连接的设备上启用以太网接口。

az sphere device network enable --interface "eth0" 

若要使用配置的以太网网络,网络接口 (eth0) 必须处于活动状态。 使用 设备网络列表接口 命令确定接口是否处于活动状态。


az sphere device network list-interfaces

如有必要,请使用 设备网络启用 命令来激活它。


az sphere device network enable --interface eth0

使用 Applibs 进行以太网配置

若要配置以太网,应用程序必须使用 applibs 网络 API

在应用程序中包括此头文件:

#include <applibs/networking.h>

应用程序清单必须包含 NetworkConfig 功能。

 "Capabilities": {
  "NetworkConfig" : true
}

使用 Networking_GetInterfaceConnectionStatus 函数确定网络接口是否处于活动状态。

Networking_GetInterfaceConnectionStatus("eth0", &currentInterfaceStatus);

若要激活网络接口,请使用 Networking_SetInterfaceState 函数。

Networking_SetInterfaceState("eth0", true);

注意

如果 (wlan0 和 eth0) 两个网络接口都处于活动状态且已连接,则设备用于通信的特定接口是不确定的。 如果要控制在任何给定时间使用哪个网络接口,应用程序必须使用 Networking_SetInterfaceState () 函数来显式打开所需接口,并关闭另一个接口。 DHCP 客户端高级应用示例演示了如何在接口之间切换,方法是将表示两个接口之一的值分配给全局变量。

样品

Azure IoT 演示如何使用 Azure Sphere 应用程序中的 Azure IoT SDK C API 与 Azure IoT 中心 或 Azure IoT Central 通信。

DHCP 客户端高级应用 演示如何续订或释放网络 DHCP 服务器已分配给 MT3620 设备的当前 IP 地址。

HTTPS cURL Easy 演示如何使用cURL的“easy”API 通过 HTTPS 提取内容

HTTPS cURL Multi 演示如何使用 cURL 的“multi”API 通过 HTTPS 提取内容。

关机高级应用 演示 Azure Sphere 平台的“关机”功能。

专用网络服务 演示如何将 Azure Sphere 设备连接到专用网络并使用网络服务。

WolfSSL 高级应用 演示如何在高级应用程序中使用 WolfSSL 进行 SSL 握手。

注意

以下示例来自 Azure Sphere 库,该库是 Microsoft 提供的未经维护的软件和硬件示例的集合。 有关详细信息,请参阅 Azure Sphere 库

打印 MAC 和网络接口的 IP 地址 打印指定网络接口的 MAC 和 IP 地址。

OSNetworkRequirementChecker-HLApp 执行两个设备 (MT3620) 网络诊断测试。