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
- Telepítse a CMake-t és a Ninja-t Windows vagy Linux rendszeren.
- Telepítse a Visual Studio Code-ot Windows vagy Linux rendszeren.
- Telepítse a CMake-t és a Ninja-t Windows vagy Linux rendszeren.
- Telepítse a Windowshoz vagy Linuxhoz készült Azure Sphere SDK-t.
- Válasszon ki egy katalógust, és igényelje az eszközt.
- Konfigurálja a hálózatkezelést, és frissítse az eszköz operációs rendszerét.
A mintaalkalmazás letöltése
A HelloWorld alkalmazást a következőképpen töltheti le:
- Mutasson a böngészőre a Microsoft Samples Browserre.
- Írja be az "Azure Sphere" kifejezést a Keresés mezőbe.
- Válassza az Azure Sphere – "Helló világ!" alkalmazás lehetőséget a keresési eredmények közül.
- Válassza a ZIP letöltése lehetőséget.
- 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:
- Válassza a Fájlbeállítások>Beállítások>>Bővítmények>Azure Sphere lehetőséget.
- 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.
- 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ű.
- 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ű.
- 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.
- 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.
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ű.
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ű.
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
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.
Ha még nem tette meg, jelentkezzen be az Azure Sphere-be:
az login
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.Adja meg a következő parancsot:
az sphere device enable-development --enable-rt-core-debugging --catalog <CatalogName> --resource-group <ResourceGroupName>
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
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.
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.
Ha a CMake létrehozása nem indul el automatikusan, válassza ki a CMakeLists.txt fájlt.
A Visual Studio Kimenet ablakában a CMake-kimenetnek a és
CMake generation finished.
a üzeneteitCMake generation started.
kell megjelenítenie.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.
Az Indítási elem kiválasztása menüben válassza a HelloWorld_RTApp_MT3620_Baremetal (RTCore) lehetőséget.
Nyomja le az F5 billentyűt az alkalmazás üzembe helyezéséhez.
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
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
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.
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.
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.
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.
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
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.
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. }
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.
A Helyiek hibakeresési panelen módosítsa a értékét
f
nulláról egyre.Haladja végig a kódot a szokásos módon.
A minta létrehozása
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.
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.
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ő leszcmake --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
Törölje az eszközön már üzembe helyezett alkalmazásokat:
az sphere device sideload delete
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 . . .
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
Állítsa le az alkalmazást, ha fut.
az sphere device app stop --component-id <component id>
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
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
: .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.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
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
Most már futtathat gdb-parancsokat.
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
- Ismerje meg, hogyan futtathatja az Azure RTOS-t az Azure Sphere-rel
- Ismerje meg a valós idejű képes magok további mintáit:
- További információ az Azure Sphere-alkalmazásokról