Zelfstudie: Een toepassing op hoog niveau bouwen

Een toepassing op hoog niveau wordt uitgevoerd op het Azure Sphere-besturingssysteem, maakt gebruik van de Azure Sphere-toepassingsbibliotheken en kan communiceren met internet en met cloudservices. Zie Overzicht van Azure Sphere-toepassingen voor basisinformatie over toepassingen op hoog niveau.

In deze zelfstudie leert u het volgende:

  • Uw apparaat voorbereiden op ontwikkeling en foutopsporing
  • Een toepassing op hoog niveau bouwen, uitvoeren en fouten opsporen

Voorwaarden

Uw apparaat voorbereiden op ontwikkeling en foutopsporing

Voordat u een voorbeeldtoepassing op uw Azure Sphere-apparaat kunt bouwen of er nieuwe toepassingen voor kunt ontwikkelen, moet u ontwikkeling en sideloading inschakelen. Azure Sphere-apparaten zijn standaard 'vergrendeld'; Dat wil gezegd, ze staan niet toe dat toepassingen die in ontwikkeling zijn vanaf een computer worden geladen en ze staan geen foutopsporing van toepassingen toe. Als u het apparaat voorbereidt op sideloaden, wordt deze beperking verwijderd.

De opdracht az sphere device enable-development configureert het apparaat om toepassingen voor foutopsporing te accepteren, laadt de foutopsporingsserver op het apparaat en wijst het apparaat toe aan een apparaatgroep die geen updates van cloudtoepassingen toestaat. Tijdens het ontwikkelen van toepassingen en foutopsporing moet u het apparaat in deze groep laten zodat cloudtoepassingsupdates de toepassing in ontwikkeling niet overschrijven.

  1. Zorg ervoor dat uw Azure Sphere-apparaat is verbonden met uw computer en dat uw computer is verbonden met internet.

  2. Open een opdrachtregelinterface met behulp van PowerShell, Windows-opdrachtprompt of Linux-opdrachtshell.

  3. Voer de volgende opdracht in:

    az sphere device enable-development --resource-group <ResourceGroupName> --catalog <CatalogName> --device <DeviceIdValue>
    

    De uitvoer ziet er ongeveer als volgt uit:

    Getting device capability configuration for application development.
    Downloading device capability configuration for device ID '<device ID>'.
    Successfully downloaded device capability configuration.
    Successfully wrote device capability configuration file 'C:\Users\user\AppData\Local\Temp\tmpD732.tmp'.
    Setting device group ID 'a6df7013-c7c2-4764-8424-00cbacb431e5' for device with ID '<device ID>'.
    Successfully disabled over-the-air updates.
    Enabling application development capability on attached device.
    Applying device capability configuration to device.
    Successfully applied device capability configuration to device.
    The device is rebooting.
    Installing debugging server to device.
    Deploying 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' to the attached device.
    Image package 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' has been deployed to the attached device.
    Application development capability enabled.
    Successfully set up device '<device ID>' for application development, and disabled over-the-air updates.
    Command completed successfully in 00:00:38.3299276.
    

Als de opdracht az sphere device enable-development mislukt, raadpleegt u Problemen met Azure Sphere oplossen voor hulp.

De toepassing op hoog niveau bouwen en uitvoeren met Visual Studio Code

