Condividi tramite


Creare applicazioni partner

Il modo più semplice per creare una nuova coppia di applicazioni partner consiste nel creare una directory di primo livello che contenga applicazioni in grado di supportare sia l'alto livello che in tempo reale, quindi creare a sua volta le app in grado di supportare le funzionalità di alto livello e in tempo reale.

Creare un'app di alto livello

Per creare un'applicazione di alto livello, inizia con il modello HLCore Blank dall'estensione Visual Studio Code Azure Sphere e regola la configurazione al tuo progetto seguendo questa procedura:

  1. Avvia Visual Studio Code. Seleziona Visualizza>tavolozza comandi, quindi digita Azure Sphere: Genera nuovo progetto.

    Barra dei comandi nel codice di Visual Studio

  2. Scegliere HLCore Blank dal menu Modelli.

    Menu a comparsa con i nomi dei modelli

  3. Visual Studio Code visualizza quindi una finestra Esplora file. Passare alla cartella in cui si vuole inserire l'applicazione vuota (o selezionare Nuova cartella e creare una nuova directory di progetto partner di primo livello) e specificare un nome per il progetto, ad esempio NewHLApp. Visual Studio Code crea la cartella NewHLApp nella posizione selezionata e genera i file di compilazione per l'applicazione vuota. Dovrebbero essere visualizzati i messaggi da CMake.

  4. Aprire il file CMakeLists.txt e specificare la cartella contenente le definizioni per l'hardware in uso. Per impostazione predefinita, l'applicazione HLCore Blank non contiene definizioni hardware. È possibile trovare definizioni hardware di esempio nel repository Azure Sphere Samples o crearne una come descritto in Definizioni hardware.

    Di seguito viene illustrato come aggiungere le definizioni hardware di esempio per il Kit di sviluppo Seeed Azure Sphere MT3620:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")

    Questa riga deve essere inserita prima dell'inizio azsphere_target_add_image_packagedel comando finale.

Puoi anche creare una nuova applicazione di alto livello da uno dei campioni azure sphere di alto livello:

  1. Clonare il repository dei campioni , se non l'hai già fatto. Copiare una delle cartelle di applicazioni di alto livello e rinominarla per il progetto.

  2. Nel file CMakeLists.txt modificare il nome del progetto con il nome della nuova cartella. Per esempio:

    PROJECT(NewHLApp C)

Creare un'RTApp

Per creare una nuova applicazione in tempo reale, inizia con il modello VUOTO RTCore dall'estensione Visual Studio Code Azure Sphere e regola la configurazione al progetto seguendo questa procedura:

  1. Avvia Visual Studio Code. Seleziona Visualizza>tavolozza comandi, quindi digita Azure Sphere: Genera nuovo progetto.

    Barra dei comandi nel codice di Visual Studio

  2. Scegliere RTCore Blank dal menu Modelli.

    Menu a comparsa con i nomi dei modelli

  3. Visual Studio Code visualizza quindi una finestra Esplora file. Passare alla cartella che contiene la cartella dell'applicazione di alto livello e specificare un nome per il progetto, ad esempio NewRTApp. Visual Studio Code crea la cartella NewRTApp nella posizione selezionata e genera i file di compilazione per l'applicazione vuota. Dovrebbero essere visualizzati i messaggi da CMake.

È anche possibile creare una nuova applicazione in tempo reale che supporta i campioni azure sphere in tempo reale:

  1. Clonare il repository dei campioni , se non l'hai già fatto. Copiare una delle cartelle di applicazioni di alto livello e rinominarla per il progetto.

  2. Nel file CMakeLists.txt modificare il nome del progetto con il nome della nuova cartella. Per esempio:

    PROJECT(NewRTApp C)

Configurare l'area di lavoro per lo sviluppo di app partner

Per unire in modo efficace l'applicazione di alto livello e l'applicazione in tempo reale per lo sviluppo, combinare le due applicazioni in un unico spazio di lavoro multi-radice come segue:

  1. Aprire la cartella dell'applicazione di livello elevato in Visual Studio Code.

  2. Seleziona Aggiungi cartella file>all'area di lavoro e quindi seleziona la cartella dell'applicazione che supporta il supporto in tempo reale.

  3. SelezionareSalva area di lavoro file> con nome... e quindi salvare il file nella cartella che contiene sia le applicazioni che supporta il salvataggio in tempo reale che le applicazioni di alto livello.

  4. Aprire il file dell'area di lavoro in un editor di testo e aggiungere le informazioni di avvio seguenti subito dopo la "settings" riga:

    "launch": {
        "configurations": [{
            "name": "Launch Azure Sphere Apps (All Cores)",
            "type": "azurespheredbg",
            "request": "launch",
            "args": [],
            "stopAtEntry": false,
            "environment": [],
            "externalConsole": true,
            "partnerComponents": [],
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }],
        "compounds": []
    }

