Creare un'applicazione con funzionalità in tempo realeBuild a real-time capable application

È possibile usare Visual Studio, Visual Studio Code o l'interfaccia della riga di comando per sviluppare e sottoporre a debug le applicazioni con funzionalità in tempo reale (RTApp) in modo molto simile alle applicazioni di alto livello.You can use Visual Studio, Visual Studio Code, or the command line (CLI) to develop and debug real-time capable applications (RTApps) in much the same way as high-level applications.

PrerequisitiPrerequisites

Abilita sviluppo e debugEnable development and debugging

Prima di poter compilare un'applicazione di esempio sul dispositivo Azure Sphere o sviluppare nuove applicazioni, è necessario abilitare lo sviluppo e il debug.Before you can build a sample application on your Azure Sphere device or develop new applications for it, you must enable development and debugging. Per impostazione predefinita, i dispositivi Azure Sphere sono "bloccati", ovvero non consentono il caricamento da un PC di applicazioni in fase di sviluppo, oltre a non permettere il debug delle applicazioni.By default, Azure Sphere devices are "locked"; that is, they do not allow applications under development to be loaded from a PC, and they do not allow debugging of applications. La preparazione del dispositivo per il debug rimuove questa restrizione e carica il software necessario per il debug e sblocca le funzionalità del dispositivo come descritto in Funzionalità del dispositivo e comunicazione.Preparing the device for debugging removes this restriction and loads software required for debugging and unlocks device capabilities as described in Device capabilities and communication.

Per eseguire il debug sui core in tempo reale, usare il comando Abilita-sviluppo del dispositivo azsphere .To debug on the real-time cores, use the azsphere device enable-development command. Questo comando configura il dispositivo in modo che accetti le applicazioni da un PC per il debug e assegna il dispositivo al gruppo di dispositivi di sviluppo, che non consente gli aggiornamenti dell'applicazione cloud.This command configures the device to accept applications from a PC for debugging and assigns the device to the Development device group, which does not allow cloud application updates. Durante lo sviluppo e il debug delle applicazioni, è consigliabile lasciare il dispositivo in questo gruppo in modo da evitare la sovrascrittura dell'applicazione in fase di sviluppo da parte degli aggiornamenti cloud.During application development and debugging, you should leave the device in this group so that cloud application updates do not overwrite the application under development.

In Windows è necessario aggiungere il --enablertcoredebugging parametro, che carica i server di debug e i driver necessari per ogni tipo di core nel dispositivo.On Windows, you must add the --enablertcoredebugging parameter, which loads the debugging servers and required drivers for each type of core onto the device.

  1. Accedere a Azure Sphere se non è già stato fatto:Log in to Azure Sphere if you haven't already done so:

    azsphere login

  2. Fare clic con il pulsante destro del mouse sul collegamento del prompt dei comandi per gli sviluppatori di Azure Sphere e scegliere Altro>Esegui come amministratore.Right-click the Azure Sphere Developer Command Prompt shortcut and select More>Run as administrator. Il --enablertcoredebugging parametro richiede privilegi amministrativi perché installa i driver USB per il debugger.The --enablertcoredebugging parameter requires administrator privilege because it installs USB drivers for the debugger.

  3. Immettere il comando seguente:Enter the following command:

    azsphere device enable-development --enablertcoredebugging

  4. Chiudere la finestra dopo il completamento del comando perché il privilegio di amministratore non è più necessario.Close the window after the command completes because administrator privilege is no longer required. È consigliabile usare sempre il privilegio minimo necessario per eseguire un'attività.As a best practice, you should always use the lowest privilege that can accomplish a task.

Se il comando Abilita-sviluppo del dispositivo azsphere non riesce, vedere risoluzione dei problemi Azure Sphere per la guida.If the azsphere device enable-development command fails, see Troubleshoot Azure Sphere issues for help.

Abilita sviluppo e debugEnable development and debugging