In deze zelfstudie wordt gebruikgemaakt van de Azure Sphere Blink-sjabloon, die deel uitmaakt van de Azure Sphere-extensie voor Visual Studio Code. De Blink-sjabloon knippert een LED, zodat u kunt controleren of het Azure Sphere-apparaat en de hulpprogramma's correct zijn geïnstalleerd en ingesteld.

  1. Start Visual Studio Code. SelecteerOpdrachtpaletweergeven> en typ vervolgens 'Azure Sphere: Nieuw project genereren'.

  2. Selecteer Blink in het menu Sjablonen.

  1. Visual Studio Code geeft vervolgens een Bestandenverkenner-venster weer. Navigeer naar de map waarin u de Blink-toepassing wilt plaatsen. Visual Studio Code maakt de map Blink op de geselecteerde locatie en genereert de buildbestanden voor de Blink-toepassing. U ziet nu berichten van CMake.

  2. Open het CMakeLists.txt-bestand en wijzig de instelling TARGET_DIRECTORY om de map op te geven die definities bevat voor de hardware die u gebruikt. Standaard geeft de TARGET_DIRECTORY HardwareDefinitions/mt3620_rbd op, die overeenkomt met de Seeed Azure Sphere MT3620 Development Kit:

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

    De sjabloon bevat verschillende hardwaredefinities. Als u bijvoorbeeld een SEEED MT3620 Mini Dev Board gebruikt, geeft u in plaats daarvan HardwareDefinitions/seeed_mt3620_mdb op.

  3. Druk op F5 om het project te bouwen en fouten op te sporen. Als het project nog niet eerder is gebouwd of als bestanden zijn gewijzigd en opnieuw moeten worden opgebouwd, bouwt Visual Studio Code het project voordat de foutopsporing wordt gestart.

  4. Wacht enkele seconden totdat Visual Studio Code de toepassing heeft gebouwd, een installatiekopieënpakket hebt gemaakt, het op het bord implementeert en in de foutopsporingsmodus start. U ziet onderweg statusupdates in het deelvenster Uitvoer .

    Eerst bepaalt CMake of de toepassing moet worden gebouwd. Als dat het zo is, wordt de focus verplaatst naar het uitvoervenster, waarin de uitvoer van CMake/Build wordt weergegeven.

    Vervolgens wordt in het uitvoervenster de uitvoer weergegeven terwijl het installatiekopieënpakket op het apparaat wordt geïmplementeerd. Ten slotte krijgt de foutopsporingsconsole de focus en wordt gdb-uitvoer weergegeven.

    Tip

    Noteer de locatie van uw installatiekopieënpakket, omdat u deze nodig hebt bij het maken van een implementatie. U ziet een bericht zoals 'Build files written to <path>' in het uitvoervenster , waarbij <pad> het volledige pad is naar de buildmap van uw Blink-toepassing, meestal eindigend op 'out\ARM-Debug' of 'out/ARM-Debug'.

  5. Na een korte vertraging ziet u een LED-knippering.

  6. Stel ergens in main.c een onderbrekingspunt in en doorloop de toepassing zodat u de foutopsporingsfuncties van Visual Studio Code voor Azure Sphere kunt verkennen.

De toepassing op hoog niveau bouwen en uitvoeren met Visual Studio

In deze zelfstudie wordt gebruikgemaakt van de Azure Sphere Blink-sjabloon, die deel uitmaakt van de Azure Sphere-extensie voor Visual Studio. De Blink-sjabloon knippert een LED, zodat u kunt controleren of het Azure Sphere-apparaat en de hulpprogramma's correct zijn geïnstalleerd en ingesteld.

  1. Als u nog geen ervaring hebt met Visual Studio, raadpleegt u de Quickstart of Rondleiding voor meer informatie over navigeren en gebruiken.

  2. Open Visual Studio en selecteer Een nieuw project maken. Typ in het vak Search 'azure sphere' om een lijst met Azure Sphere-sjablonen op te halen. Kies Azure Sphere Blink in de lijst.

  3. Voer een naam en locatie in voor het project en selecteer vervolgens Maken.

  4. Open het CMakeLists.txt-bestand en wijzig de instelling TARGET_DIRECTORY om de map op te geven die definities bevat voor de hardware die u gebruikt. Standaard geeft de TARGET_DIRECTORY HardwareDefinitions/mt3620_rbd op, die overeenkomt met de Seeed Azure Sphere MT3620 Development Kit:

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

    De sjabloon bevat verschillende hardwaredefinities. Als u bijvoorbeeld een SEEED MT3620 Mini Dev Board gebruikt, geeft u in plaats daarvan HardwareDefinitions/seeed_mt3620_mdb op.

  5. Selecteerin Visual Studio Uitvoer weergeven> om het deelvenster Uitvoer weer te geven.

  6. Zorg ervoor dat uw apparaat via USB is aangesloten op uw pc. Druk in het menu Opstartitem instellen op F5 of selecteer Azure Sphere-app (HLCore)* waarbij Azure Sphere-app de naam is van uw huidige toepassing op hoog niveau.

  7. Als u wordt gevraagd het project te bouwen, selecteert u Ja. Visual Studio compileert de toepassing, maakt een installatiekopieënpakket, sideloadt het op het bord en start deze in de foutopsporingsmodus. Sideloading betekent dat de toepassing rechtstreeks vanaf de pc wordt geleverd via een bekabelde verbinding, in plaats van via de cloud.

    Tip

    Noteer de locatie van uw installatiekopieënpakket, omdat u deze nodig hebt bij het maken van een implementatie. U ziet een bericht zoals 'Uitvoerbestand is op: <pad>' in de uitvoer inUitvoer>weergeven>Uitvoer weergeven uitvoer van: Build, waarbij <pad> het volledige pad is naar de buildmap van uw Blink-toepassing, meestal eindigend op 'out/ARM-Debug'.

  8. In het deelvenster Uitvoer wordt standaard de uitvoer van Apparaatuitvoer weergegeven. Als u berichten uit het foutopsporingsprogramma wilt zien, selecteert u Foutopsporing in de vervolgkeuzelijst Uitvoer weergeven van: . U kunt ook de demontage van het programma, de registers of het geheugen controleren via het menu Foutopsporing>in Windows .

  9. Wanneer u het programma uitvoert, ziet u een LED-knippering.

