Sdílet prostřednictvím


Vytvoření aplikace podporující v reálném čase

Pomocí sady Visual Studio, Visual Studio Code nebo příkazového řádku (CLI) můžete vyvíjet a ladit aplikace podporující v reálném čase (RTApps) podobným způsobem jako aplikace vysoké úrovně.

Požadavky

Povolení vývoje a ladění

Než budete moct vytvořit ukázkovou aplikaci na zařízení Azure Sphere nebo pro ni vyvíjet nové aplikace, musíte povolit vývoj a ladění. Ve výchozím nastavení jsou zařízení Azure Sphere "uzamčená"; to znamená, že neumožňují načítání aplikací ve vývoji z počítače a neumožňují ladění aplikací. Příprava zařízení pro ladění toto omezení odebere a načte software potřebný k ladění a odemkne funkce zařízení .

K ladění jader v reálném čase použijte příkaz az sphere device enable-development . Tento příkaz nakonfiguruje zařízení tak, aby přijímalo aplikace z počítače pro ladění, a přiřadí ho do skupiny zařízení Vývoj, která nepovoluje aktualizace cloudových aplikací. Během vývoje a ladění aplikací byste měli zařízení ponechat v této skupině, aby aktualizace cloudových aplikací nepřepsaly vyvíjenou aplikaci.

Ve Windows musíte do zařízení přidat --enable-rt-core-debugging parametr , který načte ladicí servery a požadované ovladače pro každý typ jádra.

  1. Pokud jste to ještě neudělali, přihlaste se k Azure Sphere:

    az login
    
  2. Otevřete rozhraní příkazového řádku pomocí PowerShellu nebo příkazového řádku Windows s oprávněními správce. Parametr --enable-rt-core-debugging vyžaduje oprávnění správce, protože instaluje ovladače USB pro ladicí program.

  3. Zadejte následující příkaz:

    az sphere device enable-development --enable-rt-core-debugging  --catalog <CatalogName>  --resource-group <ResourceGroupName>
    
  4. Po dokončení příkazu zavřete okno, protože oprávnění správce se už nevyžadují. Osvědčeným postupem je vždy použít nejnižší oprávnění, které může úkol provést.

Pokud příkaz az sphere device enable-development selže, nápovědu najdete v tématu Řešení potíží s Azure Sphere .

Povolení vývoje a ladění

Než budete moct vytvořit ukázkovou aplikaci na zařízení Azure Sphere nebo pro ni vyvíjet nové aplikace, musíte povolit vývoj a ladění. Ve výchozím nastavení jsou zařízení Azure Sphere "uzamčená"; to znamená, že neumožňují načítání aplikací ve vývoji z počítače a neumožňují ladění aplikací. Příprava zařízení na ladění toto omezení odebere a načte software potřebný k ladění a odemkne funkce zařízení, jak je popsáno v tématu Možnosti zařízení a komunikace.

K ladění jader v reálném čase použijte příkaz az sphere device enable-development . Tento příkaz nakonfiguruje zařízení tak, aby přijímalo aplikace z počítače pro ladění, a přiřadí ho do skupiny zařízení Vývoj, která nepovoluje aktualizace cloudových aplikací. Během vývoje a ladění aplikací byste měli zařízení ponechat v této skupině, aby aktualizace cloudových aplikací nepřepsaly vyvíjenou aplikaci.

Ve Windows musíte do zařízení přidat --enable-rt-core-debugging parametr , který načte ladicí servery a požadované ovladače pro každý typ jádra.

  1. Pokud jste to ještě neudělali, přihlaste se k Azure:

    az login
    
  2. Otevřete rozhraní příkazového řádku pomocí PowerShellu, příkazového řádku Windows nebo příkazového prostředí Linuxu s oprávněními správce. Parametr --enable-rt-core-debugging vyžaduje oprávnění správce, protože instaluje ovladače USB pro ladicí program.

  3. Zadejte následující příkaz:

    az sphere device enable-development --enable-rt-core-debugging
    
  4. Po dokončení příkazu zavřete okno, protože oprávnění správce se už nevyžadují. Osvědčeným postupem je vždy použít nejnižší oprávnění, které může úkol provést.

Pokud příkaz az sphere device enable-development selže s následující chybovou zprávou, nápovědu najdete v tématu Řešení potíží s Azure Sphere .

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

Sestavení RTApp pomocí editoru Visual Studio Code

