Conectar o Azure Sphere à EthernetConnect Azure Sphere to Ethernet

Um dispositivo Azure Sphere pode se comunicar em uma rede Ethernet de 10 Mbps por meio do duplex por meio de rede TCP ou UDP padrão.An Azure Sphere device can communicate on a 10-Mbps Ethernet network at half duplex through standard TCP or UDP networking. Este tópico descreve como configurar um dispositivo do Azure Sphere para usar um controlador de Ethernet externo ao implantar uma imagem da configuração de quadro em seu dispositivo e, em seguida, habilitando a interface Ethernet.This topic describes how to configure an Azure Sphere device to use an external Ethernet controller by deploying a board configuration image to your device and then enabling the Ethernet interface. Você pode se conectar a um dispositivo habilitado para Ethernet para uma rede pública (conectada à Internet) e se comunicar com IoT do Azure ou seus próprios serviços de nuvem, ou você pode conectá-lo a uma rede privada e utilizar serviços de rede.You can connect an Ethernet-enabled device to a public (internet-connected) network and communicate with Azure IoT or your own cloud services, or you can connect it to a private network and use network services.

Além de se comunicar por meio da Ethernet, você pode conectar o Azure Sphere ao Wi-Fi.In addition to communicating through Ethernet, you can connect Azure Sphere to Wi-Fi. Se seu dispositivo usar somente Ethernet para se conectar à Internet, você deverá instalar o pacote Ethernet.If your device will use only Ethernet to connect to the internet, you must install the Ethernet package. A conexão Ethernet pode ser usada para futuras atualizações de nuvem.The Ethernet connection can then be used for future cloud updates.

Cuidado

Se o dispositivo estiver conectado por meio de Ethernet, uma rede de tráfego baixo será necessária para evitar a perda de dados ou o mau desempenho.If your device is connected through Ethernet, a low-traffic network is required to prevent either data loss or poor performance. O dispositivo perderá dados de pacotes não TCP de entrada quando houver tráfego de entrada significativo na rede.The device will lose data from incoming non-TCP packets when there is significant incoming traffic on the network. Os dados normalmente não são perdidos de pacotes TCP de entrada, independentemente do volume de tráfego, pois o TCP retransmitirá pacotes ignorados.Data is typically not lost from incoming TCP packets, regardless of traffic volume, because TCP will retransmit dropped packets. No entanto, a retransmissão é o custo do desempenho.However, the re-transmit is at the cost of performance.

Instruções de hardwareHardware instructions

Conectar-se a adaptadores Ethernet para a placa de desenvolvimento MT3620 descreve como conectar um adaptador Ethernet ao MT3620.Connecting Ethernet adapters to the MT3620 development board describes how to connect an Ethernet adapter to the MT3620. O adaptador referenciado nas mesmas instruções usa a configuração de quadro descrita aqui.The adapter referenced in those instructions uses the board configuration described here.

Configuração de boardBoard configuration

O uso da Ethernet exige uma imagem da configuração de board, além da imagem do aplicativo.Use of Ethernet requires a board configuration image in addition to the application image. A imagem de configuração de board contém informações exigidas pelo Serviço de Segurança do Azure Sphere para adicionar suporte à Ethernet para o sistema operacional do Azure Sphere.The board configuration image contains information that the Azure Sphere Security Service requires to add support for Ethernet to the Azure Sphere OS. A Microsoft fornece uma configuração de placa para o chip Microchip ENC286J60 Ethernet, conectado via SPI com ISU0, com interrupções em GPIO5.Microsoft supplies a board configuration for the Microchip ENC286J60 Ethernet chip, which must be attached via SPI to ISU0 with interrupts on GPIO5. Para o desenvolvimento, recomendamos o módulo Olimex ENC28J60-H.For development, we recommend the Olimex ENC28J60-H module.

Para usar Ethernet no Azure Sphere, empacote uma imagem da configuração de placa para o ENC28J60 e implante esse pacote de imagens, além de seu pacote de imagens do aplicativo.To use Ethernet on Azure Sphere, you package a board configuration image for the ENC28J60 and deploy this image package in addition to your application image package. A configuração do quadro não conta com o 256 KiB reservado para aplicativos de alto nível.The board configuration does not count against the 256 KiB reserved for high-level apps.

Criar um pacote de imagens de configuração de placaCreate a board configuration image package

azsphere image-package pack-board-config --preset lan-enc28j60-isu0-int5 --destination enc28j60-isu0-int5.imagepackage

Use o azsphere Image-Package Pack-Board-config para criar um pacote de imagem de configuração do quadro para o ENC28J60:Use azsphere image-package pack-board-config to create a board configuration image package for the ENC28J60:

O --preset parâmetro identifica a configuração de placa fornecida pela Microsoft para o pacote e o --destination parâmetro especifica um caminho para o nome de arquivo de saída para o pacote de imagem resultante.The --preset parameter identifies the Microsoft-supplied board configuration to package, and the --destination parameter specifies a path to the output filename for the resulting image package.

Faça sideload de um pacote de imagens de configuração de placaSideload a board configuration image package

Você pode fazer sideload de um pacote de imagens de configuração de placa para desenvolvimento e depuração ou pode implantar esse tipo de pacote na nuvem junto com seu aplicativo do Azure Sphere para uso em campo.You can sideload a board configuration image package for development and debugging, or you can deploy such a package from the cloud along with your Azure Sphere application for field use.

Para usar um pacote de imagens de configuração de placa durante o desenvolvimento e depuração:To use a board configuration image package during development and debugging:

  1. Prepare o dispositivo para desenvolvimento e depuração:Prepare the device for development and debugging:

    azsphere device enable-development

  2. Exclua todos os aplicativos existentes do dispositivo, usando o comando azsphere Device Sideload Delete .Delete any existing applications from the device, using the azsphere device sideload delete command. É importante excluir os aplicativos existentes antes de carregar o pacote de imagens de configuração de placa para evitar conflitos de recursos entre os aplicativos existentes e a configuração de placa.It's important to delete existing applications before you load the board configuration image package to avoid resource conflicts between existing applications and the board configuration.

  3. Faça sideload de um pacote de imagens de configuração de placa.Sideload the board configuration image package. Por exemplo, o comando a seguir faz sideload do pacote de imagens de configuração da placa Ethernet ENC286J60:For example, the following command sideloads the ENC286J60 Ethernet board configuration image package:

    azsphere device sideload deploy --image-package enc28j60-isu0-int5.imagepackage

  4. Sideload o aplicativo, seja usando o Visual Studio ou usando o comando azsphere dispositivo Sideload implantar .Sideload the application, either by using Visual Studio or by using the azsphere device sideload deploy command.

Implantar pela nuvem um pacote de imagens de configuração de placaCloud-deploy a board configuration image package

Para implantar um pacote de imagem de configuração de placa por meio da nuvem, o dispositivo deve ter um produto, pertencer a um grupo de dispositivos e não deve ter a funcionalidade AppDevelopment instalado.To deploy a board configuration image package through the cloud, your device must have a product, belong to a device group, and must not have the AppDevelopment capability installed. Confira Criar uma implantação para descobrir como configurar isso tudo.See Create a deployment to find out how to set these up.

Depois que o dispositivo estiver pronto, você poderá implantar a imagem de configuração de placa, juntamente com a imagem do aplicativo, em uma implantação única.After your device is ready, you can deploy the board configuration image along with the application image in a single deployment.

Para criar uma implantação:To create a deployment:

  1. Carregue o pacote de imagem em seu locatário Azure Sphere usando a imagem azsphere adicionarUpload the image package to your Azure Sphere tenant using azsphere image add
  2. Crie uma nova implantação para um grupo de dispositivos para as imagens carregadas usando a criação de implantação de grupo de dispositivos azsphere.Create a new deployment for a device group for the uploaded images using azsphere device-group deployment create.

