AVNET EMBEDDED MSC SM2S-IMX8M Ontfout UART-poort ARM-gebaseerde rekenaars op module-instruksies
Voorwoord
Kopieregkennisgewing
Kopiereg © 2023 Avnet Embedded GmbH. Alle regte voorbehou. Kopiëring van hierdie dokument, verskaffing aan ander en die gebruik of kommunikasie van die inhoud daarvan, is verbode sonder uitdruklike toestemming van Avnet Embedded /MSC Technologies.
GmbH. Oortreders is aanspreeklik vir betaling van skadevergoeding. Alle regte word voorbehou in die geval van die toestaan van 'n patent of die registrasie van 'n gebruiksmodel of ontwerp.
Belangrike inligting
Hierdie dokumentasie is slegs bedoel vir gekwalifiseerde gehore. Die produk wat hierin beskryf word, is nie 'n eindgebruikerproduk nie. Dit is ontwikkel en vervaardig vir verdere verwerking deur opgeleide personeel.
Disclaimer
Alhoewel hierdie dokument met die grootste sorg saamgestel is, word geen waarborg of aanspreeklikheid vir korrektheid of geskiktheid vir enige spesifieke doel geïmpliseer nie. Die inligting in hierdie dokument word "soos dit is" verskaf en is onderhewig aan verandering sonder kennisgewing.
Handelsmerke
Alle gebruikte produkname, logo's of handelsmerke is die eiendom van hul onderskeie eienaars.
Algemene inligting
Omvang
Hierdie dokument is van toepassing op alle Avnet Embedded Computer-on-Modules gebaseer op NXP i.MX8- en i.MX9-reeks SVE's, soos bv.
- 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
Hierdie lys maak nie aanspraak op volledige bekendstelling nie, veral aangesien nuwe borde vrygestel kan word waarvoor dieselfde prosedures van toepassing mag wees, terwyl hierdie dokument nie altyd onmiddellik opgedateer sal word nie.
Hersienings en wysigings
Hersiening | Datum | Lewer kommentaar | |
1.0 | 25.05.2023 | M. Koch | Aanvanklike weergawe |
Hoe om die ontfouting UART-poort te verander
Inleiding
Baie ARM-gebaseerde stelsels kom met 'n Seriële Konsole as die hooftoegangsmiddel vir ontfouting en stelselhersteldoeleindes. Afhangende van kliëntvereistes, is dit 'n gereelde noodsaaklikheid in sulke stelsels dat die standaard ontfouting UART-poort na 'n ander seriële poort oorgeskakel moet word. Met ontfouting UART-poort bedoel ons die UART-poort wat alle U-Boot-invoer/uitvoer, kern-opstartlog-uitvoer en kerndop sal verskaf, basies alle UART-kommunikasie wat 'n mens in 'n minimale Yocto-beeld sal sien. Aangesien die standaard UART-poort nie deur slegs een sagtewarekomponent gebruik word nie, maar eerder deur baie komponente, insluitend u-boot, atf-firmware, optee-os en die kern self, kan die instelling van die standaard UART-poort uitdagend wees, en die oor...view kan vinnig verlore raak. Hierdie dokument sal al die stappe verduidelik wat gevolg moet word om hierdie taak te bereik. Vir makliker verduideliking, is hierdie dokument geskryf vir die NXP i.MX8 MINI-verwerker en mscldk, maar kan met baie min moeite op alle i.MX8- en i.MX9-reeks verwerkers en ander boustelsels toegepas word.
Omgewing voorberei
Om die standaard ontfoutings-UART-poort te verander, sal die wysiging van kode in Yocto vereis word, en die maklikste manier om dit te doen, is om Yocto-ontwikkeltool te gebruik om die bronne vir ons voor te berei. Dit sal nodig wees om die volgende Yocto-pakkette te wysig:
- u-boot-imx (virtueel/selflaaier)
- linux-imx (virtueel/kern)
- atf-imx
- optee-os (slegs indien optee gebruik word)
Bronne moet voorberei word met devtool:
$ ./devtool wysig u-boot-imx
$ ./devtool wysig linux-imx
$ ./devtool wysig atf-imx
$ ./devtool wysig optee-os
Alle bronne kan in die "werkruimte"-gids gevind word.
Wysig kode
Wysig die selflaaiprogram
In die selflaaiprogram sal 'n mate van basiese UART-inisialisering plaasvind, dus sal dit nodig wees om die muxing en die basisadres van die UART-poort te verander. Die tweede taak van u-boot is om selflaaiargumente aan die kern deur te gee en hier sal dit nodig wees om die konsole tty-argument te verander. UART-inisialisering en muxing vind in die vroegste s plaas.tage van die opstartproses in die SPL. Die bronkode kan gevind word in die bordspesifieke spl.c file.
Teiken file: werkspasie/bronne/u-boot-imx/bord/msc/sm2s_imx8mm/spl.c
Maak die oop file en navigeer na die funksie init_ser0():
statiese leemte init_ser0(leemte)
{
imx_iomux_v3_setup_multiple_pads(ser0_pads, ARRAY_SIZE(ser0_pads)); init_uart_clk(1);
}
Die funksie aktiveer die klok vir UART2(indeks 1 vir fisiese UART 2).
Nou, as ons eerder UART1 wil gebruik, kan ons ons eie init_ser1-funksie definieer:
statiese leemte init_ser1(leemte)
{
imx_iomux_v3_setup_multiple_pads(ser1_pads, ARRAY_SIZE(ser1_pads)); init_uart_clk(0);
}
Vervang die funksie-oproep van init_ser0 met init_ser1() in die board_early_init_f() funksie. Verder merk ons op dat ser1_pads se struktuur nie gedefinieer is nie. Hier sal dit nodig wees om bewus te wees van die bedrading van UART1. Op imx8mm kan UART1 gekoppel word aan uart1-pads, of aan sai2-pads. Gevolglik kan ser1_pads gedefinieer word as:
statiese 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, NUL
};
Of andersins, met behulp van sai2:
statiese 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 NUL };
Nou moet die UART-basisadres gewysig word, die adres word in die bordkopkonfigurasie gedefinieer. file.
Teiken file: werkspasie/bronne/u-boot-imx/sluit in/konfigurasies/msc_sm2s_imx8mm.h
Wysig die definisie CONFIG_MXC_UART_BASE. Vir UART1 sou dit wees:
- // #definieer CONFIG_MXC_UART_BASE
- UART2_BASE_ADDR
- #definieer CONFIG_MXC_UART_BASE
- UART1_BASE_ADDR
Laastens moet die konsole-kern-argument gewysig word. Die waarde kan in dieselfde koptekst gevind word. file. Soek vir “console=ttymxc1…” and modify “ttymxc1” to “ttymxc0”. The index number correlates to UART index, and is always UART index minus 1. So for UART 2 we use ttymxc1, for UART3 use ttymxc2 etc..
Wysig die ARM Vertroude Firmware
Arm Trusted Firmware (imx-atf) het geen eie UART-inisialiseringsroetine nie, maar dit het 'n hardgekodeerde UART-basisadres en maak staat op behoorlike UART-inisialisering vanaf u-boot. 'n Ander basisadreskonfigurasie in u-boot en imx-atf sal heel waarskynlik die verwerker in 'n uitsonderingshanterer laat vassteek, en daar sal niks sigbaar wees op UART nie (die SVE lyk asof dit sonder enige sigbare rede hang). Wanneer die UART-poort verander word, moet hierdie verandering ook in imx-atf plaasvind! Die verandering van die UART-poort in imx-atf vereis 'n basisadreswysiging. Hierdie waarde word in platform.mk gestel. file van die verwerker.
Teiken file: werkspasie/bronne/imx-atf/plat/imx/imx8m/imx8mm/platform.mk
Die korrekte UART-basisadres kan in die imx8-verwysingshandleiding gevind word. In hierdie voorbeeldample ons verander van UART2 na UART1 op imx8mm:
# IMX_BOOT_UART_BASE ?= 0x30890000
IMX_BOOT_UART_BASE ?= 0x30860000
Wysig optee-os
Optee OS word gewoonlik gelaai wanneer die CAAM-module-kriptografie op die stelsel gebruik word. Optee loop op dieselfde ARM Cortex-A53-kerne, maar in 'n ander heeltemal onafhanklike instansie as die kern. Optee benodig ook UART-toegang en in hierdie geval beteken dit 'n basisadreswysiging.
Teiken file: werkspasie/bronne/optee-os/kern/arch/arm/plat-imx/conf.mk
Hierdie example sal UART-basisadres van UART2 na UART1 stel:
#CFG_UART_BASE ?= UART2_BASE
CFG_UART_BASE ?= UART1_BASE
Wysig die kern
Die kern sal slegs 'n paar toestelboomwysigings benodig, en slegs as die UART nog nie in die kern beskikbaar is nie. In baie gevalle sal geen wysiging hoegenaamd nodig wees nie. Verifieer egter asseblief of die tty-instansie wat jy wil gebruik bestaan! Kontroleer die tty-teenwoordigheid met 'n dopopdrag:
$ ls /dev/ttymxc*
Indien die ttymxc reeds beskikbaar is, is geen wysiging nodig nie. Byvoorbeeldample, vir UART2 sou dit /dev/ttymxc1 wees. Soos ons reeds weet, is die indeks van tty altyd die indeks van die fisiese UART minus 1. Indien die vereiste tty nie beskikbaar is nie, volg asseblief die gewone UART-integrasieprosedure.
Bou en Toets
Vir 'n veilige herbou moet 'n volledige skoonmaak toegepas word:
$ ./bitbake –c cleanall u-boot-imx linux-imx imx-atf optee-os
Bou die beeld weer met die standaard bou-opdrag, byvoorbeeldample:
$ ./bitbake msc-beeld-basis
Vir toetsdoeleindes moet 'n UART-adapter aan die ou UART gekoppel word. Daar moet geen uitvoer meer op die ou UART wees nie! Die nuwe UART moet ten volle funksioneel wees, daarvoor moet u die verbinding verifieer deur die u-boot UART-dop en die Linux-konsole te gebruik.
Produk Ondersteuning
Avnet Embedded-ingenieurs en -tegnici is daartoe verbind om ondersteuning aan ons kliënte te bied wanneer nodig. Raadpleeg asseblief die onderskeie bladsye op ons webwerf voordat u die Tegniese Ondersteuning van Avnet Embedded kontak. webwebwerf by
https://embedded.avnet.com/support/
vir die nuutste dokumentasie, drywers en sagteware-aflaaie.
Indien die inligting wat daar verskaf word nie u probleem oplos nie, kontak asseblief ons Avnet Embedded Tegniese Ondersteuningspan soos volg:
E-pos: ondersteuning.borde@avnet.eu
Telefoon: +49 (0)8165 906-200
Dokumente / Hulpbronne
![]() |
AVNET EMBEDDED MSC SM2S-IMX8M Ontfouting UART-poort ARM-gebaseerde rekenaars op module [pdf] Instruksies MSC SM2S-IMX8M, MSC SM2S-IMX8M Ontfout UART-poort ARM-gebaseerde rekenaars op module, Ontfout UART-poort ARM-gebaseerde rekenaars op module, UART-poort ARM-gebaseerde rekenaars op module, Poort ARM-gebaseerde rekenaars op module, ARM-gebaseerde rekenaars op module, Gebaseerde rekenaars op module, Rekenaars op module, Module |