AVNET SULAUTETTU MSC SM2S-IMX8M Vianetsintä UART-porttiin ARM-pohjaiset tietokoneet moduulin ohjeissa
AVNET SULAUTETTU MSC SM2S-IMX8M Vianetsintä UART-porttiin ARM-pohjaiset tietokoneet moduulissa

Esipuhe

Tekijänoikeusilmoitus

Copyright © 2023 Avnet Embedded GmbH. Kaikki oikeudet pidätetään. Tämän asiakirjan kopioiminen, luovuttaminen muille ja sen sisällön käyttö tai välittäminen on kiellettyä ilman Avnet Embedded /MSC Technologiesin nimenomaista lupaa.

GmbH. Rikoksentekijät ovat velvollisia maksamaan vahingonkorvaukset. Kaikki oikeudet pidätetään patentin myöntämisen tai hyödyllisyysmallin tai mallin rekisteröinnin yhteydessä.

Tärkeää tietoa

Tämä dokumentaatio on tarkoitettu vain päteville yleisöille. Tässä kuvattu tuote ei ole loppukäyttäjätuote. Sen kehitti ja valmisti koulutetun henkilöstön jatkokäsittelyä varten.

Vastuuvapauslauseke

Vaikka tämä asiakirja on laadittu äärimmäistä huolellisuutta noudattaen, se ei sisällä takuuta tai vastuuta sen oikeellisuudesta tai sopivuudesta mihinkään tiettyyn tarkoitukseen. Tämän asiakirjan tiedot toimitetaan "sellaisenaan" ja niitä voidaan muuttaa ilman erillistä ilmoitusta.

Tavaramerkit

Kaikki käytetyt tuotenimet, logot tai tavaramerkit ovat omistajiensa omaisuutta.

Yleistä tietoa

Laajuus

Tämä asiakirja koskee kaikkia NXP i.MX8- ja i.MX9-sarjan suorittimiin perustuvia Avnet Embedded Computer-on-Module -moduuleita, kuten esim.

  • 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

Tämä luettelo ei väitä olevan tyhjentävä, varsinkin kun uusia levyjä voidaan julkaista, joihin voidaan soveltaa samoja menettelyjä, mutta tätä asiakirjaa ei välttämättä aina päivitetä välittömästi.

Tarkistukset ja muutokset

Tarkistus Päivämäärä Kommentti
1.0 25.05.2023 M. Koch Alkuperäinen versio

Kuinka muuttaa virheenkorjaus UART-porttia

Johdanto

Monissa ARM-pohjaisissa järjestelmissä on sarjakonsoli, joka on pääasiallinen käyttötapa virheenkorjausta ja järjestelmän käyttöönottoa varten. Asiakkaan vaatimuksista riippuen tällaisissa järjestelmissä on usein välttämätöntä, että oletusvirheenkorjaus UART-portti on vaihdettava toiseen sarjaporttiin. Virheenkorjaus UART-portilla tarkoitamme UART-porttia, joka tarjoaa kaiken U-Boot-syötön/-ulostulon, ytimen käynnistyslokin lähdön ja ytimen kuoren, periaatteessa kaiken UART-viestinnän, joka näkyy minimaalisessa Yocto-kuvassa. Koska UART-oletusporttia ei käytä vain yksi ohjelmistokomponentti, vaan monet komponentit, mukaan lukien u-boot, atf-firmware, optee-os ja itse ydin, UART-oletusportin asettaminen voi olla haastavaa.view voi kadota nopeasti. Tämä asiakirja selittää kaikki vaiheet, jotka on noudatettava tämän tehtävän saavuttamiseksi. Selvityksen helpottamiseksi tämä asiakirja on kirjoitettu NXP i.MX8 MINI -prosessorille ja mscldk:lle, mutta sitä voidaan soveltaa kaikkiin i.MX8- ja i.MX9-sarjan prosessoreihin ja muihin koontijärjestelmiin erittäin pienellä vaivalla.

Ympäristön valmistelu

Oletusvirheenkorjaus-UART-portin muuttaminen edellyttää koodin muokkaamista Yoctossa, ja helpoin tapa tehdä se on käyttää Yocto devtool -ohjelmaa lähteiden valmistelemiseen meille. Seuraavia Yocto-paketteja on muutettava:

  • u-boot-imx (virtuaalinen / käynnistyslatain)
  • linux-imx (virtuaali/ydin)
  • atf-imx
  • optee-os (vain jos opte on käytössä)

Lähteet tulee valmistella devtoolilla: 

$ ./devtool muokkaa u-boot-imx
$ ./devtool muokkaa linux-imx
$ ./devtool muokkaa atf-imx
$ ./devtool muokkaa opte-osia

Kaikki lähteet löytyvät "työtila"-hakemistosta.

Koodia muutetaan

Bootloaderin muokkaaminen

Käynnistyslataimessa tapahtuu jonkin verran UART-perusalustusta, joten muxingia ja UART-portin perusosoitetta on muutettava. Toinen u-bootin tehtävä on välittää käynnistysargumentit ytimelle ja tässä on tarpeen muokata konsolin tty-argumenttia. UART-alustus ja muxing tapahtuu aikaisintaan stage käynnistysprosessista SPL:ssä. Lähdekoodi löytyy levykohtaisesta spl.c:stä file.

Kohde file: workspace/sources/u-boot-imx/board/msc/sm2s_imx8mm/spl.c

Avaa file ja siirry funktioon init_ser0():

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

Toiminto aktivoi kellon ajan UART2(indeksi 1 fyysiselle UART:lle 2).

Nyt, jos haluamme käyttää UART1:tä sen sijaan, voimme määrittää oman init_ser1-funktion:

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

Korvaa funktion init_ser0 funktiokutsu init_ser1()-funktiolla board_early_init_f()-funktiossa. Lisäksi huomaamme, että ser1_pads-rakennetta ei ole määritelty. Tässä on oltava tietoinen UART1:n johdotuksista. Imx8mm:ssä UART1 voidaan yhdistää uart1- tai sai2-tyynyihin. Vastaavasti ser1_pads voidaan määritellä seuraavasti:

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

Tai muuten käyttämällä sai2:ta:

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

Nyt UART-perusosoitetta pitäisi muuttaa, osoite määritellään boards header configissa file.

Kohde file: workspace/sources/u-boot-imx/include/configs/msc_sm2s_imx8mm.h

Muokkaa määritelmää CONFIG_MXC_UART_BASE. UART1:lle tämä olisi: 

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

Lopuksi konsolin ytimen argumenttia tulisi muuttaa. Arvo löytyy samasta otsikosta file. Etsi “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..

ARM Trusted Firmwaren muokkaaminen

Arm Trusted Firmware (imx-atf) -ohjelmistolla ei ole omaa UART-alustusrutiinia, mutta sillä on kovakoodattu UART-perusosoite, ja se luottaa asianmukaiseen UART-alustukseen u-bootista. Erilainen perusosoitemääritys u-bootissa ja imx-atf:ssä todennäköisesti jättää prosessorin jumiin poikkeuskäsittelijään, eikä UART:ssa näy mitään (suoritin näyttää roikkuvan ilman näkyvää syytä). Kun UART-porttia muutetaan, tämän muutoksen on tapahduttava myös imx-atf:ssä! UART-portin muuttaminen imx-atf:ssä vaatii perusosoitteen muuttamisen. Tämä arvo asetetaan sivustolle platform.mk file prosessorin.

Kohde file: työtila/sources/imx-atf/plat/imx/imx8m/imx8mm/platform.mk 

Oikea UART-perusosoite löytyy imx8-viiteoppaasta. Tässä exampvaihdamme UART2:sta UART1:een imx8mm:llä:

# IMX_BOOT_UART_BASE ?= 0x30890000
IMX_BOOT_UART_BASE ?= 0x30860000

Optee-osin muokkaaminen

Optee OS latautuu yleensä, kun järjestelmässä käytetään CAAM-moduulin salausta. Optee toimii samoilla ARM Cortex-A53 -ytimillä, mutta toisessa täysin itsenäisessä instanssissa kuin ydin. Optee vaatii myös UART-pääsyn ja se tarkoittaa tässä tapauksessa perusosoitteen muutosta.

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

Tämä example asettaa UART-perusosoitteen UART2:sta UART1:een: 

#CFG_UART_BASE ?= UART2_BASE
CFG_UART_BASE ?= UART1_BASE

Ytimen muokkaaminen

Ydin vaatii vain muutaman laitepuun muokkauksen ja vain jos UART ei ole vielä saatavilla ytimessä. Monissa tapauksissa muutoksia ei tarvita ollenkaan. Tarkista kuitenkin, onko tty-ilmentymä, jota haluat käyttää, olemassa! Tarkista tty:n läsnäolo shell-komennolla:

$ ls /dev/ttymxc*

Jos ttymxc on jo saatavilla, muutoksia ei tarvita. esimample, UART2:lle tämä olisi /dev/ttymxc1. Kuten jo tiedämme, tty:n indeksi on aina fyysisen UART:n indeksi miinus 1. Jos vaadittua tty:tä ei ole saatavilla, noudata tavallista UART-integrointimenettelyä.

Rakenna ja testaa

Turvallisen uudelleenrakentamisen varmistamiseksi tulee suorittaa täydellinen puhdistus:

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

Rakenna kuva uudelleen oletuskoontikomennolla, esimampseuraavat:

$ ./bitbake msc-image-base

Testausta varten UART-sovitin tulee liittää vanhaan UART:iin. Vanhassa UART:ssa ei pitäisi olla enää lähtöä! Uuden UART:n pitäisi olla täysin toimiva, joten varmista yhteys käyttämällä u-boot UART -kuorta ja linux-konsolia.

Tuotetuki

Avnet Embedded -insinöörit ja -teknikot ovat sitoutuneet tarjoamaan tukea asiakkaillemme aina, kun niitä tarvitaan. Ennen kuin otat yhteyttä Avnet Embeddedin tekniseen tukeen, tutustu vastaaviin sivuihimme websivusto osoitteessa
https://embedded.avnet.com/support/
uusimmat asiakirjat, ohjaimet ja ohjelmistolataukset.

Jos siellä annetut tiedot eivät ratkaise ongelmaasi, ota yhteyttä Avnet Embedded -tukitiimiimme seuraavasti:

Sähköposti: support.boards@avnet.eu
Puhelin: +49 (0)8165 906-200

AVNET EMBEDDED Logo

Asiakirjat / Resurssit

AVNET SULAUTETTU MSC SM2S-IMX8M Vianetsintä UART-porttiin ARM-pohjaiset tietokoneet moduulissa [pdfOhjeet
MSC SM2S-IMX8M, MSC SM2S-IMX8M UART-porttiin ARM-pohjaisten tietokoneiden virheenkorjaus moduulissa, UART-porttiin ARM-pohjaisten tietokoneiden virheenkorjaus moduulissa, UART-porttiin ARM-pohjaisten tietokoneiden moduulissa, ARM-pohjaisten tietokoneiden moduulissa, ARM-pohjaisten tietokoneiden moduulissa moduulissa, tietokoneet moduulissa, moduulissa

Viitteet

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *