Uso di GPIO in applicazioni con funzionalità in tempo realeUsing GPIOs in real-time capable applications

Azure Sphere supporta i GPIO (General-Purpose Input/Output).Azure Sphere supports GPIOs (general-purpose input/output). Un GPIO è un tipo di pin digitale programmabile su un circuito integrato.A GPIO is a type of programmable digital pin on an integrated circuit. I GPIO non hanno funzionalità predefinite e il loro comportamento può essere personalizzato da un'applicazione.GPIOs don't have predefined functionality and their behavior can be customized by an application. I GPIO vengono comunemente usati, ad esempio, per cambiare lo stato dei dispositivi hardware, controllare i LED e leggere lo stato degli switch.Some common uses for GPIOs are to change the state of hardware devices, control LEDs, and read the state of switches.

Questo argomento descrive come usare i GPIO in un'applicazione con funzionalità in tempo reale (RTApp).This topic describes how to use GPIOs in a real-time capable application (RTApp). Per informazioni sull'uso dei GPIO in applicazioni di alto livello, vedere Uso di GPIO in applicazioni di alto livello.For information about using GPIOs in high-level applications, see Using GPIOs in high-level applications.

Un'applicazione RTApp può usare qualsiasi GPIO sul dispositivo Azure Sphere.An RTApp can use any of the GPIOs on the Azure Sphere device. Per GPIO sono supportate le operazioni seguenti:The following operations are supported for GPIO:

  • Leggere inputRead input
  • Impostare l'output su alto o bassoSet output to high or low
  • Eseguire il polling degli interrupt softwarePoll software interrupts

Nota

Il sistema operativo Azure Sphere non reimposta le periferiche all'avvio.The Azure Sphere OS does not reset peripherals on start-up. Le applicazioni devono assicurarsi che le periferiche si trovino in uno stato valido all'avvio e dopo il riavvio.Your applications should ensure that peripherals are in a known-good state on startup and after restart.

Supporto di MT3620 per i GPIO nei core per operazioni in tempo realeMT3620 support for GPIOs on the real-time cores

In MT3620, la maggior parte dei GPIO viene mappata a core in tempo reale in blocchi di quattro, a partire da GPIO 0; tuttavia, i blocchi ISU da 0 a 4 hanno cinque GPIO.On the MT3620, most GPIOs are mapped to real-time cores in blocks of four, starting with GPIO 0; however, ISU blocks 0 - 4 have five GPIOs. Di conseguenza, le richieste GPIO dell'applicazione RTApp potrebbero non avere esito negativo se un'applicazione di alto livello (o un'altra applicazione RTApp) richiede un GPIO nello stesso blocco.As a result, RTApp GPIO requests may fail if a high-level application (or another RTApp) requests a GPIO in the same block. Ad esempio, se un'app di alto livello richiede il GPIO 8 e un'applicazione RTApp richiede il GPIO 9, la seconda app restituisce un errore in fase di distribuzione.For example, if a high-level app requests GPIO 8 and an RTApp requests GPIO 9, the second app returns an error at deployment.

Ogni LED su MT3620 RDB è associato a tre GPIO: uno per ciascuno dei canali rosso, verde e blu.Each LED on the MT3620 RDB maps to three GPIOs: one each for red, green, and blue channels.

Per gli indirizzi di base del registro, i numeri di interrupt, la frequenza di clock, la frequenza di campionamento e altri dettagli su MT3620, vedere il foglio dati MT3620 e il manuale dell'utente di MT3620 M4; Se rimangono domande, è possibile richiedere dettagli da Avnet tramite posta elettronica Azure.Sphere@avnet.com .For register base addresses, interrupt numbers, clock rate, sampling frequency, and other details about the MT3620, see the MT3620 Datasheet and the MT3620 M4 User Manual; if questions remain, you can request details from Avnet by emailing Azure.Sphere@avnet.com.

Requisiti di GPIOGPIO Requirements

Il codice dell'applicazione necessita di un modo per identificare il GPIO e i relativi registri.Your application code needs a way to identify the GPIO and its registers. È possibile trovare l'indirizzo di base di registrazione nella documentazione del produttore dell'hardware.You can find the register base address in the manufacturer's hardware documentation. Prima che il RTApp possa usare un GPIO, è necessario inizializzare i blocchi che verranno usati.Before your RTApp can use a GPIO, it must initialize the blocks that it is going to use. L'inizializzazione è richiesta una sola volta per ogni blocco usato dall'app.Initialization is required only once for each block that the app uses.

Per informazioni dettagliate su MT3620, vedere supporto di MT3620 per GPIO nei core in tempo reale.For details about the MT3620, see MT3620 support for GPIOs on the real-time cores.

Impostazioni del manifesto dell'applicazioneApplication manifest settings

Per usare un GPIO, un'applicazione RTApp deve elencarlo nella sezione Capabilities del manifesto dell'applicazione.To use a GPIO, an RTApp must list it in the Capabilities section of the application manifest. Identificare il GPIO usando il valore "AppManifestValue" definito per esso nel file JSON per l'hardware di destinazione.Identify the GPIO by using the "AppManifestValue" that is defined for it in the JSON file for the target hardware. Ad esempio, la riga seguente riserva i GPIO 8 e 12:For example, the following line reserves GPIOs 8 and 12:

"Capabilities": {
 "Gpio": [ 8, 12 ]
}

Applicazione di esempio GPIOThe GPIO sample application

Nell' esempio GPIO viene illustrato come utilizzare GPIO in un RTApp.The GPIO sample demonstrates how to use GPIOs in an RTApp. I file Leggimi forniscono dettagli e istruzioni.The README files provide details and instructions.