AVNET EMBEDDED MSC SM2S-IMX8M Debug UART Port ARM basearre kompjûters op module ynstruksjes
Foarwurd
Copyright Notice
Copyright © 2023 Avnet Embedded GmbH. Alle rjochten foarbehâlden. It kopiearjen fan dit dokumint, it jaan oan oaren en it gebrûk of kommunikaasje fan 'e ynhâld dêrfan, binne ferbean sûnder útdruklike autoriteit fan Avnet Embedded / MSC Technologies
GmbH. Oertreders binne oanspraaklik foar betelling fan skea. Alle rjochten binne foarbehâlden yn gefal fan it ferlienen fan in oktroai of de registraasje fan in gebrûksmodel of ûntwerp.
Wichtige ynformaasje
Dizze dokumintaasje is allinich bedoeld foar kwalifisearre publyk. It hjir beskreaune produkt is gjin ein brûker produkt. It waard ûntwikkele en produsearre foar fierdere ferwurking troch oplaat personiel.
Disclaimer
Hoewol dit dokumint mei de uterste soarch is oanmakke, wurdt gjin garânsje of oanspraaklikens foar korrektheid of geskiktheid foar in bepaald doel ymplisearre. De ynformaasje yn dit dokumint wurdt levere "as is" en is ûnderwerp te feroarjen sûnder notice.
Handelsmerken
Alle brûkte produktnammen, logo's of hannelsmerken binne eigendom fan har respektive eigners.
Algemiene ynformaasje
Scope
Dit dokumint jildt foar alle Avnet Embedded Computer-on-Modules basearre op NXP i.MX8- en i.MX9-rige CPU's, lykas bgl.
- 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
Dizze list beweart net dat se útputtend binne, benammen om't nije buorden kinne wurde frijjûn wêrfoar deselde prosedueres fan tapassing kinne, wylst dit dokumint miskien net altyd daliks bywurke wurdt.
Ferzjes en oanpassings
Revyzje | Datum | Kommentaar | |
1.0 | 25.05.2023 | M. Koch | Inisjele ferzje |
Hoe feroarje debug UART haven
Ynlieding
In protte ARM-basearre systemen komme mei in Serial Console as de wichtichste middel fan tagong foar debug en systeem bring-up doelen. Ofhinklik fan klanteasken is it in faak foarkommende needsaak yn sokke systemen dat de standert debug UART-poarte moat wurde oerskeakele nei in oare seriële poarte. Mei debug UART-poarte bedoele wy de UART-poarte dy't alle U-Boot-ynput / útfier, kernel-bootlog-útfier en kernel-shell sil leverje, yn prinsipe alle UART-kommunikaasje sil men sjen yn in minimale Yocto-ôfbylding. Sûnt de standert UART-poarte wurdt net brûkt troch mar ien softwarekomponint, mar leaver troch in protte komponinten, ynklusyf u-boot, atf-firmware, optee-os en kernel sels, kin it ynstellen fan de standert UART-poarte útdaagjend wêze, en it oerview kin gau ferlern gean. Dit dokumint sil alle stappen útlizze om te folgjen, om dizze taak te berikken. Foar makliker útlis, dit dokumint is skreaun foar NXP i.MX8 MINI prosessor en mscldk, mar kin tapast wurde op alle i.MX8- en i.MX9-rige Prozessoren en oare build systemen mei hiel lyts ynspannings .
Tariede omjouwing
It feroarjen fan de standert debug UART-poarte sil wizigjen fan koade yn Yocto fereaskje, en de maklikste manier om it te dwaan, is Yocto devtool te brûken om de boarnen foar ús te meitsjen. It sil nedich wêze om de folgjende Yocto-pakketten te wizigjen:
- u-boot-imx (firtuele / bootloader)
- linux-imx (firtuele / kernel)
- atf-imx
- optee-os (allinich as optee wurdt brûkt)
Boarnen moatte wurde taret mei devtool:
$ ./devtool wizigje u-boot-imx
$ ./devtool wizigje linux-imx
$ ./devtool feroarje atf-imx
$ ./devtool wizigje optee-os
Alle boarnen kinne fûn wurde yn 'e map "wurkromte".
It feroarjen fan koade
It feroarjen fan de Bootloader
Yn 'e bootloader sil wat basis UART-initialisearring barre, dus it sil nedich wêze om muxing en it basisadres fan' e UART-poarte te feroarjen. De twadde taak fan u-boot is om bootarguminten troch te jaan oan kernel en hjir sil it nedich wêze om it konsole tty-argumint te feroarjen. UART inisjalisaasje en muxing bart yn de ierste stage fan bootproses yn 'e SPL. De boarne koade is te finen yn it bestjoer spesifike spl.c file.
Doel file: workspace/sources/u-boot-imx/board/msc/sm2s_imx8mm/spl.c
Iepenje de file en navigearje nei de funksje init_ser0():
statyske leechte init_ser0 (void)
{
imx_iomux_v3_setup_multiple_pads(ser0_pads, ARRAY_SIZE(ser0_pads)); init_uart_clk(1);
}
De funksje aktivearret de klok foar UART2(yndeks 1 foar fysike UART 2).
No, as wy ynstee UART1 wolle brûke, kinne wy ús eigen init_ser1-funksje definiearje:
statyske leechte init_ser1 (void)
{
imx_iomux_v3_setup_multiple_pads(ser1_pads, ARRAY_SIZE(ser1_pads)); init_uart_clk(0);
}
Ferfange de funksje oprop fan init_ser0 mei init_ser1 () yn de board_early_init_f () funksje. Fierder fernimme wy dat ser1_pads struktuer is net definiearre. Hjir sil it nedich wêze om bewust te wêzen fan 'e bedrading fan UART1. Op imx8mm kin UART1 wurde muxed nei uart1 pads, of nei sai2 pads. Dêrtroch kinne ser1_pads wurde definiearre as:
statyske 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
};
Of oars, mei help fan sai2:
statyske 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 };
No moat it UART-basisadres wizige wurde, it adres is definieare yn konfiguraasje fan 'e koptekst file.
Doel file: workspace/sources/u-boot-imx/include/configs/msc_sm2s_imx8mm.h
Feroarje de definysje CONFIG_MXC_UART_BASE. Foar UART1 soe dit wêze:
- // #define CONFIG_MXC_UART_BASE
- UART2_BASE_ADDR
- #define CONFIG_MXC_UART_BASE
- UART1_BASE_ADDR
Uteinlik moat it argumint fan 'e konsolekernel wizige wurde. De wearde kin fûn wurde yn deselde koptekst file. Sykje nei “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..
It wizigjen fan de ARM Trusted Firmware
Arm Trusted Firmware (imx-atf) hat gjin eigen UART-initialisaasjeroutine, lykwols hat it in hardcoded UART-basisadres, en fertrout op juste UART-initialisearring fan u-boot. In oare basis adres konfiguraasje yn u-boot en imx-atf sil nei alle gedachten litte de prosessor fêst yn in útsûndering handler, en der sil neat sichtber op UART (de CPU liket te hingjen foar gjin sichtbere reden). As de UART-poarte wurdt feroare, moat dizze feroaring ek barre yn imx-atf! It feroarjen fan de UART-poarte yn imx-atf fereasket in wiziging fan basisadres. Dizze wearde is ynsteld yn 'e platform.mk file fan de prosessor.
Doel file: workspace/sources/imx-atf/plat/imx/imx8m/imx8mm/platform.mk
It juste UART-basisadres is te finen yn it imx8-referinsjehânlieding. Yn dizze eksampwy feroarje fan UART2 nei UART1 op imx8mm:
# IMX_BOOT_UART_BASE ?= 0x30890000
IMX_BOOT_UART_BASE ?= 0x30860000
Feroarje optee-os
Optee OS wurdt normaal laden as de CAAM-module-kryptografy wurdt brûkt op it systeem. Optee rint op deselde ARM Cortex-A53-kearnen, mar yn in oare folslein ûnôfhinklike eksimplaar as de kearn. Optee fereasket ek UART-tagong en yn dit gefal betsjut it in wiziging fan basisadres.
Doel file: workspace/sources/optee-os/core/arch/arm/plat-imx/conf.mk
Dizze eksample sil UART-basisadres ynstelle fan UART2 nei UART1:
#CFG_UART_BASE ?= UART2_BASE
CFG_UART_BASE ?= UART1_BASE
It feroarjen fan de kernel
Kernel sil mar in pear oanpassingen fan apparaatbeam nedich wêze, en allinich as de UART noch net yn kernel beskikber is. Yn in protte gefallen sil der hielendal gjin wiziging nedich wêze. Kontrolearje lykwols as de tty-eksimplaar dy't jo brûke wolle bestiet! Kontrolearje de oanwêzigens fan tty mei in shell-kommando:
$ ls /dev/ttymxc*
As de ttymxc al beskikber is, is gjin wiziging nedich. Bygelyksample, foar UART2 soe dit /dev/ttymxc1 wêze. As wy al witte, is de yndeks fan tty altyd de yndeks fan 'e fysike UART minus 1. As de fereaske tty net beskikber is, folgje dan de gewoane UART-yntegraasjeproseduere.
Bouwe & Test
Foar in feilige werbou moat in folsleine skjinmeitsjen tapast wurde:
$ ./bitbake –c cleanall u-boot-imx linux-imx imx-atf optee-os
Bou de ôfbylding opnij mei it standert build kommando, bygelyksample:
$ ./bitbake msc-image-base
Foar testdoel moat in UART-adapter ferbûn wurde mei de âlde UART. D'r moat gjin útfier mear wêze op 'e âlde UART! De nije UART moat folslein funksjoneel wêze, dêrfoar ferifiearje asjebleaft de ferbining mei de u-boot UART-shell en de linux-konsole.
Produkt Support
Avnet Embedded yngenieurs en technici binne ynsette om stipe oan ús klanten wannear nedich. Foardat jo kontakt opnimme mei technyske stipe fan Avnet Embedded, rieplachtsje asjebleaft de oanbelangjende siden op ús website at
https://embedded.avnet.com/support/
foar de lêste dokumintaasje, bestjoerders en software downloads.
As de ynformaasje dy't dêr jo probleem net oplost, nim dan kontakt op mei ús Avnet Embedded Technical Support-team as folget:
E-post: support.boards@avnet.eu
Tillefoan: +49 (0)8165 906-200
Dokuminten / Resources
![]() |
AVNET EMBEDDED MSC SM2S-IMX8M Debug UART Port ARM-basearre kompjûters op module [pdfYnstruksjes MSC SM2S-IMX8M, MSC SM2S-IMX8M Debug UART-poarte ARM-basearre kompjûters op module, debug UART-poarte ARM-basearre kompjûters op module, UART-poarte ARM-basearre kompjûters op module, haven ARM-basearre kompjûters op module, ARM-basearre kompjûters op module, basearre kompjûters op Module, Kompjûters op Module, Module |