Vytvoření aplikace RTApp:

  1. V editoru Visual Studio Code otevřete složku HelloWorld_RTApp_MT3620_BareMetal ve vašem klonu úložiště ukázek Azure Sphere. Pokud se zobrazí výzva k výběru sady, zvolte Nepoužívat sadu.

  2. Stisknutím klávesy F5 spusťte ladicí program. Pokud projekt ještě nebyl sestaven nebo pokud se změnily soubory a vyžaduje se opětovné sestavení, visual Studio Code projekt před zahájením ladění sestaví.

  3. Emulátor připojeného terminálu by měl zobrazit výstup z aplikace. Program odesílá následující slova v jednosekundových intervalech:

    Tick

    Tock

    Poznámka

    Visual Studio Code poskytuje IntelliSense, ale při úpravě CMakeLists.txt se automaticky neaktualizuje. Abyste mohli aktualizovat IntelliSense, musíte spustit příkaz CMake: Delete Cache and Reconfigure . Zobrazení cílů CMake najdete v zobrazení rozšíření CMake na levém panelu.

Sestavení RTApp pomocí sady Visual Studio

Vytvoření aplikace RTApp:

  1. V sadě Visual Studio vyberte Soubor>CMake a přejděte do složky, která obsahuje ukázku.

  2. Pokud se generování CMake nespustí automaticky, vyberte soubor CMakeLists.txt.

  3. V sadě VisualStudio by > se měly zobrazitvýstupy>zobrazení výstupu z: Výstup CMake by měl zobrazit zprávy CMake generation started. aCMake generation finished.

  4. V nabídce CMake (pokud je k dispozici) vyberte Build All (Sestavit vše). Pokud nabídka není k dispozici, otevřete Průzkumník řešení, klikněte pravým tlačítkem na soubor CMakeLists.txt a vyberte Sestavit. Umístění výstupu aplikace Azure Sphere se zobrazí v okně Výstup .

  5. Stisknutím klávesy F5 aplikaci nasaďte.

  6. Emulátor připojeného terminálu by měl zobrazit výstup z aplikace. Program odesílá následující slova v jednosekundových intervalech:

    Tick

    Tock

    Poznámka

    • Visual Studio poskytuje IntelliSense pro Azure Sphere RTApps tím, že shromažďuje data z mezipaměti CMake. Sada Visual Studio aktualizuje mezipaměť pokaždé, když se změní soubor CMakeLists.txt nebo CMakeSettings.json v aplikaci RTApp.

    • Ve výchozím nastavení používá Visual Studio zobrazení složek. Pokud dáváte přednost logickému zobrazení projektu CMake, můžete přejít na zobrazení Cíle CMake. V Průzkumník řešení vyberte ikonu přepínače složky:

      Přepínání mezi zobrazeními Řešení a Složky

      V rozevírací nabídce vyberte Zobrazení cílů CMake.

    • Aplikace se může spustit dříve, než OpenOCD vytvoří připojení. V důsledku toho můžou chybět zarážky nastavené na začátku kódu. Jednoduchým alternativním řešením je odložit spuštění aplikace, dokud se OpenOCD nespustí.

      1. Na začátek vstupního bodu aplikace RTCoreMain vložte následující kód. To způsobí, že aplikace zadá a zůstane ve smyčce while , dokud proměnná f nebude nastavena na true.

          volatile bool f = false;
          while (!f) {
            // empty.
          }
        
      2. Stisknutím klávesy F5 spusťte aplikaci s laděním a pak přerušíte spuštění.

      3. V podokně ladění Místní hodnoty změňte hodnotu f z nuly na jednu.

      4. Projděte kód jako obvykle.

Sestavení RTApp pomocí rozhraní příkazového řádku

Následující pokyny předpokládají, že používáte CMake. Pokud dáváte přednost sestavení na příkazovém řádku bez použití CMake, můžete určit vhodné možnosti kompilátoru a linkeru pomocí souborů AzureSphereToolchainBase.cmake a AzureSphereRTCoreToolchain.cmake, které jsou nainstalované se sadou Azure Sphere SDK.

  1. Otevřete rozhraní příkazového řádku pomocí PowerShellu, příkazového řádku Windows nebo linuxového příkazového prostředí. Přejděte do adresáře sestavení projektu.

  2. V adresáři sestavení projektu na příkazovém řádku spusťte CMake s následujícími parametry:

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

      Název předvolby konfigurace sestavení definovaný v CMakePresets.json.

    • --build <cmake-path>

      Binární adresář, který obsahuje mezipaměť CMake. Pokud například spustíte CMake na ukázce Azure Sphere, příkaz sestavení bude cmake --build out/ARM-Debug.

    • <source-path>

      Cesta k adresáři, který obsahuje zdrojové soubory pro ukázkovou aplikaci. V tomto příkladu se úložiště ukázek Azure Sphere stáhlo do adresáře s názvem AzSphere.

      Parametry CMake jsou oddělené mezerami. Znak pokračování řádku (^ pro příkazový řádek Windows, \ pro příkazový řádek Linuxu nebo ' pro PowerShell) se dá použít pro čitelnost, ale nevyžaduje se.

    Následující příklady ukazují příkazy CMake pro aplikaci HelloWorld RTApp:

    Příkazový řádek Windows

    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. Spuštěním ninja sestavte aplikaci a vytvořte soubor balíčku image:

    ninja -C out/ARM-Debug
    

    Ninja umístí výsledné soubory aplikace a .imagepackage do zadaného adresáře.

    Ninja můžete vyvolat také prostřednictvím CMake pomocí následujícího příkazu:

    cmake --build out/<binary-dir>
    

    Nastavte <binary-dir> na binární adresář, který obsahuje mezipaměť CMake. Pokud například spustíte CMake na ukázce Azure Sphere, příkaz sestavení bude cmake --build out/ARM-Debug.

  4. Odstraňte všechny aplikace, které už jsou na zařízení nasazené:

    az sphere device sideload delete
    
  5. Nasaďte balíček image, který ninja vytvořil:

    az sphere device sideload deploy --image-package <package-name>
    
  6. Získejte ID komponenty pro image:

    az sphere image-package show --image-package <path-to-imagepackage>
    

    Příkaz vrátí všechna metadata balíčku image. ID komponenty aplikace se zobrazí v části Identita pro typ bitové kopie aplikace. Příklad:

    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...
    
  7. Určete, na kterém jádru je vaše aplikace spuštěná.

    Ve výchozím nastavení se rtApp nasadí na první dostupné jádro v reálném čase na zařízení. v současné době nemůžete zadat konkrétní jádro. Pokud chcete zjistit, na kterém jádru aplikace běží, zastavte aplikaci pomocí příkazu az sphere device app a pak ji restartujte. V příkazech zadejte ID komponenty pro aplikaci. Příklad:

    az sphere device app stop --component-id <component id>
    <component id>: App state: stopped
    
    az sphere device app start --component-id <component id>
    <component id>
    App state: running
    Core     : Real-time 0
    
  8. Emulátor připojeného terminálu by měl zobrazit výstup z aplikace. Program odesílá následující slova v jednosekundových intervalech:

    Tick

    Tock

Výstup protokolu z aplikace RTApp

Každé jádro v reálném čase na MT3620 má vyhrazený objekt UART, který je určený pro protokolování výstupu. Jádra v reálném čase mají také přístup k UARTům ISU. Mt3620 RDB zveřejňuje pouze pin TX, který můžete použít k zobrazení výstupu protokolu z aplikace. Jiný hardware to může vystavit jinak, nebo vůbec. Pokud chcete zobrazit výstup protokolu, nastavte hardware tak, aby zobrazoval tento výstup, jak je popsáno v rychlém startu. Vyhrazený objekt UART nevyžaduje požadavek manifestu Uart aplikace, neměl by se ale používat k jiným účelům než k protokolování výstupu aplikace RTApp.

Vývoj s využitím partnerských aplikací

Když načtete aplikaci do zařízení Azure Sphere, nástroje pro nasazení Azure Sphere ve výchozím nastavení odstraní všechny existující aplikace. Pokud chcete zabránit tomu, aby k tomu docházelo při vývoji aplikací, které spolu vzájemně komunikují, musíte aplikace označit jako partnery. Když nasadíte jednu z aplikací, její partneři se neodstraní. Podrobnosti najdete v tématu Označování aplikací jako partnerů .

Řešení potíží

Pokud narazíte na problémy, přečtěte si téma Řešení potíží s aplikacemi podporujícími v reálném čase.

Další zdroje informací

Další ovladače a ukázky pro RTApps, které cílí na jádra M4 v reálném čase na čipu MT3620, jsou k dispozici na GitHubu od partnerů Azure Sphere: