Connettere Azure Sphere alla rete EthernetConnect Azure Sphere to Ethernet

Un dispositivo Azure Sphere può comunicare in una rete Ethernet a 10 Mbps a metà duplex tramite la rete TCP o UDP standard.An Azure Sphere device can communicate on a 10-Mbps Ethernet network at half duplex through standard TCP or UDP networking. Questo argomento descrive come configurare un dispositivo Azure Sphere per l'uso di un controller Ethernet esterno implementando nel dispositivo un'immagine di configurazione della scheda e quindi abilitando l'interfaccia 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. È possibile connettere un dispositivo abilitato per Ethernet a una rete pubblica (connessa a Internet) e comunicare con le cose di Azure o i servizi cloud oppure è possibile connetterlo a una rete privata e usare i servizi di rete.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.

Oltre a comunicare tramite Ethernet, è possibile connettere Azure Sphere alla rete Wi-Fi.In addition to communicating through Ethernet, you can connect Azure Sphere to Wi-Fi. Se il dispositivo userà solo Ethernet per connettersi a Internet, è necessario installare il pacchetto Ethernet.If your device will use only Ethernet to connect to the internet, you must install the Ethernet package. La connessione Ethernet può quindi essere usata per gli aggiornamenti cloud futuri.The Ethernet connection can then be used for future cloud updates.

Attenzione

Se il dispositivo è connesso tramite Ethernet, è necessaria una rete con traffico ridotto per evitare perdite di dati o prestazioni insufficienti.If your device is connected through Ethernet, a low-traffic network is required to prevent either data loss or poor performance. Il dispositivo perderà i dati dai pacchetti non TCP in ingresso in presenza di traffico in ingresso significativo sulla rete.The device will lose data from incoming non-TCP packets when there is significant incoming traffic on the network. I dati non vengono in genere persi dai pacchetti TCP in ingresso, indipendentemente dal volume di traffico, perché TCP ritrasmette i pacchetti eliminati.Data is typically not lost from incoming TCP packets, regardless of traffic volume, because TCP will retransmit dropped packets. Tuttavia, la ritrasmissione è a scapito delle prestazioni.However, the re-transmit is at the cost of performance.

Istruzioni relative all'hardwareHardware instructions

Nelle istruzioni riportate in Connessione di schede Ethernet alla scheda di sviluppo MT3620 viene descritto come connettere una scheda Ethernet a MT3620.Connecting Ethernet adapters to the MT3620 development board describes how to connect an Ethernet adapter to the MT3620. In queste istruzioni viene usata la configurazione della scheda descritta di seguito.The adapter referenced in those instructions uses the board configuration described here.

Configurazione della schedaBoard configuration

L'uso della rete Ethernet richiede un'immagine di configurazione della scheda oltre all'immagine dell'applicazione.Use of Ethernet requires a board configuration image in addition to the application image. L'immagine di configurazione della scheda contiene informazioni di cui il servizio di sicurezza di Azure Sphere ha bisogno per aggiungere il supporto per la rete Ethernet al sistema operativo 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. Microsoft fornisce una configurazione della scheda per il chip Microchip ENC286J60 Ethernet, che deve essere collegato tramite SPI a ISU0 con interrupt su GPIO5.Microsoft supplies a board configuration for the Microchip ENC286J60 Ethernet chip, which must be attached via SPI to ISU0 with interrupts on GPIO5. Per lo sviluppo, si consiglia il modulo Olimex ENC28J60-H.For development, we recommend the Olimex ENC28J60-H module.

Per usare la rete Ethernet in Azure Sphere, è necessario creare un pacchetto immagine di configurazione della scheda per ENC28J60 e distribuire questo pacchetto immagine insieme a quello dell'immagine dell'applicazione.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. La configurazione della lavagna non viene conteggiata rispetto al limite delle dimensioni del pacchetto dell'applicazione 1 MiB né rispetto alla 256 KiB riservata per le app di alto livello.The board configuration does not count against the 1 MiB application package size limit nor against the 256 KiB reserved for high-level apps.

Creare un pacchetto immagine di configurazione della schedaCreate a board configuration image package

Usare azsphere image-package pack-board-config per creare un pacchetto immagine di configurazione della scheda per ENC28J60:Use azsphere image-package pack-board-config to create a board configuration image package for the ENC28J60:

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

Il flag --preset identifica la configurazione della scheda fornita da Microsoft da inserire nel pacchetto, mentre il flag --output specifica un nome per il pacchetto.The --preset flag identifies the Microsoft-supplied board configuration to package, and the --output flag specifies a name for the package.

Trasferire localmente un pacchetto immagine di configurazione della schedaSideload a board configuration image package

È possibile trasferire localmente un pacchetto immagine di configurazione della scheda per lo sviluppo e il debug oppure è possibile distribuirlo dal cloud insieme all'applicazione Azure Sphere per l'uso sul 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.

Per usare un pacchetto immagine di configurazione della scheda durante lo sviluppo e il debug:To use a board configuration image package during development and debugging:

  1. Preparare il dispositivo per lo sviluppo e il debug:Prepare the device for development and debugging:

    azsphere device enable-development

  2. Eliminare tutte le applicazioni esistenti dal dispositivo usando il comando azsphere device sideload delete.Delete any existing applications from the device, using the azsphere device sideload delete command. È importante eliminare le applicazioni esistenti prima di caricare il pacchetto immagine di configurazione della scheda per evitare conflitti di risorse tra le applicazioni esistenti e la configurazione della scheda.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. Trasferire localmente il pacchetto immagine di configurazione della scheda.Sideload the board configuration image package. Ad esempio, il comando seguente trasferisce localmente il pacchetto immagine di configurazione della scheda Ethernet ENC286J60:For example, the following command sideloads the ENC286J60 Ethernet board configuration image package:

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

  4. Trasferire localmente l'applicazione, usando Visual Studio o il comando azsphere device sideload deploy.Sideload the application, either by using Visual Studio or by using the azsphere device sideload deploy command.

Distribuzione cloud di un pacchetto immagine di configurazione della schedaCloud-deploy a board configuration image package

Per distribuire un pacchetto immagine di configurazione della scheda nel cloud, il dispositivo deve disporre di un prodotto, appartenere a un gruppo di dispositivi e non avere la funzionalità AppDevelopment installata.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. Vedere Creare una distribuzione per informazioni su come configurarle.See Create a deployment to find out how to set these up.

Una volta che il dispositivo è pronto, è possibile distribuire l'immagine di configurazione della scheda insieme all'immagine dell'applicazione in un'unica distribuzione.After your device is ready, you can deploy the board configuration image along with the application image in a single deployment. Usare il comando azsphere device-group deployment create per distribuire entrambe le immagini.Use the azsphere device-group deployment create command to deploy both images. Ad esempio, il codice seguente consente di distribuire il pacchetto immagine di configurazione della scheda enc28j60-isu0-int5 e il pacchetto immagine dell'applicazione EthernetSample nei dispositivi del gruppo di dispositivi "Produzione" per il prodotto 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:

azsphere device-group deployment create --devicegroupname Production --productname DW100 --filepath=enc28j60-isu0-int5.imagepackage,EthernetSample.imagepackage

Rimuovere una configurazione della scheda trasferita localmenteRemove a sideloaded board configuration

Se durante lo sviluppo si trasferisce localmente una configurazione della scheda, potrebbe essere necessario rimuovere in un secondo momento tale configurazione in modo che altre applicazioni possano usare le risorse riservate per la scheda.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. Ad esempio, la configurazione della scheda lan-enc28j60-isu0-int5 riserva ISU0 e GPIO 5.For example, the lan-enc28j60-isu0-int5 board configuration reserves ISU0 and GPIO 5. Se si prova a eseguire un'applicazione che usa queste risorse mentre la configurazione della scheda viene caricata nel dispositivo Azure Sphere, si verificheranno errori di conflitto di pin.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.

Per rimuovere una configurazione della scheda, seguire questa procedura:To remove a board configuration, follow these steps:

  1. Elencare le immagini installate nel dispositivo:List the images installed on the device:

    azsphere device image list-installed

  2. Trovare l'ID del componente per la configurazione della scheda nell'elenco: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. Eliminare il pacchetto immagine di configurazione della scheda, specificando il relativo ID componente:Delete the board configuration image package by specifying its component ID:

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

  4. Riavviare il dispositivo premendo il pulsante di reset o emettendo il comando azsphere device restart.Restart the device by either pressing the Reset button or issuing the azsphere device restart command.

Rimuovere una configurazione della scheda dalla distribuzione cloudRemove a board configuration from cloud deployment

Per rimuovere una configurazione della scheda dalla distribuzione cloud, è necessario creare una nuova distribuzione che fornisce solo il pacchetto dell'immagine dell'applicazione, senza includere il pacchetto immagine di configurazione della scheda.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. Ad esempio, la distribuzione seguente rimuove la configurazione della lavagna dalla distribuzione cloud creata nella sezione precedente e carica un pacchetto di immagini diverso che non si basa su 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:

azsphere device-group deployment create --devicegroupname Production --productname DW100 --filepath WiFiSample.imagepackage

Attenzione

Non rimuovere una configurazione della scheda distribuita su cloud se il dispositivo si basa su Ethernet per la connettività Internet.Don't remove a cloud-deployed board configuration if your device relies on Ethernet for internet connectivity. Questa operazione ha l'effetto di portare il dispositivo offline, impedendo il ripristino della connettività Internet attraverso il cloud.This will take the device offline and prevent internet connectivity from being restored through the cloud. Per ripristinare la connettività, sarà necessario accedere fisicamente al dispositivo per trasferire localmente la configurazione della scheda oppure configurare una modalità di accesso Internet alternativa, ad esempio tramite 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.

Abilitare l'interfaccia EthernetEnable the Ethernet interface

Per usare le funzioni di configurazione di rete, è necessario aggiungere la riga seguente alla sezione Capabilities del file 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

Per usare Ethernet, l'applicazione di alto livello deve abilitare l'interfaccia chiamando la funzione Networking_SetInterfaceState, che fa parte dell'API di configurazione di rete.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. Il codice seguente, ad esempio, abilita l'interfaccia "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;
    }

Per usare l'interfaccia Ethernet, è necessario includere applibs/networking.h in Main. c:To use the Ethernet interface, you must include applibs/networking.h in main.c:

    #include <applibs/networking.h>

Tutte le interfacce usano indirizzi IP dinamici per impostazione predefinita.All interfaces use dynamic IP addresses by default. Vedere Usare servizi di rete per informazioni dettagliate sui tipi di servizi che possono essere usati da un'applicazione Azure Sphere.See use network services for details about the types of services an Azure Sphere application can use.

EsempiSamples