Partnertoepassingen maken

De eenvoudigste manier om een nieuw paar partnertoepassingen te maken, is door een map op het hoogste niveau te maken die zowel toepassingen op hoog niveau als realtime-compatibele toepassingen bevat, en vervolgens de apps op hoog niveau en realtime-compatibele apps te maken.

Een app op hoog niveau maken

Als u een toepassing op hoog niveau wilt maken, begint u met de HLCore Blank-sjabloon uit de Visual Studio Code Azure Sphere-extensie en past u de configuratie aan uw project aan door de volgende stappen uit te voeren:

  1. Start Visual Studio Code. Selecteer Opdrachtpalet weergeven> en typ vervolgens Azure Sphere: Nieuw project genereren.

    Opdrachtbalk in Visual Studio-code

  2. Kies HLCore Leeg in het menu Sjablonen.

    snelmenu met sjabloonnamen

  3. Visual Studio Code geeft vervolgens een Bestandenverkenner-venster weer. Navigeer naar de map waarin u de lege toepassing wilt plaatsen (of selecteer Nieuwe map en maak een nieuwe partnerprojectmap op het hoogste niveau) en geef een naam op voor uw project, bijvoorbeeld NewHLApp. Visual Studio Code maakt de map NewHLApp op de geselecteerde locatie en genereert de buildbestanden voor de lege toepassing. U ziet nu berichten van CMake.

  4. Open het bestand CMakeLists.txt en geef de map op die definities bevat voor de hardware die u gebruikt. De HLCore Blank-toepassing bevat standaard geen hardwaredefinities. U kunt voorbeeldhardwaredefinities vinden in de opslagplaats Azure Sphere-voorbeelden of er een maken zoals beschreven in Hardwaredefinities.

    Hieronder ziet u hoe u de voorbeeldhardwaredefinities toevoegt voor de Seeed Azure Sphere MT3620 Development Kit:

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

    Deze regel moet worden ingevoegd voordat de laatste opdracht begint azsphere_target_add_image_package.

U kunt ook een nieuwe toepassing op hoog niveau maken op een van de Azure Sphere-voorbeelden op hoog niveau:

  1. Kloon de opslagplaats voor voorbeelden als u dit nog niet hebt gedaan. Kopieer een van de toepassingsmappen op hoog niveau en wijzig de naam ervan voor uw project.

  2. Wijzig in het bestand CMakeLists.txt de naam van het project in de naam van de nieuwe map. Bijvoorbeeld:

    PROJECT(NewHLApp C)

Een RTApp maken

Als u een nieuwe realtimetoepassing wilt maken, begint u met de sjabloon RTCore Blank uit de Azure Sphere-extensie van Visual Studio Code en past u de configuratie aan uw project aan door de volgende stappen uit te voeren:

  1. Start Visual Studio Code. Selecteer Opdrachtpalet weergeven> en typ vervolgens Azure Sphere: Nieuw project genereren.

    Opdrachtbalk in Visual Studio-code

  2. Kies RTCore Leeg in het menu Sjablonen.

    snelmenu met sjabloonnamen

  3. Visual Studio Code geeft vervolgens een Bestandenverkenner-venster weer. Navigeer naar de map met uw toepassingsmap op hoog niveau en geef een naam op voor uw project, bijvoorbeeld NewRTApp. Visual Studio Code maakt de map NewRTApp op de geselecteerde locatie en genereert de buildbestanden voor de lege toepassing. U ziet nu berichten van CMake.

U kunt ook een nieuwe, realtime geschikte toepassing maken vanuit een van de realtime compatibele Azure Sphere-voorbeelden:

  1. Kloon de opslagplaats voor voorbeelden als u dit nog niet hebt gedaan. Kopieer een van de toepassingsmappen op hoog niveau en wijzig de naam ervan voor uw project.

  2. Wijzig in het bestand CMakeLists.txt de naam van het project in de naam van de nieuwe map. Bijvoorbeeld:

    PROJECT(NewRTApp C)

Uw werkruimte configureren voor de ontwikkeling van partner-apps

Als u uw toepassing op hoog niveau en realtime compatibele toepassingen effectief wilt koppelen voor ontwikkeling, combineert u uw twee toepassingen als volgt in één werkruimte met meerdere hoofdmaps:

  1. Open de toepassingsmap op hoog niveau in Visual Studio Code.

  2. Selecteer Bestand>Map toevoegen aan werkruimte en selecteer vervolgens de toepassingsmap die in realtime kan worden uitgevoerd.

  3. Selecteer Bestand>Werkruimte opslaan als... en sla het bestand vervolgens op in de map die zowel de realtime compatibele toepassingen als toepassingen op hoog niveau bevat.

  4. Open het werkruimtebestand in een teksteditor en voeg direct na de "settings" regel de volgende startgegevens toe:

    "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": []
    }

Zie de documentatie van Visual Studio Code voor meer informatie over werkruimten met meerdere hoofdmappen.

Een app op hoog niveau maken

