Share via


Een toepassing bouwen die geschikt is voor realtime

U kunt Visual Studio, Visual Studio Code of de opdrachtregel (CLI) gebruiken om realtime compatibele toepassingen (RTApps) op ongeveer dezelfde manier te ontwikkelen en fouten op te sporen als toepassingen op hoog niveau.

Voorwaarden

Ontwikkeling en foutopsporing inschakelen

Voordat u een voorbeeldtoepassing kunt bouwen op uw Azure Sphere-apparaat of hiervoor nieuwe toepassingen kunt ontwikkelen, moet u ontwikkeling en foutopsporing inschakelen. Azure Sphere-apparaten zijn standaard 'vergrendeld'; Dat wil gezegd hebben dat toepassingen die in ontwikkeling zijn, niet vanaf een pc mogen worden geladen en dat er geen foutopsporing van toepassingen is toegestaan. Het apparaat voorbereiden op foutopsporing verwijdert deze beperking en laadt software die nodig is voor foutopsporing en ontgrendelt apparaatmogelijkheden, zoals beschreven in Apparaatmogelijkheden en communicatie.

Als u fouten wilt opsporen in de realtime kernen, gebruikt u de opdracht azsphere device enable-development . Met deze opdracht configureert u het apparaat om toepassingen van een pc te accepteren voor foutopsporing en wordt het apparaat toegewezen aan de apparaatgroep Ontwikkeling, 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.

In Windows moet u de --enable-rt-core-debugging parameter toevoegen, waarmee de foutopsporingsservers en vereiste stuurprogramma's voor elk type kern op het apparaat worden geladen.

  1. Meld u aan bij Azure Sphere als u dit nog niet hebt gedaan:

    azsphere login
    
  2. Open een opdrachtregelinterface met behulp van PowerShell of Windows-opdrachtprompt met beheerdersbevoegdheden. Voor de --enable-rt-core-debugging parameter is beheerdersbevoegdheden vereist omdat er USB-stuurprogramma's voor het foutopsporingsprogramma worden geïnstalleerd.

  3. Voer de volgende opdracht in:

    azsphere device enable-development --enable-rt-core-debugging
    
  4. Sluit het venster nadat de opdracht is voltooid omdat er geen beheerdersbevoegdheden meer nodig zijn. Als best practice moet u altijd de laagste bevoegdheid gebruiken waarmee een taak kan worden uitgevoerd.

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

Ontwikkeling en foutopsporing inschakelen

Voordat u een voorbeeldtoepassing kunt bouwen op uw Azure Sphere-apparaat of hiervoor nieuwe toepassingen kunt ontwikkelen, moet u ontwikkeling en foutopsporing inschakelen. Azure Sphere-apparaten zijn standaard 'vergrendeld'; Dat wil gezegd hebben dat toepassingen die in ontwikkeling zijn, niet vanaf een pc mogen worden geladen en dat er geen foutopsporing van toepassingen is toegestaan. Het apparaat voorbereiden op foutopsporing verwijdert deze beperking en laadt software die nodig is voor foutopsporing en ontgrendelt apparaatmogelijkheden, zoals beschreven in Apparaatmogelijkheden en communicatie.

Als u fouten wilt opsporen in de realtime kernen, gebruikt u de opdracht azsphere device enable-development . Met deze opdracht configureert u het apparaat om toepassingen van een pc te accepteren voor foutopsporing en wordt het apparaat toegewezen aan de apparaatgroep Ontwikkeling, 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.

In Windows moet u de --enable-rt-core-debugging parameter toevoegen, waarmee de foutopsporingsservers en vereiste stuurprogramma's voor elk type kern op het apparaat worden geladen.

  1. Meld u aan bij Azure Sphere als u dit nog niet hebt gedaan:

    azsphere login
    
  2. Open een opdrachtregelinterface met Behulp van PowerShell, Windows-opdrachtprompt of Linux-opdrachtshell met beheerdersbevoegdheden. Voor de --enable-rt-core-debugging parameter is beheerdersbevoegdheden vereist omdat er USB-stuurprogramma's voor het foutopsporingsprogramma worden geïnstalleerd.

  3. Voer de volgende opdracht in:

    azsphere device enable-development --enable-rt-core-debugging
    
  4. Sluit het venster nadat de opdracht is voltooid omdat er geen beheerdersbevoegdheden meer nodig zijn. Als best practice moet u altijd de laagste bevoegdheid gebruiken waarmee een taak kan worden uitgevoerd.

