Kurz: Sestavení 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.
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 přehledu 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 referenční desky MT3620 (RDB), jako je MT3620 Dev Kit od Seeed Studios. Pokud používáte jiný hardware Azure Sphere, projděte si dokumentaci výrobce a zjistěte, jestli je UART vystavený a jak k němu přistupovat. Možná budete muset nastavit hardware tak, aby zobrazoval výstup jinak, a aktualizovat vzorový kód a pole Uarts v souboru app_manifest.json tak, aby používalo jiný objekt UART.
Požadavky
- Nainstalujte CMake a Ninja pro Windows nebo Linux.
- Nainstalujte Visual Studio Code pro Windows nebo Linux.
- Nainstalujte CMake a Ninja pro Windows nebo Linux.
- Instalace sady Azure Sphere SDK pro Windows nebo Linux
- Zvolte tenanta a deklarujte své zařízení.
- Konfigurace sítí a aktualizace operačního systému zařízení
Stažení ukázkové aplikace
Aplikaci HelloWorld si můžete stáhnout následujícím způsobem:
- Nasměrujte prohlížeč na Prohlížeč ukázek Microsoftu.
- Do vyhledávacího pole zadejte "Azure Sphere".
- Ve výsledcích hledání vyberte Azure Sphere – Hello World .
- Vyberte Stáhnout ZIP.
- Otevřete stažený soubor a extrahujte ho do místního adresáře.
Instalace sady nástrojů GNU Arm Embedded Toolchain
Gnu Arm Embedded Toolchain si můžete stáhnout a nainstalovat z webu pro vývojáře Arm. Nebo můžete použít artefakty vcpkg k automatické instalaci a konfiguraci vývojového prostředí.
- Visual Studio 2022: Pokud používáte Visual Studio 2022, nainstalujte sadu 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 GNU Arm Embedded Toolchain 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. Postupujte podle pokynů k stažení a instalaci kompilátoru pro vaši platformu operačního systému.
Visual Studio Code ve výchozím nastavení vyhledá sadu nástrojů a měla by najít nainstalovanou verzi. Pokud narazíte na problémy se sestavením souvisejícími s nástavbou, zadejte cestu následujícím způsobem:
- Vyberte Rozšíření nastavení předvoleb>>>souborů>Azure Sphere.
- Zadejte instalační cestu sady nástrojů GNU Arm Embedded Toolchain v nastavení Azure Sphere: Arm Gnu Path .
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. Postupujte podle pokynů k stažení a instalaci kompilátoru 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 pomocí tohoto objektu UART odesílat výstup 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 objektu UART.
Pomocí adaptéru USB-to-serial, jako je FTDI Friend, připojte UART na jádru 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 paritní bitů, jeden bit zastavení).
Když budete chtít nastavit hardware pro zobrazování výstupu z aplikace RTApp, postupujte podle těchto kroků. Když budete chtít určit umístění kolíků, budete se muset podívat do dokumentace od výrobce vašeho hardwaru. Pokud používáte hardware, který odpovídá návrhu RDB (Reference Board Design) hardwaru MT3620, jako je sada MT3620 Dev Kit od Seeed Studios, pak vám může s určením umístění kolíků pomoct, když se podáváte na headery rozhraní RDB.
- Připojte GND adaptéru USB na sériový port ke GND vývojové sady. U hardwaru typu MT3620 RDB je uzemnění (GND) na headeru 3, kolík 2.
- Připojte výstup RX na adaptéru USB na sériový port k výstupu IOM4-0 TX na sadě Dev Kit. U hardwaru typu MT3620 RDB je IOM4-0 TX na headeru 3, kolík 6.
- Připojte adaptér USB k sériovému portu k bezplatnému portu USB na vývojovém počítači a určete port, ke kterému sériovému zařízení je 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.
- Spusťte program emulátoru terminálu a otevřete terminál 115200-8-N-1 na port COM používaný adaptérem. Informace o určení portu a rychlosti 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 pomocí tohoto objektu UART odesílat výstup 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 objektu UART.
Pomocí adaptéru USB-to-serial, jako je FTDI Friend, připojte UART na jádru 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 paritní bitů, jeden bit zastavení).
Když budete chtít nastavit hardware pro zobrazování výstupu z aplikace RTApp, postupujte podle těchto kroků. Když budete chtít určit umístění kolíků, budete se muset podívat do dokumentace od výrobce vašeho hardwaru. Pokud používáte hardware, který odpovídá návrhu RDB (Reference Board Design) hardwaru MT3620, jako je sada MT3620 Dev Kit od Seeed Studios, pak vám může s určením umístění kolíků pomoct, když se podáváte na headery rozhraní RDB.
Připojte GND adaptéru USB na sériový port ke GND vývojové sady. U hardwaru typu MT3620 RDB je uzemnění (GND) na headeru 3, kolík 2.
Připojte výstup RX na adaptéru USB na sériový port k výstupu IOM4-0 TX na sadě Dev Kit. U hardwaru typu MT3620 RDB je IOM4-0 TX na headeru 3, kolík 6.
Připojte adaptér USB k sériovému portu k bezplatnému portu USB na vývojovém počítači a určete port, ke kterému sériovému zařízení je 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í, která je hlášena 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
Spusťte program emulátoru terminálu a otevřete terminál 115200-8-N-1 na port COM používaný adaptérem. Informace o určení portu a rychlosti 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č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í.
Pokud jste to ještě neudělali, přihlaste se k Azure Sphere:
azsphere login
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.Zadejte tento příkaz:
azsphere device enable-development --enable-rt-core-debugging
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.
Sestavení a spuštění aplikace HelloWorld RTApp pomocí sady Visual Studio
Spusťte Visual Studio. Vyberte Otevřít místní složku, přejděte do složky, do které jste extrahovali stažený Azure_Sphere___Hello_World.zip soubor, a pak vyberte složku HelloWorld_RTApp_MT3620_Baremetal.
Pokud nepoužíváte SADU RDB MT3620, aktualizujte soubor app_manifest.json a vzorový kód tak, aby určil správný UART, například ISU1.
Pokud se generování CMake nespustí automaticky, vyberte CMakeLists.txt soubor.
V okně Výstup sady Visual Studio by měl výstup CMake zobrazovat zprávy
CMake generation started.
aCMake generation finished.
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 HelloWorld_RTApp_MT3620_Baremetal se zobrazí v okně Výstup .
V nabídce Vybrat položku po spuštění vyberte HelloWorld_RTApp_MT3620_Baremetal (RTCore).
Stisknutím klávesy F5 aplikaci nasaďte.
Emulátor připojeného terminálu by měl zobrazit výstup z HelloWorld_RTApp_MT3620_Baremetal programu. Program odešle následující slova v jednomsekundovém intervalu:
Tick
Tock
Ladicí program slouží k nastavení zarážek, kontrole proměnných a vyzkoušení dalších úloh ladění.
Sestavení a spuštění aplikace HelloWorld RTApp pomocí editoru Visual Studio Code
V editoru Visual Studio Code otevřete složku HelloWorld_RTApp_MT3620_BareMetal ve složce, ve které jste extrahovali stažený soubor Azure_Sphere___Hello_World.zip. Pokud se zobrazí výzva k výběru sady, zvolte "Nepoužívat sadu".
Pokud nepoužíváte hardware typu MT3620 RDB, aktualizujte soubor app_manifest.json a ukázkový kód tak, aby určovaly správné rozhraní UART, například ISU1.
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í.
V okně výstupu Azure Sphere by se měla zobrazit zpráva, že probíhá nasazování, a cesty k sadě SDK a kompilátoru.
Emulátor připojeného terminálu by měl zobrazit výstup z HelloWorld_RTApp_MT3620_Baremetal programu. Program odešle následující slova v jednomsekundovém intervalu:
Tick
Tock
Pomocí funkcí ladění editoru Visual Studio Code můžete nastavit zarážky, zkontrolovat proměnné a vyzkoušet další úlohy ladění.
Řešení problému
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.
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. }
Stisknutím klávesy F5 spusťte aplikaci laděním (F5) a pak se rozdělte na spuštění.
V podokně ladění Místní hodnoty změňte hodnotu
f
z nuly na jednu.Projděte si kód obvyklým způsobem.
Sestavení ukázky
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.
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 RTApp. Kde je uvedeno, nahraďte <cestu> k souboru instalační cestou pro GNU Arm Embedded Toolchain ve vašem systému.
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í budecmake --build out/ARM-Debug
.
Při řešení potíží, zejména po provedení jakýchkoli změn příkazů CMake, odstraňte celý build a zkuste to znovu.
Spuštění ukázky
Odstraňte všechny aplikace, které jsou už na zařízení nasazené:
azsphere device sideload delete
Z adresáře projektu na příkazovém řádku načtěte balíček image, který ninja vytvořil:
azsphere device sideload deploy --image-package <path-to-imagepackage>
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>
K zastavení, spuštění a získání stavu aplikace můžete použít následující příkazy:
azsphere device app stop --component-id <component id>
azsphere device app start --component-id <component id>
azsphere device app show-status --component-id <component id>
Ladění ukázky
Pokud je aplikace spuštěná, zastavte ji.
azsphere device app stop --component-id <component id>
Znovu spusťte aplikaci pro ladění.
azsphere device app start --component-id <component id>
Tento příkaz vrátí jádro, na kterém je aplikace spuštěná.
<component id> App state : running Core : Real-time 0
Přejděte do složky Openocd pro složku sysroot, pomocí které byla aplikace vytvořena. Složky sysroot se instalují do instalační složky sady Azure Sphere SDK. Například ve Windows je složka ve výchozím nastavení nainstalována v
C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd
linuxu a v systému Linux na adrese/opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux
.Spuštění
openocd
jako následující příklad ukazuje. V příkladu se předpokládá, že aplikace běží na jádru 0. Pokud aplikace běží na jádru 1, nahraďte "targets io0" za "targets io1".Přejděte do složky, která obsahuje soubor .out aplikace, a spusťte
arm-none-eabi-gdb
, která je součástí 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
Server OpenOCD poskytuje rozhraní serveru GDB na :4444. Nastavte cíl pro ladění.
target remote :4444
Teď můžete spouštět příkazy gdb.
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. 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ů .
Další kroky
- Naučte se spouštět Azure RTOS pomocí Azure Sphere.
- Prozkoumejte další ukázky pro jádra podporující v reálném čase:
- Další informace o aplikacích Azure Sphere