Als u een nieuwe toepassing op hoog niveau wilt maken, begint u met de HLCore Blank-sjabloon uit de Visual Studio Azure Sphere-extensie en past u de configuratie aan uw project aan door de volgende stappen uit te voeren:

  1. Start Visual Studio en selecteer Een nieuw project maken.

  2. Typ Azure Sphere in het zoekvak met het label Zoeken naar sjablonen. Selecteer Azure Sphere HLCore Blank in de geretourneerde lijst en selecteer vervolgens Volgende.

  3. Geef een projectnaam op (bijvoorbeeld NewHLApp), een projectbestandslocatie en een oplossingsnaam (die hetzelfde kan zijn als de projectnaam) en selecteer vervolgens Maken. Visual Studio maakt de map NewHLpp op de geselecteerde locatie en genereert de buildbestanden voor de lege toepassing. U ziet nu berichten van CMake.

  4. Open het bestand CMakeLists.txt en geef de map op die definities bevat voor de hardware die u gebruikt. Standaard bevat de HL Blank-toepassing geen hardwaredefinities. U kunt voorbeeldhardwaredefinities vinden in de opslagplaats Azure Sphere-voorbeelden of er een maken zoals beschreven in Hardwaredefinities.

    Hieronder ziet u hoe u de voorbeeldhardwaredefinities toevoegt voor de Seeed Azure Sphere MT3620 Development Kit:

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

    Deze regel moet worden ingevoegd voordat de laatste opdracht begint azsphere_target_add_image_package.

U kunt ook een nieuwe toepassing op hoog niveau maken op een van de Azure Sphere-voorbeelden op hoog niveau:

  1. Kloon de opslagplaats voor voorbeelden als u dit nog niet hebt gedaan. Kopieer een van de toepassingsmappen op hoog niveau en wijzig de naam ervan voor uw project.

  2. Wijzig in het bestand CMakeLists.txt de naam van het project in de naam van de nieuwe map. Bijvoorbeeld:

    PROJECT(NewHLApp C)

Een RTApp maken

Als u een nieuwe, realtime geschikte toepassing wilt maken, begint u met de sjabloon RTCore Blank uit de Visual Studio Azure Sphere-extensie en past u de configuratie aan uw project aan door de volgende stappen uit te voeren:

  1. Start Visual Studio en selecteer Een nieuw project maken.

  2. Typ Azure Sphere in het zoekvak met het label Zoeken naar sjablonen. Selecteer Azure Sphere RTCore Blank in de geretourneerde lijst en selecteer vervolgens Volgende.

  3. Geef een projectnaam op (bijvoorbeeld NewRTApp), een projectbestandslocatie en de naam van de oplossing die u hebt gebruikt voor uw toepassing op hoog niveau en selecteer vervolgens Maken. Visual Studio maakt de map NewRTApp op de geselecteerde locatie en genereert de buildbestanden voor de lege toepassing. U ziet nu berichten van CMake.

U kunt ook een nieuwe, realtime geschikte toepassing maken vanuit een van de realtime compatibele Azure Sphere-voorbeelden:

  1. Kloon de opslagplaats voor voorbeelden als u dit nog niet hebt gedaan. Kopieer een van de in realtime geschikte toepassingsmappen en wijzig de naam van deze map voor uw project.

  2. Wijzig in het bestand CMakeLists.txt de naam van het project in de naam van de nieuwe map. Bijvoorbeeld:

    PROJECT(NewRTApp C)

Een Visual Studio-startbestand op het hoogste niveau maken

Als u tegelijkertijd met partnertoepassingen wilt werken, wilt u toestaan dat Visual Studio fouten in meerdere kernen kan opsporen. U kunt dit inschakelen door een launch.vs.json-bestand te maken in de map op het hoogste niveau met de twee partnertoepassingsmappen. Dit bestand moet inhoud hebben die er ongeveer als volgt uitziet:

{
  "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" ]
    }
  ]
}

De "project" regel moet het relatieve pad naar het CMakeLists.txt-bestand van de toepassing op hoog niveau bevatten en de "partnerComponents" regel moet de onderdeel-id's van de twee partnertoepassingen bevatten.

Zodra u dit bestand launch.vs.json op het hoogste niveau hebt gemaakt, kunt u Visual Studio openen in de map op het hoogste niveau en ziet u de optie Azure Sphere-apps (alle kernen) in het menu Opstartitem selecteren .

Een CMakeWorkspaceSettings.json-bestand maken

Als u Visual Studio 2022, versie 17.1 of hoger gebruikt en u een project hebt met meerdere wortels, zoals het IntercoreComms-voorbeeld, moet u een CMakeWorkspaceSettings.json-bestand toevoegen aan de map op het hoogste niveau van het project. Het bestand heeft twee vermeldingen, één om op te geven dat CMake-build is ingeschakeld en één met de paden naar de meerdere wortels. Voor het IntercoreComms-voorbeeld heeft de CMakeWorkspaceSettings.json bijvoorbeeld de volgende inhoud:

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

De paden worden opgegeven ten opzichte van de map die het bestand CMakeWorkspaceSettings.json bevat.

Een app op hoog niveau maken

Als u een nieuwe toepassing op hoog niveau wilt maken, begint u met een van de Azure Sphere-voorbeelden op hoog niveau:

  1. Kloon de opslagplaats voor voorbeelden als u dit nog niet hebt gedaan. Kopieer een van de toepassingsmappen op hoog niveau en wijzig de naam ervan voor uw project.

  2. Wijzig in het bestand CMakeLists.txt de naam van het project in de naam van de nieuwe map. Bijvoorbeeld:

    PROJECT(NewHLApp C)

Een RTApp maken

De eenvoudigste manier om een nieuwe realtime toepassing te maken, is door te beginnen met het HelloWorld_RTApp_MT3620_BareMetal voorbeeld en de configuratie aan te passen aan uw project door de volgende stappen uit te voeren:

  1. Kloon de opslagplaats voor voorbeelden als u dit nog niet hebt gedaan. Kopieer de map HelloWorld_RTApp_MT3620_BareMetal en wijzig de naam van de map voor uw project.

  2. Wijzig in het bestand CMakeLists.txt de naam van het project in de naam van de nieuwe map. Bijvoorbeeld:

    PROJECT(NewRTApp C)

Basisbestandsstructuur van Azure Sphere-toepassingen

Ongeacht hoe u uw toepassing maakt, delen alle Azure Sphere-toepassingen de volgende kernbestanden:

  • Toepassingsbroncode in een of meer bestanden. Op dit moment wordt alleen de broncode van de C-taal ondersteund.
  • CMake build-bestanden. CMakeLists.txt is vereist. CMake wordt samen met het ninja lightweight build-hulpprogramma gebruikt om het buildproces van de Azure Sphere-toepassing te beheren.
  • Een app-manifestbestand met een beschrijving van de mogelijkheden die beschikbaar zijn voor de toepassing.

Toepassingen op hoog niveau hebben doorgaans ten minste drie andere bestanden:

  • Een bestand applibs-versions.h om de versieniveaus van verschillende Azure Sphere-API's op te geven
  • Twee hardwaredefinitiebestanden (een bewerkbare versie in JSON-indeling en een C-taal bevatten een bestand dat daaruit is gegenereerd) die een handige manier bieden om te verwijzen naar hardwareonderdelen in uw code. Met een consistente set hardwaredefinitiebestanden kunt u hardwareonafhankelijke broncode schrijven en vervolgens toepassingsinstallatiekopieën bouwen voor specifieke hardware door het juiste hardwaredefinitiebestand in uw CMakeLists.txt-bestand opnieuw te richten.

Toepassingen die in realtime geschikt zijn, voegen ten minste één ander bestand toe: een linker.ld-bestand om precies op te geven waar verschillende onderdelen van de toepassing moeten worden geladen op de realtime kern.

Uw app-code op hoog niveau schrijven

  1. Schrijf uw toepassingscode op hoog niveau met behulp van de voorbeelden van azure Sphere-apps op hoog niveau als handleidingen. In de volgende onderwerpen worden specifieke implementatiescenario's beschreven:
  2. In het CMakeLists.txt-bestand:
    • Revisie van Azure Sphere SDK-hulpprogramma's opgeven
    • Doel-API-set opgeven
    • De doelhardware opgeven
  3. In het bestand app_manifest.json:
    • Stel in Name op de naam van uw project.
    • Voeg toepassingsspecifieke mogelijkheden toe die uw code vereist, zoals hardwareresources of verbindingen. Als de app op hoog niveau communiceert met een RTApp, voegt u de onderdeel-id van de toepassing op hoog niveau toe aan de AllowedApplicationConnections mogelijkheid.
  1. Als u uw RTApp wilt implementeren naast een partner-app op hoog niveau, voegt u de onderdeel-id van de partner toe aan het veld partnerComponents van de sectie configuraties van het bestand launch.vs.json (Visual Studio) of .vscode/launch.json (Visual Studio Code):

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

Uw RTApp-code schrijven

  1. Schrijf uw RTApp-code met behulp van de Azure Sphere RTApp-voorbeelden als handleidingen. In de volgende onderwerpen worden specifieke implementatiescenario's beschreven:
  2. In het bestand app_manifest.json:
    • Stel in Name op uw projectnaam,
    • Instellen ApplicationType op "RealTimeCapable"
    • Voeg toepassingsspecifieke mogelijkheden toe die uw code vereist, zoals hardwareresources of verbindingen. Als de RTApp communiceert met een app op hoog niveau, voegt u de onderdeel-id van de toepassing op hoog niveau toe aan de AllowedApplicationConnections mogelijkheid.
  1. Als u uw RTApp wilt implementeren naast een partner-app op hoog niveau, voegt u de onderdeel-id van de partner toe aan het veld partnerComponents van de sectie configuraties van het bestand launch.vs.json (Visual Studio) of .vscode/launch.json (Visual Studio Code):

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

Zie ook