De voorbeeldtoepassing downloaden

U kunt de toepassing HelloWorld als volgt downloaden:

  1. Wijs uw browser naar Microsoft Samples Browser.
  2. Typ 'Azure Sphere' in het vak Search.
  3. Selecteer Azure Sphere - Hallo wereld in de zoekresultaten.
  4. Selecteer ZIP downloaden.
  5. Open het gedownloade bestand en pak het uit naar een lokale map.

Het voorbeeld bouwen

Volg deze stappen om de build- en .imagepackage-bestanden voor de HelloWorld_HighLevelApp voorbeeldtoepassing te maken.

  1. Werk het voorbeeld zo nodig bij om uw hardware te targeten. Standaard zijn de voorbeelden gericht op hardware die het MT3620-referentiebordontwerp (RDB) volgt, zoals de MT3620 Development Kit van Seeed Studios. Aanvullende doelhardwaredefinities voor de voorbeeldtoepassingen zijn beschikbaar in de map HardwareDefinitions van de Azure Sphere Samples-opslagplaats. De hardwaredefinitiebestanden voor de Avnet MT3620 Starter Kit bevinden zich bijvoorbeeld in de submap HardwareDefinitions/avnet_mt3620_sk.

    • Open CMakeLists.txt en werk de parameter TARGET_DIRECTORY in de functie azure_target_hardware_definition bij zodat deze verwijst naar de submap voor uw hardware. Bijvoorbeeld:

      azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "../../../HardwareDefinitions/avnet_mt3620_sk" TARGET_DEFINITION "sample_appliance.json")
      
  2. Open een opdrachtregelinterface met behulp van PowerShell, Windows-opdrachtprompt of Linux-opdrachtshell. Navigeer naar de map van uw projectbuild.

  3. Voer CMake uit vanuit de map van uw projectbuild, bij de opdrachtprompt, met de volgende parameters:

    cmake --preset <preset-name> <source-path>
    
    • --preset <preset-name>

      De vooraf ingestelde naam van de buildconfiguratie zoals gedefinieerd in CMakePresets.json.

    • --build <cmake-path>

      De binaire map die de CMake-cache bevat. Als u bijvoorbeeld CMake uitvoert op een Azure Sphere-voorbeeld, is cmake --build out/ARM-Debugde build-opdracht .

    • <source-path>

      Het pad van de map met de bronbestanden voor de voorbeeldtoepassing. In het voorbeeld is de opslagplaats azure Sphere-voorbeelden gedownload naar een map met de naam AzSphere.

      CMake-parameters worden gescheiden door spaties. Het regel vervolgteken (^ voor Windows-opdrachtregel, \ voor Linux-opdrachtregel of ' voor PowerShell) kan worden gebruikt voor leesbaarheid, maar is niet vereist.

    In de volgende voorbeelden ziet u de CMake-opdrachten voor de Hallo wereld app op hoog niveau:

    Windows-opdrachtprompt

     cmake ^
     --preset "ARM-Debug" ^
     "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp"
    

    Windows PowerShell

     cmake `
     --preset "ARM-Debug" `
     "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp"
    
  4. Voer Ninja uit om de toepassing te bouwen en het installatiekopieënpakketbestand te maken:

    ninja -C out/ARM-Debug
    

    Ninja plaatst de resulterende toepassings- en .imagepackage-bestanden in de opgegeven map.

    U kunt Ninja ook aanroepen via CMake met de volgende opdracht:

    cmake --build out/<binary-dir>
    

    Stel in <binary-dir> op de binaire map die de CMake-cache bevat. Als u bijvoorbeeld CMake uitvoert op een Azure Sphere-voorbeeld, is cmake --build out/ARM-Debugde build-opdracht .

    Bij het oplossen van problemen, met name nadat u wijzigingen hebt aangebracht in uw CMake-opdrachten, verwijdert u de volledige build en probeert u het opnieuw.

Het voorbeeld uitvoeren

  1. Als op uw apparaat al een toepassing wordt uitgevoerd, verwijdert u de toepassing:

    az sphere device sideload delete
    
  2. Ga naar de map met de build- en .imagepackage-bestanden die u eerder hebt gemaakt.

  3. Laad het installatiekopieënpakket op uw apparaat door de opdracht az sphere device sideload deploy uit te voeren en het installatiekopieënpakket op te geven. Bijvoorbeeld:

    az sphere device sideload deploy --image-package HelloWorld_HighLevelApp.imagepackage
    

    Met deze opdracht wordt het installatiekopieënpakket geladen en wordt de toepassing gestart. Als het goed is, ziet u een LED-knippering.

    Tip

    Noteer het pad van het installatiekopieënpakket. U gebruikt het installatiekopieënpakket verderop in de quickstart implementatie.

Fouten opsporen in het voorbeeld

  1. Ga naar de map met de build- en .imagepackage-bestanden die u eerder hebt gemaakt.

  2. Haal de onderdeel-id op als u deze nog niet hebt:

    az sphere image-package show --image-package HelloWorld_HighLevelApp.imagepackage
    
  3. Als de toepassing wordt uitgevoerd, stopt u deze en start u deze opnieuw met de --debug-mode optie:

    az sphere device app stop --component-id <ComponentId>
    
    az sphere device app start --debug-mode --component-id <ComponentId>
    

    U ziet het volgende:

     ...
       "Identity": {
         "ComponentId": "<component-id>",
         "ImageId": "<image-id>",
         "ImageType": "Application"
       },
     ...
    
  4. Gebruik een terminalclient om een Telnet- of onbewerkte TCP-verbinding tot stand te brengen om de uitvoerstroom van het proces te lezen. Geef 192.168.35.2 op als het IP-adres en 2342 als poort.

  5. Open een opdrachtregelinterface met behulp van PowerShell of een standaardopdrachtprompt in Windows of een opdrachtshell in Linux en geef het binaire bestand van de .out-app door vanuit uw build als parameter. Hierdoor wordt volledige foutopsporing van broncode ingeschakeld.

    Windows-opdrachtprompt

    "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
    

Opmerking

De Azure Sphere SDK wordt geleverd met meerdere sysroots , zodat toepassingen zich kunnen richten op verschillende API-sets, zoals beschreven in Application Runtime-versie, sysroots en beta-API's. De sysroots worden geïnstalleerd in de Azure Sphere SDK-installatiemap onder Sysroots.

  1. Stel het doel voor externe foutopsporing in op IP-adres 192.168.35.2 op poort 2345:

    target remote 192.168.35.2:2345

  2. Voer alle andere gdb-opdrachten uit die u kiest. Met de volgende opdrachten stelt u bijvoorbeeld een onderbrekingspunt in op main() en gaat u vervolgens door met de uitvoering na het onderbrekingspunt.

    break main
    
    c
    

    Zie GDB: The GNU Project Debugger of een van de andere talrijke bronnen over dit onderwerp voor meer informatie over foutopsporing met gdb.

Volgende stappen

U hebt een toepassing op hoog niveau gebouwd om uit te voeren op uw Azure Sphere-apparaat. U kunt deze nu wijzigen. In hardwaredefinities wordt beschreven hoe u een JSON-bestand met hardwaredefinities bewerkt en het bijbehorende headerbestand opnieuw genereert.

Vervolgens leert u hoe u uw toepassing op hoog niveau implementeert vanuit de cloud.

Zie ook

Ga naar de Azure Sphere Gallery, een verzameling inspirerende, niet-onderhouden en herbruikbare Azure Sphere-scripts, -hulpprogramma's en -functies.