Sdílet prostřednictvím


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

V tomto kurzu se dozvíte, jak vytvořit ukázkovou aplikaci pro jádra v reálném čase na zařízení Azure Sphere. Základní informace o aplikacích podporujících v reálném čase najdete v tématu Přehled aplikací Azure Sphere .

V tomto kurzu se naučíte:

  • Stažení ukázkové aplikace
  • Instalace sady nástrojů GNU Arm
  • Nastavení hardwaru pro zobrazení výstupu
  • Povolení vývoje a ladění
  • Spuštění emulátoru terminálu pro zobrazení výstupu
  • Sestavení, spuštění a ladění aplikace podporující v reálném čase

Důležité

Tyto pokyny předpokládají, že používáte hardware, který se řídí hardwarem mt3620 pro návrh referenční desky (RDB), jako je sada MT3620 Dev Kit od Společnosti Seeed Studios. Pokud používáte jiný hardware Azure Sphere, podívejte se do dokumentace výrobce, abyste zjistili, jestli je UART vystavený a jak k němu získat přístup. Možná budete muset nastavit hardware tak, aby zobrazoval výstup jinak, a aktualizovat vzorový kód a pole Uarts souboru app_manifest.json tak, aby používaly jiný UART.

Požadavky

Stažení ukázkové aplikace

Aplikaci HelloWorld si můžete stáhnout následujícím způsobem:

  1. Nasměrujte prohlížeč na Microsoft Samples Browser.
  2. Do pole Search zadejte "Azure Sphere".
  3. Ve výsledcích hledání vyberte Azure Sphere – Hello World.
  4. Vyberte Stáhnout ZIP.
  5. Otevřete stažený soubor a extrahujte ho do místního adresáře.

Instalace sady NÁSTROJŮ GNU Arm Embedded Toolchain

Sadu nástrojů GNU Arm Embedded Toolchain si můžete stáhnout a nainstalovat z webu pro vývojáře ARM. Nebo můžete artefakty vcpkg použít k automatické instalaci a konfiguraci vývojového prostředí.

  • Visual Studio 2022: Pokud používáte Visual Studio 2022, nainstalujte si sadu NÁSTROJŮ GNU Arm Embedded Toolchain (arm-none-eabi) z webu pro vývojáře Arm.
  • Visual Studio 2019: Sada nástrojů se automaticky nainstaluje s rozšířením azure-sphere pro Visual Studio v sadě Visual Studio 2019. Pokud používáte Visual Studio 2019, pokračujte nastavením hardwaru pro zobrazení výstupu. Pokud jste ale sadu NÁSTROJŮ GNU Arm Embedded nainstalovali ručně, visual Studio použije nainstalovanou verzi.

Pokud chcete nainstalovat sadu nástrojů, na webu pro vývojáře ARM najděte sadu nástrojů GNU Arm Embedded Toolchain (arm-none-eabi), která obsahuje kompilátor procesoru ARM Cortex-M4. Podle pokynů si stáhněte a nainstalujte kompilátor pro vaši platformu operačního systému.

Visual Studio Code ve výchozím nastavení hledá sadu nástrojů a měl by najít nainstalovanou verzi. Pokud narazíte na problémy se sestavením související s řetězcem nástrojů, zadejte cestu následujícím způsobem:

  1. VyberteNastavenínastavení>>souborů>Rozšíření>Azure Sphere.
  2. V nastavení Azure Sphere: Arm Gnu Path zadejte instalační cestu sady nástrojů GNU Arm Embedded Toolchain.

Pokud chcete nainstalovat sadu nástrojů, na webu pro vývojáře ARM najděte sadu nástrojů GNU Arm Embedded Toolchain (arm-none-eabi), která obsahuje kompilátor procesoru ARM Cortex-M4. Podle pokynů si stáhněte a nainstalujte kompilátor pro vaši platformu operačního systému.

Nastavení hardwaru pro zobrazení výstupu

V současné době každé jádro v reálném čase podporuje UART pouze TX. RTApps může tento objekt UART použít k odesílání výstupu protokolu ze zařízení. Během vývoje a ladění aplikací obvykle potřebujete způsob, jak číst a zobrazovat výstup. Ukázka HelloWorld_RTApp_MT3620_BareMetal ukazuje, jak může aplikace zapisovat do UART.

Pomocí adaptéru USB na sériový port, jako je FTDI Friend, připojte UART jádra v reálném čase k portu USB na vašem počítači. K zobrazení výstupu budete také potřebovat emulátor terminálu k navázání sériového připojení s nastavením terminálu 115200-8-N-1 (115200 b/s, 8 bitů, bez parit, jeden zar bit).