Por exemplo, o seguinte implanta o pacote de imagem de configuração da placa enc28j60-isu0-int5 e o pacote de imagem do aplicativo EthernetSample em dispositivos no grupo de dispositivos de produção para o produto DW100:For example, the following deploys the enc28j60-isu0-int5 board configuration image package and the EthernetSample application image package to devices in the Production device group for the DW100 product:

Carregue o pacote de imagem:Upload the image package:

azsphere image add --image <path-to-image-package>

Criar uma nova implantação para um grupo de dispositivos:Create a new deployment for a device group:

azsphere device-group deployment create --device-group <device-group-ID> or '<product-name>/<device-group-name>' --images <image-ID> <image-ID>

Para fornecer vários valores para --images Inserir uma lista de valores separados por espaços.To provide multiple values for --images enter a list of values separated by spaces.

O --device-group parâmetro identifica o grupo de dispositivos.The --device-group parameter identifies the device group. A ID do grupo de dispositivos fornece um GUID, que identifica exclusivamente o grupo de dispositivos em todos os produtos.The device group ID supplies a GUID, which uniquely identifies the device group across all products. Como alternativa, você pode usar o nome do produto e o par de nomes do grupo de dispositivos no <product-name>/<device-group-name> formato.Alternatively, you can use the product name and device group name pair in the <product-name>/<device-group-name> format. Esse par de nomes identifica exclusivamente um grupo de dispositivos para um produto específico.This pair of names uniquely identifies a device group for a particular product. Substituir <image-ID> pela ID da imagem do pacote de imagem.O --device-group parâmetro identifica o grupo de dispositivos.The --device-group parameter identifies the device group. A ID do grupo de dispositivos fornece um GUID, que identifica exclusivamente o grupo de dispositivos em todos os produtos.The device group ID supplies a GUID, which uniquely identifies the device group across all products. Como alternativa, você pode usar o nome do produto e o par de nomes do grupo de dispositivos no <product-name>/<device-group-name> formato.Alternatively, you can use the product name and device group name pair in the <product-name>/<device-group-name> format. Esse par de nomes identifica exclusivamente um grupo de dispositivos para um produto específico.This pair of names uniquely identifies a device group for a particular product. Replace <image-ID> with the image ID of the image package.

Remover a configuração de placa submetida a sideloadRemove a sideloaded board configuration

Se você fizer o sideload de uma configuração de placa durante o desenvolvimento, talvez precise remover posteriormente essa configuração para que outros aplicativos possam usar os recursos reservados pela placa.If you sideload a board configuration during development, you might later need to remove that configuration so that other applications can use the resources that the board reserves. Por exemplo, a configuração de placa lan-enc28j60-isu0-int5 reserva ISU0 e GPIO 5.For example, the lan-enc28j60-isu0-int5 board configuration reserves ISU0 and GPIO 5. Se você tentar executar um aplicativo que usa esses recursos enquanto a configuração de placa é carregada no dispositivo com Azure Sphere, ocorrerão erros de conflito de fixação.If you try to run an application that uses these resources while the board configuration is loaded on the Azure Sphere device, pin conflict errors will occur.

Para remover uma configuração de placa, execute estas etapas:To remove a board configuration, follow these steps:

  1. Liste a as imagens instaladas no dispositivo:List the images installed on the device:

    azsphere device image list-installed

  2. Localize a ID de componente da configuração de placa na lista:Find the component ID for the board configuration in the list:

     --> lan-enc28j60-is
     --> Image type:   Board configuration
     --> Component ID: 75a3dbfe-3fd2-4776-b7fe-c4c91de902c6
     --> Image ID:     a726b919-bdbe-4cf4-8360-2e37af9407e1
    
  3. Exclua o pacote de imagens de configuração de placa especificando a ID de seu componente:Delete the board configuration image package by specifying its component ID:

    azsphere device sideload delete --component-id 75a3dbfe-3fd2-4776-b7fe-c4c91de902c6

  4. Reinicie o dispositivo pressionando o botão de reinicialização ou emitindo o comando azsphere Device Restart .Restart the device by either pressing the Reset button or issuing the azsphere device restart command.

Remover uma configuração de placa da implantação na nuvemRemove a board configuration from cloud deployment

Para remover uma configuração de placa da implantação na nuvem, crie uma nova implantação que só forneça o pacote de imagem do aplicativo e não inclua o pacote de imagem de configuração da placa.To remove a board configuration from the cloud deployment, create a new deployment that only delivers the application image package and doesn't include the board config image package. Por exemplo, a implantação a seguir Remove a configuração do quadro da implantação de nuvem criada na seção anterior e carrega um pacote de imagem diferente que não depende de Ethernet.For example, the following deployment removes the board configuration from the cloud deployment created in the earlier section and uploads a different image package that does not rely on Ethernet.

Para criar uma implantação:To create a deployment:

  1. Carregue o pacote de imagem em seu locatário Azure Sphere usando a imagem azsphere adicionar.Upload the image package to your Azure Sphere tenant using azsphere image add.
  2. Crie uma nova implantação para um grupo de dispositivos para as imagens carregadas usando a criação de implantação de grupo de dispositivos azsphere.Create a new deployment for a device group for the uploaded images using azsphere device-group deployment create.
  1. Carregue o pacote de imagem:Upload the image package:
azsphere image add --image WiFiSample.imagepackage
  1. Criar uma nova implantação para um grupo de dispositivos:Create a new deployment for a device group:
azsphere device-group deployment create --device-group DW100/Production --images <image-ID>

Para fornecer vários valores para --images Inserir uma lista de valores separados por espaços.To provide multiple values for --images enter a list of values separated by spaces.

Cuidado

Não remova uma configuração de placa implantada por meio da nuvem se o dispositivo depender de Ethernet para conectividade com a Internet.Don't remove a cloud-deployed board configuration if your device relies on Ethernet for internet connectivity. Isso colocará o dispositivo offline e impedirá que a conectividade da Internet seja restaurada por meio da nuvem.This will take the device offline and prevent internet connectivity from being restored through the cloud. Para restaurar a conectividade, você precisará ter acesso físico ao dispositivo para fazer sideload da configuração de placas ou para configurar o acesso alternativo à Internet, como Wi-Fi.To restore connectivity you'll need physical access to the device to sideload the board config or to set up alternative internet access, such as Wi-Fi.

Habilitar a interface EthernetEnable the Ethernet interface

Para usar as funções de configuração de rede, é necessário adicionar a seguinte linha à seção Funcionalidades do arquivo app_manifest.json:To use network configuration functions you must add the following line to the Capabilities section of the app_manifest.json file:

"NetworkConfig" : true

Para usar a Ethernet, seu aplicativo de alto nível deve habilitar a interface chamando a função Networking_SetInterfaceState, que faz parte da API de configuração de rede.To use Ethernet, your high-level application must enable the interface by calling the Networking_SetInterfaceState function, which is part of the network configuration API. Por exemplo, o exemplo a seguir habilita a interface “eth0”:For example, the following enables the "eth0" interface:

 int err = Networking_SetInterfaceState("eth0", true);
 if (err == -1) {
     Log_Debug("Error setting interface state %d\n",errno);
     return -1;
    }

Para usar a interface Ethernet, você deve incluir applibs/networking.h em Main. c:To use the Ethernet interface, you must include applibs/networking.h in main.c:

    #include <applibs/networking.h>

Todas as interfaces usam endereços IP dinâmicos por padrão.All interfaces use dynamic IP addresses by default. Ver usar serviços de rede para obter detalhes sobre os tipos de serviços que um aplicativo do Azure Sphere pode usar.See use network services for details about the types of services an Azure Sphere application can use.

ExemplosSamples