Als de opdracht azsphere device enable-development mislukt met het volgende foutbericht, raadpleegt u Problemen met Azure Sphere oplossen voor hulp.

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'.

De RTApp bouwen met Visual Studio Code

Een RTApp bouwen:

  1. Open in Visual Studio Code de map HelloWorld_RTApp_MT3620_BareMetal in uw kloon van de Azure Sphere-voorbeeldopslagplaats. Als u wordt gevraagd een kit te selecteren, kiest u 'Geen kit gebruiken'.

  2. Druk op F5 om het foutopsporingsprogramma te starten. Als het project nog niet eerder is gebouwd of als bestanden zijn gewijzigd en opnieuw moeten worden opgebouwd, wordt het project door Visual Studio Code gebouwd voordat de foutopsporing wordt gestart.

  3. De verbonden terminalemulator moet uitvoer van de toepassing weergeven. Het programma verzendt de volgende woorden met intervallen van één seconde:

    Tick

    Tock

    Opmerking

    Visual Studio Code biedt Intellisense, maar wordt niet automatisch bijgewerkt wanneer u CMakeLists.txt wijzigt. U moet de opdracht CMake: Cache verwijderen en Opnieuw configureren uitvoeren om Intellisense te vernieuwen. De weergave CMake-doelen vindt u in de weergave CMake-extensie op de linkerbalk.

De RTApp bouwen met Visual Studio

Een RTApp bouwen:

  1. Selecteer in Visual Studio Bestand>CMake en navigeer naar de map met het voorbeeld.

  2. Als het genereren van CMake niet automatisch wordt gestart, selecteert u het CMakeLists.txt-bestand.

  3. In Visual Studio bekijkt u>Uitvoer weergeven>Uitvoer weergeven van: CMake-uitvoer moet de berichten CMake generation started. en CMake generation finished.

  4. Selecteer in het menu CMake (indien aanwezig) de optie Alles samenstellen. Als het menu niet aanwezig is, opent u Solution Explorer, klikt u met de rechtermuisknop op het bestand CMakeLists.txt en selecteert u Bouwen. De uitvoerlocatie van de Azure Sphere-toepassing wordt weergegeven in het venster Uitvoer .

  5. Druk op F5 om de toepassing te implementeren.

  6. De verbonden terminalemulator moet uitvoer van de toepassing weergeven. Het programma verzendt de volgende woorden met intervallen van één seconde:

    Tick

    Tock

    Opmerking

    • Visual Studio biedt Intellisense voor Azure Sphere RTApps door gegevens te verzamelen uit de CMake-cache. Visual Studio werkt de cache bij wanneer het CMakeLists.txt- of CMakeSettings.json-bestand in de RTApp verandert.

    • Visual Studio maakt standaard gebruik van de mapweergave. Als u liever een logische weergave van het CMake-project hebt, kunt u de weergave CMake-doelen wijzigen. Selecteer in Solution Explorer het mapknoppictogram:

      Schakelen tussen oplossings- en mapweergaven

      Selecteer in de vervolgkeuzelijst CMake-doelenweergave.

    • De toepassing kan worden uitgevoerd voordat OpenOCD verbinding maakt. Hierdoor kunnen onderbrekingspunten die vroeg in de code zijn ingesteld, worden gemist. Een eenvoudige tijdelijke oplossing hiervoor is het starten van de app uit te stellen totdat OpenOCD verbinding maakt.

      1. Voeg de volgende code in aan het begin van het toepassingsinvoerpunt RTCoreMain. Hierdoor wordt de toepassing in een lus ingevoerd en blijft deze in een while lus totdat de variabele f is ingesteld op true.

          volatile bool f = false;
          while (!f) {
            // empty.
          }
        
      2. Druk op F5 om de app te starten met foutopsporing en begin vervolgens met de uitvoering.

      3. Wijzig in het deelvenster Lokale foutopsporing de waarde van f van nul in één.

      4. Doorloop de code zoals gewoonlijk.