Pokud chcete nastavit hardware tak, aby zobrazoval výstup z aplikace RTApp, postupujte takto. Umístění špendlíků zjistíte v dokumentaci od výrobce hardwaru. Pokud používáte hardware, který se řídí hardwarem mt3620 pro návrh referenční desky (RDB), jako je sada MT3620 Dev Kit od Seeed Studios, může vám při pohledu na hlavičky rozhraní RDB pomoct určit umístění špendlíků.

  1. Připojte GND pomocí adaptéru USB na sériový adaptér ke GND ve vývojové sadě. Na hardwaru MT3620 RDB je GND header 3, pin 2.
  2. Připojte RX na adaptéru USB-to-serial k IOM4-0 TX ve vývojové sadě. Na hardwaru MT3620 RDB je IOM4-0 TX header 3, pin 6.
  3. Připojte adaptér USB na sériový port k volnému portu USB na vývojovém počítači a určete, ke kterému portu je sériové zařízení připojené. Ve Windows spusťte Správce zařízení, vyberte Zobrazit>zařízení podle kontejneru a vyhledejte USB UART. Například FT232R USB UART označuje adaptér FTDI Friend.
  4. Spusťte program emulátoru terminálu a otevřete terminál 115200-8-N-1 na portu COM používaném adaptérem. Informace o tom, jak určit port a rychlost, najdete v dokumentaci k emulátoru terminálu.

Nastavení hardwaru pro zobrazení výstupu

V současné době každé jádro v reálném čase podporuje UART pouze TX. RTApps může tento objekt UART použít k odesílání výstupu protokolu ze zařízení. Během vývoje a ladění aplikací obvykle potřebujete způsob, jak číst a zobrazovat výstup. Ukázka HelloWorld_RTApp_MT3620_BareMetal ukazuje, jak může aplikace zapisovat do UART.

Pomocí adaptéru USB na sériový port, jako je FTDI Friend, připojte UART jádra v reálném čase k portu USB na vašem počítači. K zobrazení výstupu budete také potřebovat emulátor terminálu k navázání sériového připojení s nastavením terminálu 115200-8-N-1 (115200 b/s, 8 bitů, bez parit, jeden zar bit).

Pokud chcete nastavit hardware tak, aby zobrazoval výstup z aplikace RTApp, postupujte takto. Umístění špendlíků zjistíte v dokumentaci od výrobce hardwaru. Pokud používáte hardware, který se řídí hardwarem mt3620 pro návrh referenční desky (RDB), jako je sada MT3620 Dev Kit od Seeed Studios, může vám při pohledu na hlavičky rozhraní RDB pomoct určit umístění špendlíků.

  1. Připojte GND pomocí adaptéru USB na sériový adaptér ke GND ve vývojové sadě. Na hardwaru MT3620 RDB je GND header 3, pin 2.

  2. Připojte RX na adaptéru USB-to-serial k IOM4-0 TX ve vývojové sadě. Na hardwaru MT3620 RDB je IOM4-0 TX header 3, pin 6.

  3. Připojte adaptér USB na sériový port k volnému portu USB na vývojovém počítači a určete, ke kterému portu je sériové zařízení připojené.

    • Ve Windows spusťte Správce zařízení, vyberte Zobrazit>zařízení podle kontejneru a vyhledejte USB UART. Například FT232R USB UART označuje adaptér FTDI Friend.

    • V Linuxu zadejte následující příkaz:

      dmesg | grep ttyUSB
      

      Port by měl mít název ttyUSBn, kde n označuje číslo portu. Pokud příkaz dmesg vypíše několik portů USB, ten, který je připojený k obvykle poslednímu portu hlášenému jako připojený. Například v následujícím příkladu byste použili ttyUSB4:

    ~$ dmesg | grep ttyUSB
    [  144.564350] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB0
    [  144.564768] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB1
    [  144.565118] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB2
    [  144.565593] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB3
    [  144.570429] usb 1-1.1.3: FTDI USB Serial Device converter now attached to ttyUSB4
    [  254.171871] ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1
    
  4. Spusťte program emulátoru terminálu a otevřete terminál 115200-8-N-1 na portu COM používaném adaptérem. Informace o tom, jak určit port a rychlost, najdete v dokumentaci k emulátoru terminálu.

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 .

