Megosztás a következőn keresztül:


Oktatóanyag: Valós idejű képes alkalmazás létrehozása

Ez az oktatóanyag bemutatja, hogyan hozhat létre mintaalkalmazást a valós idejű magokhoz egy Azure Sphere-eszközön. A valós idejű alkalmazásokkal kapcsolatos alapvető információkért tekintse meg az Azure Sphere-alkalmazások áttekintését .

Ebben az oktatóanyagban a következőket sajátíthatja el:

  • Mintaalkalmazás letöltése
  • A GNU arm eszközlánc telepítése
  • Hardver beállítása a kimenet megjelenítéséhez
  • Fejlesztés és hibakeresés engedélyezése
  • Terminálemulátor indítása a kimenet megtekintéséhez
  • Valós idejű kompatibilis alkalmazás létrehozása, futtatása és hibakeresése

Fontos

Ezek az utasítások feltételezik, hogy olyan hardvert használ, amely követi az MT3620 referenciatábla-tervezési (RDB) hardvert, például a Seeed Studios MT3620 Dev Kitét. Ha eltérő Azure Sphere-hardvert használ, a gyártó dokumentációjában megtudhatja, hogy az UART elérhető-e, és hogyan érheti el. Előfordulhat, hogy hardvert kell beállítania a kimenet eltérő megjelenítéséhez , és frissítenie kell a mintakódot és a app_manifest.json fájl Uarts mezőjét egy másik UART használatához.

Előfeltételek

A mintaalkalmazás letöltése

A HelloWorld alkalmazást a következőképpen töltheti le:

  1. Mutasson a böngészőre a Microsoft Samples Browserre.
  2. Írja be az "Azure Sphere" kifejezést a Keresés mezőbe.
  3. Válassza az Azure Sphere – "Helló világ!" alkalmazás lehetőséget a keresési eredmények közül.
  4. Válassza a ZIP letöltése lehetőséget.
  5. Nyissa meg a letöltött fájlt, és bontsa ki egy helyi könyvtárba.

A GNU Arm Embedded eszközlánc telepítése

A GNU Arm Embedded eszközláncot az Arm fejlesztői webhelyéről töltheti le és telepítheti. Vagy használhat vcpkg-összetevőket a fejlesztési környezet automatikus telepítéséhez és konfigurálásához.

  • Visual Studio 2022: Ha a Visual Studio 2022-t használja, telepítse a GNU Arm Embedded Toolchain (arm-none-eabi) eszközt az ARM fejlesztői webhelyéről.
  • Visual Studio 2019: Az eszközlánc automatikusan települ a Visual Studio azure-sphere bővítményével a Visual Studio 2019-ben. Ha a Visual Studio 2019-et használja, folytassa a Hardver beállítása a kimenet megjelenítéséhez című témakörrel. Ha azonban manuálisan telepítette a GNU Arm Embedded Toolchain eszközt, a Visual Studio a telepített verziót fogja használni.

Az eszközlánc telepítéséhez az ARM fejlesztői webhelyén keresse meg a GNU Arm Embedded Toolchain eszközt (arm-none-eabi), amely tartalmazza az ARM Cortex-M4 processzor fordítóját. Kövesse az ott található utasításokat az operációsrendszer-platform fordítójának letöltéséhez és telepítéséhez.

Alapértelmezés szerint a Visual Studio Code megkeresi az eszközláncot, és meg kell találnia a telepített verziót. Ha az eszközlánchoz kapcsolódó buildelési problémákat tapasztal, adja meg az elérési utat az alábbiak szerint:

  1. Válassza a Fájlbeállítások>Beállítások>>Bővítmények>Azure Sphere lehetőséget.
  2. Adja meg a GNU Arm Embedded toolchain telepítési útvonalát az Azure Sphere: Arm Gnu Path beállításban.

Az eszközlánc telepítéséhez az ARM fejlesztői webhelyén keresse meg a GNU Arm Embedded Toolchain eszközt (arm-none-eabi), amely tartalmazza az ARM Cortex-M4 processzor fordítóját. Kövesse az ott található utasításokat az operációsrendszer-platform fordítójának letöltéséhez és telepítéséhez.

Hardver beállítása a kimenet megjelenítéséhez

Jelenleg minden valós idejű mag támogatja a csak TX-et támogató UART-okat. Az RTApps ezzel az UART-kel küldhet naplókimenetet az eszközről. Az alkalmazásfejlesztés és a hibakeresés során általában szükség van a kimenet olvasására és megjelenítésére. A HelloWorld_RTApp_MT3620_BareMetal minta bemutatja, hogyan írhat egy alkalmazás az UART-ba.

Usb-soros adapter, például AZ FTDI-barát segítségével csatlakoztassa a valós idejű magon lévő UART-et egy USB-porthoz a gépen. A kimenet megjelenítéséhez szüksége lesz egy terminálemulátorra is, amely 115200-8-N-1 terminálbeállításokkal (115200 bps, 8 bit, paritásbitek nélkül, egy stopbittel) hoz létre soros kapcsolatot.

Ha úgy szeretné beállítani a hardvert, hogy egy RTApp kimenetét jelenítse meg, kövesse az alábbi lépéseket. A pin-kód helyének meghatározásához tekintse meg a hardvergyártó dokumentációját. Ha olyan hardvert használ, amely követi az MT3620 referenciatábla-kialakítási (RDB) hardvert, például a Seeed Studios MT3620 Dev Kitét, akkor az RDB-felület fejléceinek megtekintése segíthet meghatározni a PIN-kód helyét.

  1. Csatlakoztassa a GND-t az USB-soros adapteren a fejlesztői készlet GND-hez. Az MT3620 RDB hardveren a GND a 3. fejléc, 2. tű.
  2. Csatlakoztassa az RX-et az USB-soros adapteren az IOM4-0 TX-hez a fejlesztői készleten. Az MT3620 RDB hardveren az IOM4-0 TX a 3. fejléc, 6. tű.
  3. Csatlakoztassa az USB-soros adaptert egy ingyenes USB-porthoz a fejlesztői gépen, és határozza meg, hogy melyik porthoz csatlakozik a soros eszköz. Windows rendszeren indítsa el Eszközkezelő, válassza az Eszközök megtekintése>tároló szerint lehetőséget, és keresse meg az "USB UART" kifejezést. Az FT232R USB UART például az FTDI-barát adaptert jelzi.
  4. Indítsa el a terminálemulátor programot, és nyisson meg egy 115200-8-N-1 terminált az adapter által használt COM-porton. A terminálemulátor dokumentációjában megtudhatja, hogyan adhatja meg a portot és a sebességet.

Hardver beállítása a kimenet megjelenítéséhez

Jelenleg minden valós idejű mag támogatja a csak TX-et támogató UART-okat. Az RTApps ezzel az UART-kel küldhet naplókimenetet az eszközről. Az alkalmazásfejlesztés és a hibakeresés során általában szükség van a kimenet olvasására és megjelenítésére. A HelloWorld_RTApp_MT3620_BareMetal minta bemutatja, hogyan írhat egy alkalmazás az UART-ba.

Usb-soros adapter, például AZ FTDI-barát segítségével csatlakoztassa a valós idejű magon lévő UART-et egy USB-porthoz a gépen. A kimenet megjelenítéséhez szüksége lesz egy terminálemulátorra is, amely 115200-8-N-1 terminálbeállításokkal (115200 bps, 8 bit, paritásbitek nélkül, egy stopbittel) hoz létre soros kapcsolatot.

Ha úgy szeretné beállítani a hardvert, hogy egy RTApp kimenetét jelenítse meg, kövesse az alábbi lépéseket. A pin-kód helyének meghatározásához tekintse meg a hardvergyártó dokumentációját. Ha olyan hardvert használ, amely követi az MT3620 referenciatábla-kialakítási (RDB) hardvert, például a Seeed Studios MT3620 Dev Kitét, akkor az RDB-felület fejléceinek megtekintése segíthet meghatározni a PIN-kód helyét.

  1. Csatlakoztassa a GND-t az USB-soros adapteren a fejlesztői készlet GND-hez. Az MT3620 RDB hardveren a GND a 3. fejléc, 2. tű.

  2. Csatlakoztassa az RX-et az USB-soros adapteren az IOM4-0 TX-hez a fejlesztői készleten. Az MT3620 RDB hardveren az IOM4-0 TX a 3. fejléc, 6. tű.

  3. Csatlakoztassa az USB-soros adaptert egy ingyenes USB-porthoz a fejlesztői gépen, és határozza meg, hogy melyik porthoz csatlakozik a soros eszköz.

    • Windows rendszeren indítsa el Eszközkezelő, válassza az Eszközök megtekintése>tároló szerint lehetőséget, és keresse meg az "USB UART" kifejezést. Az FT232R USB UART például az FTDI-barát adaptert jelzi.

    • Linux rendszeren írja be a következő parancsot:

      dmesg | grep ttyUSB
      

      A port neve ttyUSBn, ahol n a port számát jelzi. Ha a dmesg parancs több USB-portot is felsorol, az, amely általában az utolsó csatlakoztatottként jelentett porthoz csatlakozik. A következő példában például a ttyUSB4 értéket kell használnia:

    ~$ 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. Indítsa el a terminálemulátor programot, és nyisson meg egy 115200-8-N-1 terminált az adapter által használt COM-porton. A terminálemulátor dokumentációjában megtudhatja, hogyan adhatja meg a portot és a sebességet.

Fejlesztés és hibakeresés engedélyezése

Mielőtt létrehozhat egy mintaalkalmazást az Azure Sphere-eszközön, vagy új alkalmazásokat fejleszthet hozzá, engedélyeznie kell a fejlesztést és a hibakeresést. Alapértelmezés szerint az Azure Sphere-eszközök "zárolva" vannak; vagyis nem engedélyezik a fejlesztés alatt álló alkalmazások betöltését a számítógépről, és nem teszik lehetővé az alkalmazások hibakeresését. Az eszköz hibakeresésre való előkészítése eltávolítja ezt a korlátozást, és betölti a hibakereséshez szükséges szoftvert, és feloldja az eszköz képességeit .

A valós idejű magok hibakereséséhez használja az az sphere device enable-development parancsot. Ez a parancs úgy konfigurálja az eszközt, hogy alkalmazásokat fogadjon a számítógépről a hibakereséshez, és hozzárendeli az eszközt a Fejlesztési eszközcsoporthoz, amely nem engedélyezi a felhőalapú alkalmazások frissítését. Az alkalmazásfejlesztés és a hibakeresés során az eszközt ebben a csoportban kell hagynia, hogy a felhőalapú alkalmazásfrissítések ne írja felül a fejlesztés alatt álló alkalmazást.

Windows rendszeren hozzá kell adnia a --enable-rt-core-debugging paramétert, amely betölti a hibakereső kiszolgálókat és az egyes magtípusokhoz szükséges illesztőprogramokat az eszközre.

  1. Ha még nem tette meg, jelentkezzen be az Azure Sphere-be:

    az login
    
  2. Nyisson meg egy parancssori felületet a PowerShell vagy a Windows parancssora rendszergazdai jogosultságokkal. A --enable-rt-core-debugging paraméter rendszergazdai jogosultságot igényel, mert usb-illesztőprogramokat telepít a hibakeresőhöz.

  3. Adja meg a következő parancsot:

    az sphere device enable-development --enable-rt-core-debugging  --catalog <CatalogName>  --resource-group <ResourceGroupName>
    
  4. Zárja be az ablakot a parancs befejeződése után, mert már nincs szükség rendszergazdai jogosultságra. Ajánlott eljárásként mindig a legalacsonyabb jogosultságot kell használnia, amely képes elvégezni egy feladatot.

Ha az az sphere device enable-development parancs sikertelen, segítségért tekintse meg az Azure Sphere-problémák hibaelhárítását ismertető cikket.

A HelloWorld RTApp alkalmazás létrehozása és futtatása a Visual Studióval

  1. Indítsa el a Visual Studiót. Válassza a Helyi mappa megnyitása lehetőséget, keresse meg azt a mappát, amelyben kibontotta a letöltött Azure_Sphere___Hello_World.zip fájlt, majd válassza ki a HelloWorld_RTApp_MT3620_Baremetal mappát.

  2. Ha nem MT3620 RDB-t használ, frissítse a app_manifest.json fájlt és a mintakódot a megfelelő UART(például ISU1) megadásához.

  3. Ha a CMake létrehozása nem indul el automatikusan, válassza ki a CMakeLists.txt fájlt.

  4. A Visual Studio Kimenet ablakában a CMake-kimenetnek a és CMake generation finished.a üzeneteit CMake generation started. kell megjelenítenie.

  5. Válassza azÖsszes összeállítása> lehetőséget. Ha a menü nincs jelen, nyissa meg Megoldáskezelő, kattintson a jobb gombbal a CMakeLists.txt fájlra, és válassza a Build (Létrehozás) parancsot. A HelloWorld_RTApp_MT3620_Baremetal alkalmazás kimeneti helye megjelenik a Kimenet ablakban.

  6. Az Indítási elem kiválasztása menüben válassza a HelloWorld_RTApp_MT3620_Baremetal (RTCore) lehetőséget.

  7. Nyomja le az F5 billentyűt az alkalmazás üzembe helyezéséhez.

  8. A csatlakoztatott terminálemulátornak a HelloWorld_RTApp_MT3620_Baremetal program kimenetét kell megjelenítenie. A program a következő szavakat küldi el egy másodperces időközönként:

    Tick

    Tock

  9. A hibakereső használatával töréspontokat állíthat be, megvizsgálhatja a változókat, és kipróbálhat más hibakeresési feladatokat.

A HelloWorld RTApp alkalmazás létrehozása és futtatása a Visual Studio Code-dal

  1. A Visual Studio Code-ban nyissa meg a HelloWorld_RTApp_MT3620_BareMetal mappát abban a mappában, amelyben kibontotta a letöltött Azure_Sphere___Hello_World.zip fájlt. Ha a rendszer arra kéri, hogy válasszon ki egy készletet, válassza a Ne használjon készletet lehetőséget.

  2. Ha nem MT3620 RDB-hardvert használ, frissítse a app_manifest.json fájlt és a mintakódot a megfelelő UART-elem (például ISU1) megadásához.

  3. Nyomja le az F5 billentyűt a hibakereső elindításához. Ha a projekt még nem készült el, vagy ha a fájlok megváltoztak, és újra kell építeni, a Visual Studio Code a hibakeresés megkezdése előtt létrehozza a projektet.

  4. Az Azure Sphere kimeneti ablakában a következőnek kell megjelennie: "Rendszerkép üzembe helyezése..." majd az SDK és a fordító elérési útjai.

  5. A csatlakoztatott terminálemulátornak a HelloWorld_RTApp_MT3620_Baremetal program kimenetét kell megjelenítenie. A program a következő szavakat küldi el egy másodperces időközönként:

    Tick

    Tock

  6. A Visual Studio Code hibakeresési funkcióival töréspontokat állíthat be, megvizsgálhatja a változókat, és kipróbálhat más hibakeresési feladatokat.

Hibaelhárítás

Előfordulhat, hogy az alkalmazás elkezdi a végrehajtást, mielőtt az OpenOCD kapcsolatot létesítene. Emiatt előfordulhat, hogy a kód elején beállított töréspontok kimaradnak. Ennek egy egyszerű megkerülő megoldása, ha késlelteti az alkalmazás indítását, amíg az OpenOCD nem csatlakozik.

  1. Szúrja be a következő kódot az RTCoreMain alkalmazás belépési pontjának elejére. Ez azt eredményezi, hogy az alkalmazás mindaddig hurokban while marad, amíg a változó fértéke true (igaz) lesz.

     volatile bool f = false;
     while (!f) {
        // empty.
     }
    
  2. Nyomja le az F5 billentyűt az alkalmazás hibakereséssel (F5) való elindításához, majd a végrehajtásba való betöréshez.

  3. A Helyiek hibakeresési panelen módosítsa a értékét f nulláról egyre.

  4. Haladja végig a kódot a szokásos módon.

A minta létrehozása

  1. Nyisson meg egy parancssori felületet a PowerShell, a Windows parancssor vagy a Linux parancshéj használatával. Nyissa meg a projekt buildkönyvtárát.

  2. Futtassa a CMake parancsot a projekt buildkönyvtárában a parancssorban a következő paraméterekkel:

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

      A buildkonfiguráció beállításkészletének neve a CMakePresets.json.

    • --build <cmake-path>

      A CMake-gyorsítótárat tartalmazó bináris könyvtár. Ha például a CMake-et egy Azure Sphere-mintán futtatja, a build parancs a következő lesz cmake --build out/ARM-Debug: .

    • <source-path>

      A mintaalkalmazás forrásfájljait tartalmazó könyvtár elérési útja. A példában az Azure Sphere-mintaadattár egy AzSphere nevű könyvtárba lett letöltve.

      A CMake-paraméterek szóközökkel vannak elválasztva. A sorfolytatási karakter (Windows parancssor esetén^, Linux parancssor esetén \ vagy PowerShell esetén ' ) használható az olvashatósághoz, de nem kötelező.

    Az alábbi példák egy RTApp CMake-parancsait mutatják be. Ahol ez látható, cserélje le <a fájlelérési utat> a GNU Arm Embedded Toolchain telepítési útvonalára a rendszeren.

    Windows parancssor

    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. Futtassa a Ninja parancsot az alkalmazás létrehozásához és a képcsomagfájl létrehozásához:

    ninja -C out/ARM-Debug
    

    A Ninja elhelyezi az eredményként kapott alkalmazást és .imagepackage fájlokat a megadott könyvtárban.

    A Nindzsát a CMake-n keresztül is meghívhatja a következő paranccsal:

    cmake --build out/<binary-dir>
    

    Állítsa a <binary-dir> CMake-gyorsítótárat tartalmazó bináris könyvtárra. Ha például a CMake-et egy Azure Sphere-mintán futtatja, a build parancs a következő lesz cmake --build out/ARM-Debug: .

Hibaelhárításkor, különösen a CMake-parancsok módosítása után törölje a teljes buildet, és próbálkozzon újra.

A minta futtatása

  1. Törölje az eszközön már üzembe helyezett alkalmazásokat:

    az sphere device sideload delete
    
  2. A projektkönyvtárból a parancssorba töltse be a ninja által létrehozott rendszerképcsomagot:

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

    Az alkalmazás nem sokkal a betöltése után elindul. A csatlakoztatott terminálemulátoron a következők jelennek meg:

    Tick
    
    Tock
    
    Tick
    .
    .
    .
    
  3. Kérje le a rendszerkép összetevő-azonosítóját:

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

    A parancs visszaadja a képcsomag összes metaadatait. Az alkalmazás összetevő-azonosítója az Alkalmazás képtípusának Identitás szakaszában jelenik meg. Például:

    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...
    

    Az alábbi parancsokkal leállíthatja, elindíthatja és lekérheti az alkalmazás állapotát:

    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>
    

A minta hibakeresése

  1. Állítsa le az alkalmazást, ha fut.

    az sphere device app stop --component-id <component id>
    
  2. Indítsa újra az alkalmazást hibakeresésre.

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

    Ez a parancs azt a magot adja vissza, amelyen az alkalmazás fut.

    <component id>
    App state   : running
    Core        : Real-time 0
    
  3. Lépjen annak a sysrootnak az Openocd mappájába, amellyel az alkalmazást létrehozták. A sysroots telepítése az Azure Sphere SDK telepítési mappájában történik. Windows rendszeren például a mappa alapértelmezés szerint a és a linuxos C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd helyen van telepítve, a következő helyen /opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux: .

  4. Futtassa a parancsot openocd az alábbi példában látható módon. A példa feltételezi, hogy az alkalmazás a core 0-n fut. Ha az alkalmazás az 1. magon fut, cserélje le a "targets io0" kifejezést a "targets io1" kifejezésre.

    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. Keresse meg az alkalmazás .out fájlját tartalmazó mappát, és indítsa el a fájlt arm-none-eabi-gdb, amely a GNU Arm Embedded Toolchain része:

    Windows parancssor

    "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. Az OpenOCD-kiszolgáló GDB-kiszolgálói felületet biztosít a következőn: :4444. Állítsa be a hibakeresés célját.

    target remote :4444

  7. Most már futtathat gdb-parancsokat.

  8. A csatlakoztatott terminálemulátornak meg kell jelenítenie az alkalmazás kimenetét.

Partneralkalmazások használata

Amikor betölt egy alkalmazást az Azure Sphere-eszközre, az Azure Sphere üzembehelyezési eszközei alapértelmezés szerint törlik az összes meglévő alkalmazást. Annak érdekében, hogy ez ne történjen meg az egymással kommunikáló alkalmazások fejlesztésekor, meg kell jelölnie az alkalmazásokat partnerként. Az egyik alkalmazás üzembe helyezésekor a partnerek nem törlődnek. További információt az Alkalmazások megjelölése partnerként című témakörben talál.

Következő lépések