RTApp bouwen met behulp van de CLI

In de volgende instructies wordt ervan uitgegaan dat u CMake gebruikt. Als u liever op de opdrachtregel bouwt zonder CMake te gebruiken, kunt u de juiste compiler- en linkeropties bepalen door te kijken naar de bestanden AzureSphereToolchainBase.cmake en AzureSphereRTCoreToolchain.cmake, die zijn geïnstalleerd met de Azure Sphere SDK.

  1. Open een opdrachtregelinterface met behulp van PowerShell, Windows-opdrachtprompt of Linux-opdrachtshell. Navigeer naar de map van uw projectbuild.

  2. 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 HelloWorld RTApp:

    Windows-opdrachtprompt

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

    Windows PowerShell

    cmake `
    --preset "ARM-Debug" `
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    
  3. 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 .

  4. Verwijder alle toepassingen die al op het apparaat zijn geïmplementeerd:

    azsphere device sideload delete
    
  5. Implementeer het installatiekopieënpakket dat Ninja heeft gemaakt:

    azsphere device sideload deploy --image-package <package-name>
    
  6. Haal de onderdeel-id voor de installatiekopieën op:

    azsphere image-package show --image-package <path-to-imagepackage>
    

    De opdracht retourneert alle metagegevens voor het installatiekopieënpakket. De onderdeel-id voor de toepassing wordt weergegeven in de sectie Identiteit voor het type toepassingsafbeelding. Bijvoorbeeld:

    Image package metadata:
    Section: Identity
    Image Type:           Application
    Component ID:         <component id>
    Image ID:             <image id>
    
  7. Bepaal op welke kern uw app wordt uitgevoerd.

    Standaard wordt de RTApp geïmplementeerd in de eerste beschikbare realtime kern op het apparaat; u kunt momenteel geen bepaalde kern opgeven. Als u wilt achterhalen op welke kern de toepassing wordt uitgevoerd, gebruikt u de opdracht azsphere device app om de toepassing te stoppen en vervolgens opnieuw te starten. Geef de onderdeel-id voor de toepassing op in de opdrachten. Bijvoorbeeld:

    azsphere device app stop --component-id <component id>
    <component id>: App state: stopped
    
    azsphere device app start --component-id <component id>
    <component id>
    App state: running
    Core     : Real-time 0
    
  8. De verbonden terminalemulator moet uitvoer van de toepassing weergeven. Het programma verzendt de volgende woorden met intervallen van één seconde:

    Tick

    Tock

Logboekuitvoer van een RTApp

Elke realtime kern op de MT3620 heeft een toegewezen UART die is bedoeld voor de uitvoer van logboekregistratie. De realtime kernen hebben ook toegang tot de ISU UART's. De MT3620 RDB geeft alleen de TX-pincode weer, die u kunt gebruiken om logboekuitvoer van de toepassing weer te geven. Andere hardware kan dit anders of helemaal niet blootstellen. Als u de logboekuitvoer wilt zien, stelt u de hardware in om deze uitvoer weer te geven, zoals beschreven in de quickstart. Voor de toegewezen UART is de vereiste voor het Uart toepassingsmanifest niet vereist; deze mag echter niet worden gebruikt voor andere doeleinden dan het vastleggen van uitvoer voor een RTApp.

Ontwikkelen met partner-apps

Wanneer u een toepassing op het Azure Sphere-apparaat laadt, worden met de Azure Sphere-implementatiehulpprogramma's standaard alle bestaande toepassingen verwijderd. Om dit te voorkomen wanneer u toepassingen ontwikkelt die met elkaar communiceren, moet u de toepassingen markeren als partners. Wanneer u een van de toepassingen implementeert, worden de bijbehorende partners niet verwijderd. Zie Toepassingen markeren als partners voor meer informatie.

Probleemoplossing

Als u problemen ondervindt, raadpleegt u Problemen met realtime compatibele toepassingen oplossen.

Aanvullende resources

Aanvullende stuurprogramma's en voorbeelden voor RTApps die gericht zijn op de realtime kernen van M4 op de MT3620-chip, zijn beschikbaar op GitHub van Azure Sphere-partners: