AVNET EMBEDDED MSC SM2S-IMX8M UART port ARM alapú számítógépek hibakeresése a modul utasításai alapján

Előszó
Szerzői jogi megjegyzés
Copyright © 2023 Avnet Embedded GmbH. Minden jog fenntartva. A dokumentum másolása, mások számára történő átadása, valamint a benne foglaltak felhasználása vagy közlése tilos az Avnet Embedded /MSC Technologies kifejezett engedélye nélkül.
GmbH. Az elkövetők kártérítési felelősséggel tartoznak. Szabadalom megadása vagy használati minta vagy formatervezési minta bejegyzése esetén minden jog fenntartva.
Fontos információk
Ez a dokumentáció csak képzett közönség számára készült. Az itt leírt termék nem végfelhasználói termék. Kifejlesztett és képzett személyzet készítette tovább feldolgozásra.
Jogi nyilatkozat
Bár ez a dokumentum a legnagyobb gondossággal készült, semmiféle garanciát vagy felelősséget nem vállal a helyességért vagy az adott célra való alkalmasságért. A jelen dokumentumban található információk „ahogy vannak”, és előzetes értesítés nélkül változhatnak.
Védjegyek
Minden használt terméknév, logó vagy védjegy a megfelelő tulajdonosok tulajdona.
Általános információk
Hatály
Ez a dokumentum minden NXP i.MX8- és i.MX9-sorozatú CPU-n alapuló Avnet beágyazott Computer-on-Modulra vonatkozik, mint pl.
- SM2S-IMX8PLUS
- SM2S-IMX8M
- SM2S-IMX8MINI
- SM2S-IMX8NANO
- SM2S-IMX8 (QuadPlus/QuadMax)
- SM2S-IMX93
- OSM-SF-IMX91
- OSM-SF-IMX93
- OSM-MF-IMX8NANO
- OSM-MF-IMX8MINI
Ez a lista nem állítja a teljesség igényét, különösen azért, mert új táblák jelenhetnek meg, amelyekre ugyanazok az eljárások vonatkozhatnak, míg ez a dokumentum nem mindig frissül azonnal.
Átdolgozások és módosítások
| Felülvizsgálat | Dátum | Megjegyzés | |
| 1.0 | 25.05.2023 | M. Koch | Kezdeti verzió |
Hogyan lehet megváltoztatni a hibakeresési UART portot
Bevezetés
Sok ARM-alapú rendszerben soros konzol található, amely a fő hozzáférési eszköz a hibakereséshez és a rendszerindításhoz. Az ügyfelek igényeitől függően az ilyen rendszerekben gyakran előfordul, hogy az alapértelmezett hibakeresési UART portot át kell állítani egy másik soros portra. Debug UART port alatt azt az UART portot értjük, amely biztosítja az összes U-Boot bemenetet/kimenetet, a kernel rendszerindítási napló kimenetét és a kernel shelljét, lényegében az összes UART kommunikációt, amit egy minimális Yocto képen látni fogunk. Mivel az alapértelmezett UART-portot nem csak egy szoftverkomponens használja, hanem sok összetevő, köztük az u-boot, az atf-firmware, az optee-os és maga a kernel, az alapértelmezett UART-port beállítása kihívást jelenthet.view gyorsan elveszhet. Ez a dokumentum elmagyarázza a feladat megvalósításához szükséges összes lépést. Az egyszerűbb magyarázat érdekében ez a dokumentum az NXP i.MX8 MINI processzorhoz és az mscldk-hez készült, de nagyon kis erőfeszítéssel alkalmazható minden i.MX8- és i.MX9-sorozatú processzorra és más összeállítási rendszerre.
Környezet előkészítése
Az alapértelmezett hibakeresési UART-port megváltoztatásához módosítani kell a kódot a Yocto-ban, és ennek legegyszerűbb módja a Yocto devtool használata a források előkészítésére. A következő Yocto csomagokat kell módosítani:
- u-boot-imx (virtuális/bootloader)
- linux-imx (virtuális/kernel)
- atf-imx
- optee-os (csak optee használata esetén)
A forrásokat a devtool-al kell elkészíteni:
$ ./devtool az u-boot-imx módosítása
$ ./devtool módosítsa a linux-imx-et
$ ./devtool módosítsa az atf-imx-et
$ ./devtool optee-os módosítása
Minden forrás megtalálható a „workspace” könyvtárban.
Kód módosítása
A Bootloader módosítása
A bootloaderben megtörténik néhány alapvető UART inicializálás, ezért módosítani kell a keverést és az UART port alapcímét. Az u-boot második feladata a rendszerindítási argumentumok átadása a kernelnek, és itt módosítani kell a konzol tty argumentumát. Az UART inicializálása és keverése a legkorábbi szakaszban történiktagA rendszerindítási folyamat e az SPL-ben. A forráskód megtalálható a táblaspecifikus spl.c-ben file.
Cél file: workspace/sources/u-boot-imx/board/msc/sm2s_imx8mm/spl.c
Nyissa meg a file és keresse meg az init_ser0() függvényt:
static void init_ser0(void)
{
imx_iomux_v3_setup_multiple_pads(ser0_pads, ARRAY_SIZE(ser0_pads)); init_uart_clk(1);
}
A funkció aktiválja az órát UART2(index 1 fizikai UART 2).
Ha ehelyett az UART1-et akarjuk használni, akkor definiálhatjuk saját init_ser1 függvényünket:
static void init_ser1(void)
{
imx_iomux_v3_setup_multiple_pads(ser1_pads, ARRAY_SIZE(ser1_pads)); init_uart_clk(0);
}
Cserélje ki az init_ser0 függvényhívását init_ser1()-re a board_early_init_f() függvényben. Továbbá észrevesszük, hogy a ser1_pads struktúra nincs definiálva. Itt tisztában kell lennie az UART1 bekötésével. Az imx8mm-en az UART1 keverhető uart1 padokhoz vagy sai2 padokhoz. Ennek megfelelően a ser1_pad a következőképpen definiálható:
static iomux_v3_cfg_t const ser1_pads[] = {
IMX8MM_PAD_UART1_RXD_UART1_RX | DEFAULT_UART_PAD_CTRL, IMX8MM_PAD_UART1_TXD_UART1_TX | DEFAULT_UART_PAD_CTRL, NULL
};
Vagy a sai2 használatával:
static iomux_v3_cfg_t const ser1_pads[] = {
IMX8MM_PAD_SAI2_RXFS_UART1_TX | DEFAULT_UART_PAD_CTRL, IMX8MM_PAD_SAI2_RXC_UART1_RX | DEFAULT_UART_PAD_CTRL NULL };
Most az UART alapcímét kell módosítani, a cím a kártyák fejléc konfigurációjában van megadva file.
Cél file: workspace/sources/u-boot-imx/include/configs/msc_sm2s_imx8mm.h
Módosítsa a CONFIG_MXC_UART_BASE definíciót. Az UART1 esetében ez a következő lenne:
- // #define CONFIG_MXC_UART_BASE
- UART2_BASE_ADDR
- #define CONFIG_MXC_UART_BASE
- UART1_BASE_ADDR
Végül módosítani kell a konzol kernel argumentumát. Az érték ugyanabban a fejlécben található file. Keressen rá „console=ttymxc1…” és módosítsd a „ttymxc1”-et „ttymxc0”-ra. Az indexszám korrelál az UART indexszel, és mindig UART index mínusz 1. Tehát az UART 2-hez a ttymxc1-et, az UART3-hoz a ttymxc2-t stb. használjuk.
Az ARM Trusted Firmware módosítása
Az Arm Trusted Firmware (imx-atf) nem rendelkezik saját UART inicializálási rutinnal, azonban van egy merev kódolt UART alapcíme, és az u-bootból származó megfelelő UART inicializálásra támaszkodik. Az u-boot és az imx-atf eltérő alapcímkonfigurációja valószínűleg a processzort egy kivételkezelőben ragadja, és az UART-on nem lesz látható semmi (úgy tűnik, hogy a CPU látható ok nélkül lefagy). Az UART port megváltoztatásakor ennek a változásnak az imx-atf-ben is meg kell történnie! Az imx-atf UART-portjának megváltoztatásához az alapcím módosítása szükséges. Ez az érték a platform.mk fájlban van beállítva file a processzortól.
Cél file: munkaterület/sources/imx-atf/plat/imx/imx8m/imx8mm/platform.mk
A helyes UART alapcím az imx8 referencia kézikönyvben található. Ebben az exampUART2-ről UART1-re váltunk imx8mm-en:
# IMX_BOOT_UART_BASE ?= 0x30890000
IMX_BOOT_UART_BASE ?= 0x30860000
Optee-os módosítása
Az Optee OS rendszerint akkor töltődik be, ha a rendszeren CAAM modul titkosítást használnak. Az Optee ugyanazokon az ARM Cortex-A53 magokon fut, de egy másik teljesen független példányban, mint a kernel. Az Optee UART hozzáférést is igényel és ebben az esetben alapcím módosítást jelent.
Cél file: workspace/sources/optee-os/core/arch/arm/plat-imx/conf.mk
Ez az example fogja beállítani az UART alapcímet UART2-ről UART1-re:
#CFG_UART_BASE ?= UART2_BASE
CFG_UART_BASE ?= UART1_BASE
A kernel módosítása
A kernelnek csak néhány eszközfa-módosításra lesz szüksége, és csak akkor, ha az UART még nem érhető el a kernelben. Sok esetben egyáltalán nem lesz szükség módosításra. Azonban ellenőrizze, hogy létezik-e a használni kívánt tty-példány! Ellenőrizze a tty jelenlétét egy shell paranccsal:
$ ls /dev/ttymxc*
Ha a ttymxc már elérhető, nincs szükség módosításra. Plample, UART2 esetén ez a /dev/ttymxc1 lenne. Mint már tudjuk, a tty indexe mindig a fizikai UART indexe mínusz 1. Ha a szükséges tty nem elérhető, kövesse a szokásos UART-integrációs eljárást.
Építés és tesztelés
A biztonságos újjáépítés érdekében teljes tisztítást kell végezni:
$ ./bitbake –c cleanall u-boot-imx linux-imx imx-atf optee-os
Építse újra a képet az alapértelmezett build paranccsal, plample:
$ ./bitbake msc-image-base
Tesztelés céljából egy UART adaptert kell csatlakoztatni a régi UART-hoz. A régi UART-on ne legyen több kimenet! Az új UART-nak teljesen működőképesnek kell lennie, ehhez ellenőrizze a kapcsolatot az u-boot UART shell és a linux konzol használatával.
Terméktámogatás
Az Avnet Embedded mérnökei és technikusai elkötelezettek amellett, hogy szükség esetén támogatást nyújtsanak ügyfeleinknek. Mielőtt kapcsolatba lépne az Avnet Embedded műszaki támogatásával, kérjük, tekintse meg a megfelelő oldalakat webwebhely a címen
https://embedded.avnet.com/support/
a legújabb dokumentációért, illesztőprogramok és szoftverletöltésekért.
Ha az ott megadott információk nem oldják meg a problémát, kérjük, forduljon az Avnet Embedded műszaki támogatási csapatához az alábbiak szerint:
Email: support.boards@avnet.eu
Telefon: +49 (0)8165 906-200
![]()
Dokumentumok / Források
![]() |
AVNET BEÉPÜLT MSC SM2S-IMX8M Hibakeresés UART port ARM alapú számítógépek a modulon [pdfUtasítások MSC SM2S-IMX8M, MSC SM2S-IMX8M UART port ARM alapú számítógépek hibakeresése a modulon, UART port ARM alapú számítógépek hibakeresése a modulon, UART port ARM alapú számítógépek modulon, ARM alapú számítógépek modulon portolása, ARM alapú számítógépek modulon alapuló hibakeresése a modulon, a számítógépeken a modulon, a modulon |