Per altre informazioni sulle aree di lavoro multi root, vedere la documentazione di Visual Studio Code .

Creare un'app di alto livello

Per creare una nuova applicazione di alto livello, inizia con il modello HLCore Blank dall'estensione Visual Studio Azure Sphere e regola la configurazione al tuo progetto seguendo questa procedura:

  1. Avviare Visual Studio e selezionare Crea un nuovo progetto.

  2. Digitare Azure Sphere nella casella di ricerca cerca modelli. Seleziona Azure Sphere HLCore Blank dall'elenco restituito, quindi seleziona Avanti.

  3. Specificare un nome di progetto (ad esempio, NewHLApp), un percorso del file di progetto e un nome di soluzione (che può essere uguale al nome del progetto), quindi selezionare Crea. Visual Studio crea la cartella NewHLpp nella posizione selezionata e genera i file di compilazione per l'applicazione vuota. Dovrebbero essere visualizzati i messaggi da CMake.

  4. Aprire il file CMakeLists.txt e specificare la cartella contenente le definizioni per l'hardware in uso. Per impostazione predefinita, l'applicazione HL Blank non contiene definizioni hardware. È possibile trovare definizioni hardware di esempio nel repository Azure Sphere Samples o crearne una come descritto in Definizioni hardware.

    Di seguito viene illustrato come aggiungere le definizioni hardware di esempio per il Kit di sviluppo Seeed Azure Sphere MT3620:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")

    Questa riga deve essere inserita prima dell'inizio azsphere_target_add_image_packagedel comando finale.

Puoi anche creare una nuova applicazione di alto livello da uno dei campioni azure sphere di alto livello:

  1. Clonare il repository dei campioni , se non l'hai già fatto. Copiare una delle cartelle di applicazioni di alto livello e rinominarla per il progetto.

  2. Nel file CMakeLists.txt modificare il nome del progetto con il nome della nuova cartella. Per esempio:

    PROJECT(NewHLApp C)

Creare un'RTApp

Per creare una nuova applicazione che supporta il tempo reale, inizia con il modello VUOTO RTCore dall'estensione Visual Studio Azure Sphere e regola la configurazione al tuo progetto seguendo questi passaggi:

  1. Avviare Visual Studio e selezionare Crea un nuovo progetto.

  2. Digitare Azure Sphere nella casella di ricerca cerca modelli. Seleziona Azure Sphere RTCore Blank nell'elenco restituito, quindi seleziona Avanti.

  3. Specificare il nome di un progetto, ad esempio NewRTApp, il percorso del file di progetto e il nome della soluzione usato per l'applicazione generale, quindi selezionare Crea. Visual Studio crea la cartella NewRTApp nella posizione selezionata e genera i file di compilazione per l'applicazione vuota. Dovrebbero essere visualizzati i messaggi da CMake.

È anche possibile creare una nuova applicazione in tempo reale che supporta i campioni azure sphere in tempo reale:

  1. Clonare il repository dei campioni , se non l'hai già fatto. Copiare una delle cartelle di applicazioni compatibili in tempo reale e rinominarla per il progetto.

  2. Nel file CMakeLists.txt modificare il nome del progetto con il nome della nuova cartella. Per esempio:

    PROJECT(NewRTApp C)

Creare un file di avvio di Visual Studio principale

Per lavorare con le applicazioni partner contemporaneamente, si desidera consentire a Visual Studio di eseguire il debug in più core. È possibile abilitare questa opzione creando un file launch.vs.json nella cartella di primo livello contenente le due cartelle dell'applicazione partner. Il file dovrebbe avere contenuto simile al seguente:

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "azurespheredbg",
      "name": "Azure Sphere Apps (All Cores)",
      "project": "PartnerAppsHL/CMakeLists.txt",
      "DebugBuildStepBuildAll": "true",
      "workingDirectory": "${workspaceRoot}",
      "applicationPath": "${debugInfo.target}",
      "imagePath": "${debugInfo.targetImage}",
      "targetCore": "AnyCore",
      "partnerComponents": [ "0cc81b35-08dd-4d65-b318-5fa73a4ff6b1", "a9d25f0a-807e-4cb9-80e8-80fee5a1bcb4" ]
    }
  ]
}

La "project" riga deve contenere il percorso relativo del file di CMakeLists.txt dell'applicazione di livello elevato e deve "partnerComponents" contenere gli ID componente delle due applicazioni partner.

Dopo aver creato questo file launch.vs.json di primo livello, puoi aprire Visual Studio nella cartella di primo livello e vedrai l'opzione Azure Sphere Apps (All Cores) nel menu Seleziona elemento di avvio .

Creare un file CMakeWorkspaceSettings.json

Se si usa Visual Studio 2022, versione 17.1 o successiva, e si ha un progetto con più nodi radice, ad esempio IntercoreComms esempio, sarà necessario aggiungere un file CMakeWorkspaceSettings.json alla cartella di primo livello del progetto. Il file contiene due voci, una per specificare che la build CMake è abilitata e una contenente i percorsi dei più radice. Per l'esempio IntercoreComms, ad esempio, CMakeWorkspaceSettings.json ha il contenuto seguente:

{
  "enableCMake": true,
  "sourceDirectory": [ "IntercoreComms_HighLevelApp", "IntercoreComms_RTApp_MT3620_BareMetal" ]
}

I percorsi vengono specificati in relazione alla cartella che contiene il file CMakeWorkspaceSettings.json.

Creare un'app di alto livello

Per creare una nuova applicazione di alto livello, inizia con uno dei campioni azure sphere di alto livello:

  1. Clonare il repository dei campioni , se non l'hai già fatto. Copiare una delle cartelle di applicazioni di alto livello e rinominarla per il progetto.

  2. Nel file CMakeLists.txt modificare il nome del progetto con il nome della nuova cartella. Per esempio:

    PROJECT(NewHLApp C)

Creare un'RTApp

Il modo più semplice per creare una nuova applicazione in tempo reale consiste nell'iniziare con l'esempio HelloWorld_RTApp_MT3620_BareMetal e modificare la configurazione del progetto seguendo questa procedura:

  1. Clonare il repository dei campioni , se non l'hai già fatto. Copiare la cartella HelloWorld_RTApp_MT3620_BareMetal e rinominarla per il progetto.

  2. Nel file CMakeLists.txt modificare il nome del progetto con il nome della nuova cartella. Per esempio:

    PROJECT(NewRTApp C)

Struttura di file di base delle applicazioni Azure Sphere

Indipendentemente da come crei l'applicazione, tutte le applicazioni Azure Sphere condividono i seguenti file di base:

  • Codice sorgente dell'applicazione in uno o più file. Attualmente è supportato solo il codice sorgente della lingua C.
  • CMake file di compilazione. CMakeLists.txt è obbligatorio. CMake, insieme all'utilità di compilazione leggera ninja, viene utilizzata per controllare il processo di compilazione dell'applicazione Azure Sphere.
  • Un file manifesto di app che descrive le funzionalità disponibili per l'applicazione.

Le applicazioni di alto livello in genere hanno almeno altri tre file:

  • Un file applibs-versions.h per specificare i livelli di versione delle varie API Azure Sphere
  • Due file di definizione hardware (una versione modificabile in formato JSON e un linguaggio C includono file generati da esso) che forniscono un modo pratico per fare riferimento ai componenti hardware nel codice. Con un set coerente di file di definizione hardware, è possibile scrivere codice sorgente indipendente dall'hardware e quindi creare immagini dell'applicazione per hardware specifico semplicemente reindirizzando il file di definizione hardware appropriato nel file di CMakeLists.txt.

Le applicazioni in tempo reale aggiungono almeno un altro file: un file linker.ld per specificare con precisione dove i vari componenti dell'applicazione devono essere caricati nel core in tempo reale.

Scrivi il codice dell'app di alto livello

  1. Scrivi il codice dell'applicazione di alto livello, usando gli esempi di app di alto livello Azure Sphere come guide. Gli argomenti seguenti descrivono scenari di implementazione specifici:
  2. Nel fileCMakeLists.txt:
    • Specificare la revisione degli strumenti di Azure Sphere SDK
    • Specificare il set di API di destinazione
    • Specificare l'hardware di destinazione
  3. Nel file app_manifest.json:
    • Impostare Name il nome del progetto.
    • Aggiungere le funzionalità specifiche dell'applicazione necessarie al codice, ad esempio le risorse hardware o le connessioni. Se l'app di alto livello comunica con un'RTApp, aggiungi l'ID componente dell'applicazione di alto livello alla AllowedApplicationConnections funzionalità.
  1. Se desideri distribuire la tua RTApp insieme a un'app partner di alto livello, aggiungi l'ID componente del partner al campo partnerComponents della sezione delle configurazioni del file launch.vs.json (Visual Studio) o .vscode/launch.json (Visual Studio Code):

    "partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

Scrivere il codice RTApp

  1. Scrivere il codice RTApp, usando gli esempi di Azure Sphere RTApp come guide. Gli argomenti seguenti descrivono scenari di implementazione specifici:
  2. Nel file app_manifest.json:
    • Imposta Name il nome del progetto,
    • Impostato su ApplicationType"RealTimeCapable"
    • Aggiungere le funzionalità specifiche dell'applicazione necessarie al codice, ad esempio le risorse hardware o le connessioni. Se l'RTApp comunica con un'app di alto livello, aggiungere l'ID componente dell'applicazione di livello elevato alla AllowedApplicationConnections funzionalità.
  1. Se desideri distribuire la tua RTApp insieme a un'app partner di alto livello, aggiungi l'ID componente del partner al campo partnerComponents della sezione delle configurazioni del file launch.vs.json (Visual Studio) o .vscode/launch.json (Visual Studio Code):

    "partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

Vedere anche