Prima di poter compilare un'applicazione di esempio sul dispositivo Azure Sphere o sviluppare nuove applicazioni, è necessario abilitare lo sviluppo e il debug.Before you can build a sample application on your Azure Sphere device or develop new applications for it, you must enable development and debugging. Per impostazione predefinita, i dispositivi Azure Sphere sono "bloccati", ovvero non consentono il caricamento da un PC di applicazioni in fase di sviluppo, oltre a non permettere il debug delle applicazioni.By default, Azure Sphere devices are "locked"; that is, they do not allow applications under development to be loaded from a PC, and they do not allow debugging of applications. La preparazione del dispositivo per il debug rimuove questa restrizione e carica il software necessario per il debug e sblocca le funzionalità del dispositivo come descritto in Funzionalità del dispositivo e comunicazione.Preparing the device for debugging removes this restriction and loads software required for debugging and unlocks device capabilities as described in Device capabilities and communication.

Per eseguire il debug sui core in tempo reale, usare il comando Abilita-sviluppo del dispositivo azsphere .To debug on the real-time cores, use the azsphere device enable-development command. Questo comando configura il dispositivo in modo che accetti le applicazioni da un PC per il debug e assegna il dispositivo al gruppo di dispositivi di sviluppo, che non consente gli aggiornamenti dell'applicazione cloud.This command configures the device to accept applications from a PC for debugging and assigns the device to the Development device group, which does not allow cloud application updates. Durante lo sviluppo e il debug delle applicazioni, è consigliabile lasciare il dispositivo in questo gruppo in modo da evitare la sovrascrittura dell'applicazione in fase di sviluppo da parte degli aggiornamenti cloud.During application development and debugging, you should leave the device in this group so that cloud application updates do not overwrite the application under development.

In Windows è necessario aggiungere il --enablertcoredebugging parametro, che carica i server di debug e i driver necessari per ogni tipo di core nel dispositivo.On Windows, you must add the --enablertcoredebugging parameter, which loads the debugging servers and required drivers for each type of core onto the device.

  1. Accedere a Azure Sphere se non è già stato fatto:Log in to Azure Sphere if you haven't already done so:

    azsphere login

  2. Fare clic con il pulsante destro del mouse sul collegamento del prompt dei comandi per gli sviluppatori di Azure Sphere e scegliere Altro>Esegui come amministratore.Right-click the Azure Sphere Developer Command Prompt shortcut and select More>Run as administrator. Il --enablertcoredebugging parametro richiede privilegi amministrativi perché installa i driver USB per il debugger.The --enablertcoredebugging parameter requires administrator privilege because it installs USB drivers for the debugger.

  3. Immettere il comando seguente:Enter the following command:

    azsphere device enable-development --enablertcoredebugging

  4. Chiudere la finestra dopo il completamento del comando perché il privilegio di amministratore non è più necessario.Close the window after the command completes because administrator privilege is no longer required. È consigliabile usare sempre il privilegio minimo necessario per eseguire un'attività.As a best practice, you should always use the lowest privilege that can accomplish a task.

Se il comando Abilita-sviluppo del dispositivo azsphere non riesce con il seguente messaggio di errore, vedere risoluzione dei problemi Azure Sphere per la guida.If the azsphere device enable-development command fails with the following error message, see Troubleshoot Azure Sphere issues for help.

error: The device did not accept the device capability configuration. Please check the Azure Sphere OS on your device is up-to-date using 'azsphere device show-deployment-status'.

Compilare il RTApp usando Visual Studio CodeBuild the RTApp using Visual Studio Code

Per compilare un'applicazione RTApp:To build an RTApp:

  1. In Visual Studio Code aprire la cartella HelloWorld_RTApp_MT3620_BareMetal nel clone del repository di esempi di Azure Sphere.In Visual Studio Code, open the HelloWorld_RTApp_MT3620_BareMetal folder in your clone of the Azure Sphere samples repo. Se viene richiesto di selezionare un kit, scegliere di non usare un kit.If you're prompted to select a kit, choose "Do not use a kit."

  2. Premere F5 per avviare il debugger.Press F5 to start the debugger. Se il progetto non è già stato compilato oppure se i file sono stati cambiati ed è necessaria una ricompilazione, Visual Studio Code compilerà il progetto prima dell'avvio del debug.If the project has not previously been built, or if files have changed and rebuild is required, Visual Studio Code will build the project before debugging starts.

  3. L'emulatore di terminale connesso visualizzerà l'output dell'applicazione.The connected terminal emulator should display output from the application. Il programma invia le parole seguenti a intervalli di un secondo:The program sends the following words at one-second intervals:

    Tick

    Tock

    Nota

    Visual Studio Code include IntelliSense, ma non verrà aggiornato automaticamente quando si modifica il file CMakeLists.txt.Visual Studio Code provides Intellisense, but it won't automatically update when you modify CMakeLists.txt. Per aggiornare IntelliSense, è necessario eseguire il comando cmake: delete cache e RECONFIGURE .You need to run the CMake: Delete Cache and Reconfigure command to refresh Intellisense. La visualizzazione delle destinazioni CMake si trova nella visualizzazione dell'estensione CMake sulla barra sinistra.The CMake targets view can be found in the CMake extension view on the left bar.

Compilare il RTApp con Visual StudioBuild the RTApp using Visual Studio

Per compilare un'applicazione RTApp:To build an RTApp:

  1. In Visual Studio scegliere Apri > CMake dal menu file e passare alla cartella che contiene l'esempio.In Visual Studio, from the File menu, select Open > CMake and navigate to the folder that contains the sample.

  2. Se la generazione di CMake non viene avviata automaticamente, selezionare il file CMakeLists.txt.If CMake generation does not start automatically, select the CMakeLists.txt file.

  3. Nella finestra Output di Visual Studio dovrebbero essere visualizzati i messaggi CMake generation started. e CMake generation finished. nell'output di CMake.In the Visual Studio Output window, the CMake output should show the messages CMake generation started. and CMake generation finished.

  4. Nel menu CMake (se presente) selezionare Compila tutto.On the CMake menu (if present), select Build All. Se il menu non è presente, aprire Esplora soluzioni, fare clic con il pulsante destro del mouse sul file CMakeLists.txt e selezionare Compila.If the menu is not present, open Solution Explorer, right-click the CMakeLists.txt file, and select Build. Il percorso dell'output dell'applicazione Azure Sphere viene visualizzato nella finestra Output.The output location of the Azure Sphere application appears in the Output window.

  5. Premere F5 per distribuire l'applicazione.Press F5 to deploy the application.

  6. L'emulatore di terminale connesso visualizzerà l'output dell'applicazione.The connected terminal emulator should display output from the application. Il programma invia le parole seguenti a intervalli di un secondo:The program sends the following words at one-second intervals:

    Tick

    Tock

    Nota

    • Visual Studio offre la funzionalità IntelliSense per le applicazioni RTApp di Azure Sphere raccogliendo i dati dalla cache di CMake.Visual Studio provides Intellisense for Azure Sphere RTApps by gathering data from its CMake cache. Visual Studio aggiorna la cache ogni volta che viene modificato il file CMakeLists.txt o CMakeSettings.json nell'applicazione RTApp.Visual Studio updates the cache whenever the CMakeLists.txt or CMakeSettings.json file in the RTApp changes.

    • Per impostazione predefinita, in Visual Studio viene usata la visualizzazione cartelle.By default, Visual Studio uses the Folder view. Se si preferisce una visualizzazione logica del progetto CMake, è possibile passare alla visualizzazione destinazioni CMake.If you prefer a logical view of the CMake project, you can change to the CMake Targets view. In Esplora soluzioni selezionare l'icona di attivazione/disattivazione delle cartelle:In Solution Explorer, select the folder toggle icon:

      Passaggio tra le visualizzazioni soluzione e cartelle

      Scegliere visualizzazione destinazioni CMake dal menu a discesa.From the drop-down menu, select CMake Targets View.

    • È possibile che l'esecuzione dell'applicazione inizi prima che OpenOCD stabilisca una connessione.The application might begin executing before OpenOCD makes a connection. Di conseguenza, i punti di interruzione impostati precedentemente nel codice potrebbero essere ignorati.As a result, breakpoints set early in the code might be missed. Per risolvere il problema, è possibile ritardare l'avvio dell'app fino a quando OpenOCD non stabilisce la connessione.A simple workaround for this is to delay the start of the app until OpenOCD connects.

      1. Inserire il codice seguente all'inizio del punto di ingresso dell'applicazione RTCoreMain.Insert the following code at the beginning of the application entry point RTCoreMain. In questo modo l'applicazione entrerà e rimarrà in un ciclo while finché la variabile f non sarà impostata su true.This will cause the application to enter and remain in a while loop until variable f is set to true.

          volatile bool f = false;
          while (!f) {
            // empty.
          }
        
      2. Premere F5 per avviare l'app con il debug e quindi interrompere l'esecuzione.Press F5 to start the app with debugging and then break into execution.

      3. Nel pannello di debug Variabili locali modificare il valore di f da zero a uno.In the Locals debug panel, change the value of f from zero to one.

      4. Procedere normalmente con l'esecuzione del codice.Step through the code as normal.

Compilare un'applicazione RTApp con l'interfaccia della riga di comandoBuild RTApp using the CLI

Le istruzioni seguenti presuppongono che si usi CMake.The instructions that follow assume you're using CMake. Se si preferisce eseguire la compilazione nella riga di comando senza usare CMake, è possibile determinare le opzioni del compilatore e del linker appropriate esaminando i file AzureSphereToolchainBase.cmake e AzureSphereRTCoreToolchain.cmake, che vengono installati con Azure Sphere SDK.If you prefer to build on the command line without using CMake, you can determine the appropriate compiler and linker options by looking at the AzureSphereToolchainBase.cmake and AzureSphereRTCoreToolchain.cmake files, which are installed with the Azure Sphere SDK.

  1. Aprire una shell o un prompt dei comandi.Open a command prompt or shell. Se si esegue Windows e si usa la versione 1 dell'interfaccia della riga di comando, deve essere un Azure Sphere Prompt dei comandi per gli sviluppatori.If you're running on Windows and using version 1 of the CLI, it must be an Azure Sphere Developer Command Prompt.

  2. Creare o passare alla directory che conterrà i file build e .imagepackage che verranno generati durante il processo di sviluppo.Create or navigate to the directory that will contain the build and .imagepackage files that will be generated during the build process. Ad esempio, per creare e aprire una nuova directory denominata "buildfiles", immettere i comandi seguenti nella riga di comando:For example, to create and open a new directory called "buildfiles" you would enter the following commands at the command line:

    mkdir buildfiles

    cd buildfiles

  3. Dalla directory di compilazione del progetto, al prompt dei comandi, eseguire CMake con i parametri seguenti:From your project build directory, at the command prompt, run CMake with the following parameters:

  • -G Impostare questo parametro su "Ninja" per indicare che CMake deve usare il generatore Ninja per creare i file di compilazione, in quanto Ninja verrà usato per completare la compilazione.-G Set this parameter to "Ninja" to indicate that CMake should use the Ninja generator to create the build files, as Ninja will be used to complete the build.

  • -DCMAKE_TOOLCHAIN_FILE-DCMAKE_TOOLCHAIN_FILE

    Impostare questo parametro sul percorso del file della catena di strumenti del compilatore nel computer.Set this parameter to the path to the compiler tool chain file on your machine. Per Windows, il CMAKE_TOOLCHAIN_FILE deve puntare a C:\Programmi (x86) \ <path to SDK> \CMakeFiles\AzureSphereRTCoreToolchain.CMake.For Windows, the CMAKE_TOOLCHAIN_FILE should point to C:\Program Files (x86)\<path to SDK>\CMakeFiles\AzureSphereRTCoreToolchain.cmake. Per Linux, specificare/opt/azurespheresdk/CMakeFiles/AzureSphereRTCoreToolchain.cmake.For Linux, specify /opt/azurespheresdk/CMakeFiles/AzureSphereRTCoreToolchain.cmake.

  • -DARM_GNU_PATH-DARM_GNU_PATH

    Impostare questo parametro sul percorso della directory nel computer che contiene arm-none-interfaccia EABI-GCC e non il percorso del compilatore stesso.Set this parameter to the path to the directory on your machine that contains arm-none-eabi-gcc, and not the path to the compiler itself. Se si usano gli strumenti GNU da Visual Studio, il percorso di ARM_GNU_PATH si trova nella \ sottocartella 2019 dell'edizione\linux\ gcc_arm \bin dell'installazione di Visual Studio, anziché nel percorso nell'esempio.If you are using the GNU Tools from Visual Studio, the ARM_GNU_PATH path would be in the 2019\edition\Linux\gcc_arm\bin subfolder of your Visual Studio installation, rather than the path in the example.

  • -DAZURE_SPHERE_TARGET_API_SET-DAZURE_SPHERE_TARGET_API_SET

    Impostare questo parametro sul set di API Azure Sphere desiderato da usare.Set this parameter to the desired Azure Sphere API set to use. Nell'esempio è impostato su "Latest-LTS", che seleziona il set più recente di API designato per il supporto a lungo termine.In the example it is set to "latest-lts", which selects the latest set of APIs designated for long-term support.

  • -DCMAKE_BUILD_TYPE-DCMAKE_BUILD_TYPE

    Impostare questo parametro sul tipo di compilazione.Set this parameter to the build type. I valori possibili sono Debug e Release.Possible values are Debug and Release.

  • Il parametro finale è il percorso della directory nel computer che contiene i file di origine per l'applicazione di esempio.The final parameter is the path to the directory on your machine that contains the source files for the sample application. Nell'esempio il repository degli esempi di Azure Sphere è stato scaricato in una directory denominata AzSphere.In the example the Azure Sphere samples repository was downloaded to a directory called AzSphere.

    I parametri di CMake sono separati da spazi.CMake parameters are separated by spaces. Il carattere di continuazione di riga (^ per la riga di comando di Windows, \ per la riga di comando di Linux o ' per PowerShell) può essere usato per migliorare la leggibilità, ma non è obbligatorio.The line continuation character (^ for Windows command line, \ for Linux command line, or ` for PowerShell) can be used for readability but is not required.

Gli esempi seguenti illustrano i comandi CMake per il RTApp HelloWorld:The following examples show the CMake commands for the HelloWorld RTApp:

  cmake ^
  -G "Ninja" ^
  -DCMAKE_TOOLCHAIN_FILE="C:\Program Files (x86)\Microsoft Azure Sphere SDK\CMakeFiles\AzureSphereRTCoreToolchain.cmake" ^
  -DARM_GNU_PATH:STRING="C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin" ^
  -DAZURE_SPHERE_TARGET_API_SET="latest-lts" ^
  -DCMAKE_BUILD_TYPE="Debug" ^
  "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\HelloWorld_RTApp_MT3620_BareMetal"

Output del log da un'applicazione RTAppLog output from an RTApp

Ogni core per operazioni in tempo reale in MT3620 ha un dispositivo UART dedicato per la registrazione dell'output.Each real-time core on the MT3620 has a dedicated UART that is intended for logging output. I core in tempo reale possono accedere anche a ISU UART.The real-time cores can also access the ISU UARTs. MT3620 RDB espone solo il pin TX, che può essere usato per visualizzare l'output del log dell'applicazione.The MT3620 RDB exposes only the TX pin, which you can use to display log output from the application. Altri componenti hardware potrebbero esporre questa funzionalità in modo diverso o non esporla affatto.Other hardware may expose this differently, or not at all. Per visualizzare l'output del log, configurare l'hardware per visualizzare l'output come descritto nell'avvio rapido.To see the log output, set up your hardware to display this output as described in the quickstart. L'UART dedicato non richiede l'uso del manifesto dell'applicazione Uart. Non deve tuttavia essere usato per scopi diversi dalla registrazione dell'output per un'applicazione RTApp.The dedicated UART doesn't require the Uart application manifest requirement; however, it shouldn't be used for purposes other than logging output for an RTApp.

Sviluppare con le app partnerDevelop with partner apps

Quando si carica un'applicazione nel dispositivo Azure Sphere, per impostazione predefinita gli strumenti di distribuzione di Azure Sphere eliminano tutte le applicazioni esistenti.When you load an application onto the Azure Sphere device, the Azure Sphere deployment tools by default delete all existing applications. Per evitare che ciò accada quando si sviluppano applicazioni che comunicano tra loro, è necessario contrassegnare le applicazioni come partner.To prevent this from happening when you develop applications that communicate with each other, you need to mark the applications as partners. Quando si distribuisce una delle applicazioni, i relativi partner non verranno eliminati.When you deploy one of the applications, its partners will not be deleted. Per informazioni dettagliate, vedere Contrassegnare le applicazioni come partner.See Mark applications as partners for details.

Risoluzione dei problemiTroubleshooting

Se si verificano problemi, vedere Risoluzione dei problemi delle applicazioni con funzionalità in tempo reale.If you encounter problems, see Troubleshooting real-time capable applications.