Sdílet prostřednictvím


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

Důležité

Toto je dokumentace k Azure Sphere (starší verze). Azure Sphere (starší verze) se vyřazuje 27. září 2027 a uživatelé musí do této doby migrovat do Azure Sphere (integrované). K zobrazení dokumentace k Azure Sphere (integrované) použijte selektor verzí umístěný nad obsahem.

K vývoji a ladění aplikací podporujících v reálném čase (RTApps) můžete použít Visual Studio, Visual Studio Code nebo příkazový řádek (CLI).

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čena"; to znamená, že neumožňují načtení aplikací v rámci vývoje z počítače a neumožňují ladění aplikací. Příprava zařízení na ladění odebere toto omezení a načte software potřebný k ladění a odemkne možnosti zařízení, jak je popsáno v možnostech zařízení a komunikaci.

K ladění jader v reálném čase použijte příkaz azsphere 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řazuje zařízení skupině vývojových zařízení, která neumožňuje aktualizace cloudových aplikací. Během vývoje a ladění aplikací byste měli ponechat zařízení v této skupině, aby aktualizace cloudových aplikací nepřepsaly aplikaci ve vývoji.

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

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

    azsphere 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 pro ladicí program nainstaluje ovladače USB.

  3. Zadejte tento příkaz:

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

Pokud příkaz azsphere 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čena"; to znamená, že neumožňují načtení aplikací v rámci vývoje z počítače a neumožňují ladění aplikací. Příprava zařízení na ladění odebere toto omezení a načte software potřebný k ladění a odemkne možnosti zařízení, jak je popsáno v možnostech zařízení a komunikaci.

K ladění jader v reálném čase použijte příkaz azsphere 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řazuje zařízení skupině vývojových zařízení, která neumožňuje aktualizace cloudových aplikací. Během vývoje a ladění aplikací byste měli ponechat zařízení v této skupině, aby aktualizace cloudových aplikací nepřepsaly aplikaci ve vývoji.

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

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

    azsphere 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 pro ladicí program nainstaluje ovladače USB.

  3. Zadejte tento příkaz:

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

Pokud příkaz azsphere device enable-development selže s následující chybovou zprávou, přečtěte si téma Řešení potíží s Azure Sphere, kde najdete nápovědu.

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

Sestavení aplikace 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 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 soubory změnily a znovu se vyžadují, Visual Studio Code projekt sestaví před spuštěním ladění.

  3. Emulátor připojeného terminálu by měl zobrazit výstup z aplikace. Program odešle následující slova v jednomsekundovém intervalu:

    Tick

    Tock

    Poznámka:

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

Sestavení aplikace 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 CMakeLists.txt soubor.

  3. V sadě Visual Studio by měl výstup zobrazit>výstup>výstupu: Výstup CMake by měl zobrazovat zprávy a CMake generation started.CMake generation finished.

  4. V nabídce CMake (pokud je k dispozici) vyberte 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. Výstupní umístění 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 odešle následující slova v jednomsekundovém intervalu:

    Tick

    Tock

    Poznámka:

    • Visual Studio poskytuje IntelliSense pro Azure Sphere RTApps shromažďováním dat z mezipaměti CMake. Visual Studio aktualizuje mezipaměť při každé změně souboru CMakeLists.txt nebo CMakeSettings.json v aplikaci RTApp.

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

      Přepínání mezi zobrazením řešení a složek

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

    • Aplikace se může začít spouštět předtím, než OpenOCD vytvoří připojení. V důsledku toho můžou být zarážky nastavené v rané fázi kódu vynechány. Jednoduchým alternativním řešením je zpoždění spuštění aplikace, dokud se OpenOCD neváže.

      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 while smyčce, dokud proměnná f nebude nastavená na hodnotu true.

          volatile bool f = false;
          while (!f) {
            // empty.
          }
        
      2. Stisknutím klávesy F5 spusťte aplikaci laděním a pak se rozdělte do provádění.

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

      4. Krokujte kód jako normálně.

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 příslušné možnosti kompilátoru a linkeru tak, že se podíváte na soubory 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 příkazového prostředí Linuxu. 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řednastavení konfigurace sestavení definovaný v CMakePresets.json

    • --build <cmake-path>

      Binární adresář, který obsahuje mezipaměť CMake. Pokud například spustíte CMake v 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) lze použít pro čitelnost, ale nevyžaduje se.

    Následující příklady ukazují příkazy CMake pro 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. Spusťte Ninja a 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> binární adresář, který obsahuje mezipaměť CMake. Pokud například spustíte CMake v ukázce Azure Sphere, příkaz sestavení bude cmake --build out/ARM-Debug.

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

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

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

    azsphere 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 image aplikace. Příklad:

    Image package metadata:
    Section: Identity
    Image Type:           Application
    Component ID:         <component id>
    Image ID:             <image id>
    
  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ě nelze zadat konkrétní jádro. Pokud chcete zjistit, na kterém jádru aplikace běží, pomocí příkazu azsphere device app zastavte a restartujte aplikaci. Do příkazů zadejte ID komponenty pro aplikaci. Příklad:

    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. Emulátor připojeného terminálu by měl zobrazit výstup z aplikace. Program odešle následující slova v jednomsekundovém intervalu:

    Tick

    Tock

Výstup protokolu z RTApp

Každé jádro v reálném čase v 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 jednotce ISU UART. RdB MT3620 zveřejňuje pouze pin TX, který můžete použít k zobrazení výstupu protokolu z aplikace. Jiný hardware může tento přístup zveřejnit 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 pro jiné účely než pro protokolování výstupu pro 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. Abyste tomu zabránili při vývoji aplikací, které vzájemně komunikují, musíte aplikace označit jako partnery. Když nasadíte některou z aplikací, její partneři se neodstraní. Podrobnosti najdete v tématu Označení aplikací jako partnerů .

Řešení problému

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ší materiály

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: