AVNET EMBEDDED MSC SM2S-IMX8M Debug UART-port ARM-baserede computere på modulinstruktioner
AVNET EMBEDDED MSC SM2S-IMX8M Debug UART-port ARM-baserede computere på modul

Forord

Ophavsretsmeddelelse

Copyright © 2023 Avnet Embedded GmbH. Alle rettigheder forbeholdes. Kopiering af dette dokument, udlevering til andre og brug eller kommunikation af indholdet deraf, er forbudt uden udtrykkelig tilladelse fra Avnet Embedded /MSC Technologies

GmbH. Lovovertrædere er erstatningsansvarlige. Alle rettigheder forbeholdes i tilfælde af udstedelse af patent eller registrering af en brugsmodel eller design.

Vigtig information

Denne dokumentation er kun beregnet til kvalificerede målgrupper. Produktet beskrevet heri er ikke et slutbrugerprodukt. Den blev udviklet og fremstillet til videre forarbejdning af uddannet personale.

Ansvarsfraskrivelse

Selvom dette dokument er blevet genereret med den største omhu, er der ingen garanti eller ansvar for korrekthed eller egnethed til et bestemt formål. Oplysningerne i dette dokument leveres "som de er" og kan ændres uden varsel.

Varemærker

Alle brugte produktnavne, logoer eller varemærker tilhører deres respektive ejere.

Generel information

Omfang

Dette dokument gælder for alle Avnet Embedded Computer-on-Modules baseret på NXP i.MX8- og i.MX9-serien CPU'er, som f.eks.

  • 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

Denne liste hævder ikke at være udtømmende, især da nye tavler kan frigives, for hvilke de samme procedurer kan gælde, mens dette dokument ikke altid opdateres med det samme.

Revisioner og ændringer

Revision Dato Kommentar
1.0 25.05.2023 M. Koch Indledende version

Sådan ændres debug UART-port

Indledning

Mange ARM-baserede systemer kommer med en seriel konsol som det vigtigste middel til adgang til fejlretnings- og systemopdragsformål. Afhængigt af kundens krav er det en hyppigt forekommende nødvendighed i sådanne systemer, at standard debug UART-porten skal skiftes til en anden seriel port. Med debug UART-port mener vi UART-porten, som vil give al U-Boot input/output, kernel bootlog output og kernel shell, stort set al UART kommunikation, man vil se i et minimalt Yocto billede. Da standard UART-porten ikke kun bruges af én softwarekomponent, men snarere af mange komponenter, inklusive u-boot, atf-firmware, optee-os og kernen selv, kan det være en udfordring at indstille standard-UART-porten, ogview kan hurtigt gå tabt. Dette dokument vil forklare alle trin, der skal følges for at opnå denne opgave. For lettere forklaring er dette dokument skrevet til NXP i.MX8 MINI-processor og mscldk, men kan anvendes på alle i.MX8- og i.MX9-seriens processorer og andre byggesystemer med meget lidt indsats.

Forbereder miljø

Ændring af standard debug UART-porten vil kræve ændring af kode i Yocto, og den nemmeste måde at gøre det på er at bruge Yocto devtool til at forberede kilderne for os. Det vil være nødvendigt at ændre følgende Yocto-pakker:

  • u-boot-imx (virtuel/bootloader)
  • linux-imx (virtuel/kerne)
  • atf-imx
  • optee-os (kun hvis optee bruges)

Kilder skal forberedes med devtool: 

$ ./devtool ændre u-boot-imx
$ ./devtool ændre linux-imx
$ ./devtool ændre atf-imx
$ ./devtool ændre optee-os

Alle kilder kan findes i mappen "arbejdsområde".

Ændring af kode

Ændring af bootloader

I bootloaderen vil der ske en vis grundlæggende UART-initialisering, så det vil være nødvendigt at ændre muxing og UART-portens basisadresse. Den anden opgave for u-boot er at sende boot-argumenter til kernen, og her vil det være nødvendigt at ændre console tty-argumentet. UART initialisering og muxing sker i de tidligste stage af opstartsprocessen i SPL. Kildekoden kan findes i den tavlespecifikke spl.c file.

Mål file: workspace/sources/u-boot-imx/board/msc/sm2s_imx8mm/spl.c

Åbn file og naviger til funktionen init_ser0():

statisk tomrum init_ser0(void)
{
imx_iomux_v3_setup_multiple_pads(ser0_pads, ARRAY_SIZE(ser0_pads)); init_uart_clk(1);
}

Funktionen aktiverer uret for UART2(indeks 1 for fysisk UART 2).

Nu, hvis vi vil bruge UART1 i stedet, kunne vi definere vores egen init_ser1-funktion:

statisk tomrum init_ser1(void)
{
imx_iomux_v3_setup_multiple_pads(ser1_pads, ARRAY_SIZE(ser1_pads)); init_uart_clk(0);
}

Erstat funktionskaldet for init_ser0 med init_ser1() i board_early_init_f()-funktionen. Yderligere bemærker vi, at ser1_pads struktur ikke er defineret. Her vil det være nødvendigt at være opmærksom på ledningsføringen af ​​UART1. På imx8mm kan UART1 mikses til uart1 pads eller til sai2 pads. Derfor kan ser1_pads defineres som:

statiske 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
};

Eller også ved at bruge sai2:

statiske 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 };

Nu skal UART-baseadressen ændres, adressen er defineret i boards header config file.

Mål file: workspace/sources/u-boot-imx/include/configs/msc_sm2s_imx8mm.h

Rediger definitionen CONFIG_MXC_UART_BASE. For UART1 ville dette være: 

  • // #define CONFIG_MXC_UART_BASE
  • UART2_BASE_ADDR
  • #define CONFIG_MXC_UART_BASE
  • UART1_BASE_ADDR

Endelig skal konsolkerne-argumentet ændres. Værdien kan findes i samme overskrift file. Søg efter “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..

Ændring af ARM Trusted Firmware

Arm Trusted Firmware(imx-atf) har ingen egen UART-initialiseringsrutine, men den har en hårdkodet UART-baseadresse og er afhængig af korrekt UART-initialisering fra u-boot. En anden baseadressekonfiguration i u-boot og imx-atf vil højst sandsynligt lade processoren sidde fast i en undtagelseshandler, og der vil ikke være noget synligt på UART (CPU'en ser ud til at hænge uden synlig grund). Når UART-porten ændres, skal denne ændring også ske i imx-atf! Ændring af UART-porten i imx-atf kræver en grundadresseændring. Denne værdi er angivet i platform.mk file af processoren.

Mål file: workspace/sources/imx-atf/plat/imx/imx8m/imx8mm/platform.mk 

Den korrekte UART-baseadresse kan findes i imx8-referencemanualen. I dette exampvi skifter fra UART2 til UART1 på imx8mm:

# IMX_BOOT_UART_BASE ?= 0x30890000
IMX_BOOT_UART_BASE ?= 0x30860000

Ændring af optee-os

Optee OS indlæses normalt, når CAAM-modulets kryptografi bruges på systemet. Optee kører på de samme ARM Cortex-A53-kerner, men i en anden fuldstændig uafhængig instans som kernen. Optee kræver også UART-adgang, og i dette tilfælde betyder det en basisadresseændring.

Mål file: workspace/sources/optee-os/core/arch/arm/plat-imx/conf.mk

Denne example vil indstille UART-basisadressen fra UART2 til UART1: 

#CFG_UART_BASE ?= UART2_BASE
CFG_UART_BASE ?= UART1_BASE

Ændring af kernen

Kernel vil kun kræve få enhedstræændringer, og kun hvis UART ikke er tilgængelig i kernen endnu. I mange tilfælde kræves ingen ændringer overhovedet. Bekræft dog, om den tty-instans, du vil bruge, findes! Tjek tty-tilstedeværelsen med en shell-kommando:

$ ls /dev/ttymxc*

Hvis ttymxc allerede er tilgængelig, er det ikke nødvendigt at ændre. F.eksample, for UART2 ville dette være /dev/ttymxc1. Som vi allerede ved, er indekset for tty altid indekset for den fysiske UART minus 1. Hvis den nødvendige tty ikke er tilgængelig, skal du følge den sædvanlige UART-integrationsprocedure.

Byg & test

For en sikker genopbygning bør en fuld oprydning udføres:

$ ./bitbake –c cleanall u-boot-imx linux-imx imx-atf optee-os

Byg billedet igen med standard build-kommandoen, f.eksampdet:

$ ./bitbake msc-image-base

Til testformål skal en UART-adapter tilsluttes den gamle UART. Der skulle ikke være mere output på den gamle UART! Den nye UART skulle være fuldt funktionel, for det skal du kontrollere forbindelsen ved at bruge u-boot UART-skallen og linux-konsollen.

Produktsupport

Avnet Embedded ingeniører og teknikere er forpligtet til at yde support til vores kunder, når det er nødvendigt. Før du kontakter Avnet Embeddeds tekniske support, bedes du konsultere de respektive sider på vores website kl
https://embedded.avnet.com/support/
for den seneste dokumentation, drivere og softwaredownloads.

Hvis oplysningerne der ikke løser dit problem, bedes du kontakte vores Avnet Embedded Technical Support-team som følger:

E-mail: support.boards@avnet.eu
Telefon: +49 (0)8165 906-200

AVNET EMBEDDED logo

Dokumenter/ressourcer

AVNET EMBEDDED MSC SM2S-IMX8M Debug UART-port ARM-baserede computere på modul [pdf] Instruktioner
MSC SM2S-IMX8M, MSC SM2S-IMX8M Debug UART-port ARM-baserede computere på modul, debug UART-port ARM-baserede computere på modul, UART-port ARM-baserede computere på modul, port ARM-baserede computere på modul, ARM-baserede computere på modul, baserede computere på modul, computere på modul, modul

Referencer

Efterlad en kommentar

Din e-mailadresse vil ikke blive offentliggjort. Påkrævede felter er markeret *