Sestavení a spuštění aplikace HelloWorld RTApp pomocí sady Visual Studio

  1. Spusťte Visual Studio. Vyberte Otevřít místní složku, přejděte do složky, kam jste extrahovali stažený Azure_Sphere___Hello_World.zip soubor, a pak vyberte složku HelloWorld_RTApp_MT3620_Baremetal.

  2. Pokud nepoužíváte sadu MT3620 RDB, aktualizujte soubor app_manifest.json a vzorový kód tak, aby zadaly správný identifikátor UART, například ISU1.

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

  4. V okně Výstup sady Visual Studio by se ve výstupu CMake měly zobrazit zprávy CMake generation started. a CMake generation finished..

  5. Vyberte BuildBuild 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 HelloWorld_RTApp_MT3620_Baremetal se zobrazí v okně Výstup .

  6. V nabídce Vybrat položku po spuštění vyberte HelloWorld_RTApp_MT3620_Baremetal (RTCore).

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

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

    Tick

    Tock

  9. Pomocí ladicího programu můžete nastavit zarážky, kontrolovat proměnné a vyzkoušet další úlohy ladění.

Sestavení a spuštění aplikace HelloWorld RTApp pomocí editoru Visual Studio Code

  1. V editoru Visual Studio Code otevřete složku HelloWorld_RTApp_MT3620_BareMetal ve složce, do které jste extrahovali stažený Azure_Sphere___Hello_World.zip soubor. Pokud se zobrazí výzva k výběru sady, zvolte Nepoužívat sadu.

  2. Pokud nepoužíváte hardware MT3620 RDB, aktualizujte soubor app_manifest.json a vzorový kód tak, abyste zadali správný identifikátor UART, například ISU1.

  3. 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í.

  4. V okně výstupu Azure Sphere by se mělo zobrazit "Nasazení image..." následované cestami k sadě SDK a kompilátoru.

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

    Tick

    Tock

  6. Pomocí funkcí ladění editoru Visual Studio Code můžete nastavit zarážky, kontrolovat proměnné a vyzkoušet další úlohy ladění.

Řešení potíží

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 (F5) 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í ukázky

  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 RTApp. Pokud je to uvedeno, nahraďte <cestu k> souboru instalační cestou pro sadu nástrojů GNU Arm Embedded Toolchain ve vašem systému.

    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.

Při řešení potíží, zejména po provedení jakýchkoli změn příkazů CMake, odstraňte celé sestavení a zkuste to znovu.

Spuštění ukázky

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

    az sphere device sideload delete
    
  2. Z adresáře projektu na příkazovém řádku načtěte balíček image, který vytvořil ninja:

    az sphere device sideload deploy --image-package <path-to-imagepackage>
    

    Aplikace se začne spouštět brzy po načtení. V emulátoru připojeného terminálu se zobrazí následující:

    Tick
    
    Tock
    
    Tick
    .
    .
    .
    
  3. 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"
      },
    ...
    

    K zastavení, spuštění a získání stavu aplikace můžete použít následující příkazy:

    az sphere device app stop --component-id <component id>
    
    az sphere device app start --component-id <component id>
    
    az sphere device app show-status --component-id <component id>
    

Ladění ukázky

  1. Zastavte aplikaci, pokud je spuštěná.

    az sphere device app stop --component-id <component id>
    
  2. Znovu spusťte aplikaci pro ladění.

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

    Tento příkaz vrátí jádro, na kterém aplikace běží.

    <component id>
    App state   : running
    Core        : Real-time 0
    
  3. Přejděte do složky Openocd pro složku sysroot, se kterou byla aplikace vytvořena. Sysroots se instalují do instalační složky sady Azure Sphere SDK. Například ve Windows je složka ve výchozím nastavení nainstalovaná v C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd a v Linuxu na adrese /opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux.

  4. Spusťte openocd , jak ukazuje následující příklad. Příklad předpokládá, že aplikace běží na jádru 0. Pokud aplikace běží na jádru 1, nahraďte "targets io0" "targets io1".

    openocd -f mt3620-rdb-ftdi.cfg -f mt3620-io0.cfg -c "gdb_memory_map disable" -c "gdb_breakpoint_override hard" -c init -c "targets io0" -c halt -c "targets"
    
  5. Přejděte do složky, která obsahuje soubor .out aplikace, a spusťte arm-none-eabi-gdb, který je součástí sady nástrojů GNU Arm Embedded Toolchain:

    Příkazový řádek Windows

    "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" HelloWorld_RTApp_MT3620_BareMetal.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" HelloWorld_RTApp_MT3620_BareMetal.out
    
  6. Server OpenOCD poskytuje rozhraní serveru GDB na serveru :4444. Nastavte cíl ladění.

    target remote :4444

  7. Teď můžete spouštět příkazy gdb.

  8. Emulátor připojeného terminálu by měl zobrazit výstup z aplikace.

Použití 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ů .

Další kroky