AVNET IEgultais MSC SM2S-IMX8M Uz UART porta ARM balstītu datoru atkļūdošana, izmantojot moduļa instrukcijas
AVNET IEgultais MSC SM2S-IMX8M Atkļūdot UART portu ARM balstītus datorus modulī

Priekšvārds

Autortiesību paziņojums

Autortiesības © 2023 Avnet Embedded GmbH. Visas tiesības aizsargātas. Šī dokumenta kopēšana, nodrošināšana citiem un tā satura izmantošana vai paziņošana ir aizliegta bez skaidras Avnet Embedded /MSC Technologies atļaujas.

GmbH. Pārkāpēji ir atbildīgi par zaudējumu atlīdzināšanu. Visas tiesības tiek paturētas patenta piešķiršanas vai lietderīgā modeļa vai dizaina reģistrācijas gadījumā.

Svarīga informācija

Šī dokumentācija ir paredzēta tikai kvalificētai auditorijai. Šeit aprakstītais produkts nav gala lietotāja produkts. To izstrādāja un izgatavoja tālākai apstrādei apmācīts personāls.

Atruna

Lai gan šis dokuments ir izstrādāts ar vislielāko rūpību, netiek norādīta garantija vai atbildība par pareizību vai piemērotību kādam konkrētam mērķim. Informācija šajā dokumentā tiek sniegta “tāda, kāda tā ir” un var tikt mainīta bez brīdinājuma.

Preču zīmes

Visi izmantotie produktu nosaukumi, logotipi vai preču zīmes ir to attiecīgo īpašnieku īpašums.

Vispārīga informācija

Darbības joma

Šis dokuments attiecas uz visiem Avnet Embedded Computer-on-Modules, kuru pamatā ir NXP i.MX8 un i.MX9 sērijas CPU, piemēram, piem.

  • 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

Šis saraksts nepretendē uz izsmeļošu, jo īpaši tāpēc, ka var tikt izlaistas jaunas plates, kurām var attiekties tās pašas procedūras, savukārt šo dokumentu ne vienmēr var atjaunināt nekavējoties.

Pārskatīšanas un modifikācijas

Pārskatīšana Datums komentēt
1.0 25.05.2023 M. Kohs Sākotnējā versija

Kā mainīt atkļūdošanas UART portu

Ievads

Daudzām uz ARM balstītām sistēmām ir seriālā konsole, kas ir galvenais piekļuves līdzeklis atkļūdošanas un sistēmas izlaišanas nolūkos. Atkarībā no klienta prasībām šādās sistēmās bieži rodas nepieciešamība, ka noklusējuma atkļūdošanas UART ports ir jāpārslēdz uz citu seriālo portu. Ar atkļūdošanas UART portu mēs domājam UART portu, kas nodrošinās visu U-Boot ievadi/izvadi, kodola sāknēšanas žurnāla izvadi un kodola apvalku, būtībā visu UART komunikāciju, ko redzēsit minimālā Yocto attēlā. Tā kā noklusējuma UART portu neizmanto tikai viens programmatūras komponents, bet gan daudzi komponenti, tostarp u-boot, atf-firmware, optee-os un pats kodols, noklusējuma UART porta iestatīšana var būt sarežģīta.view var ātri pazaudēt. Šajā dokumentā ir izskaidroti visi soļi, kas jāveic, lai izpildītu šo uzdevumu. Vienkāršākam skaidrojumam šis dokuments tika rakstīts NXP i.MX8 MINI procesoram un mscldk, taču to var lietot visiem i.MX8 un i.MX9 sērijas procesoriem un citām būvēšanas sistēmām ar ļoti nelielu piepūli.

Vides sagatavošana

Lai mainītu noklusējuma atkļūdošanas UART portu, Yocto būs jāmaina kods, un vienkāršākais veids, kā to izdarīt, ir izmantot Yocto devtool, lai sagatavotu mums avotus. Būs jāmaina šādas Yocto pakotnes:

  • u-boot-imx (virtuālais/sāknēšanas ielādētājs)
  • linux-imx (virtuālais/kodols)
  • atf-imx
  • optee-os (tikai tad, ja tiek izmantots optee)

Avoti jāsagatavo ar devtool: 

$ ./devtool modificēt u-boot-imx
$ ./devtool modificēt linux-imx
$ ./devtool modificēt atf-imx
$ ./devtool modificēt optee-os

Visi avoti ir atrodami direktorijā “darbvieta”.

Modificēt kodu

Bootloader modificēšana

Sāknēšanas ielādētājā notiks dažas pamata UART inicializācijas, tāpēc būs jāmaina sajaukšana un UART porta bāzes adrese. Otrs u-boot uzdevums ir nodot sāknēšanas argumentus kodolam, un šeit būs nepieciešams modificēt konsoles tty argumentu. UART inicializācija un sajaukšana notiek agrākajos stage sāknēšanas procesam SPL. Avota kodu var atrast plates specifiskajā spl.c file.

Mērķis file: workspace/sources/u-boot-imx/board/msc/sm2s_imx8mm/spl.c

Atveriet file un dodieties uz funkciju init_ser0():

statiskā spēkā esamība init_ser0(void)
{
imx_iomux_v3_setup_multiple_pads(ser0_pads, ARRAY_SIZE(ser0_pads)); init_uart_clk(1);
}

Funkcija aktivizē pulksteni uz UART2 (indekss 1 fiziskajam UART 2).

Tagad, ja mēs vēlamies tā vietā izmantot UART1, mēs varētu definēt savu init_ser1 funkciju:

statiskā spēkā esamība init_ser1(void)
{
imx_iomux_v3_setup_multiple_pads(ser1_pads, ARRAY_SIZE(ser1_pads)); init_uart_clk(0);
}

Funkcijas init_ser0 izsaukumu aizstājiet ar init_ser1() funkcijā board_early_init_f(). Turklāt mēs novērojam, ka ser1_pads struktūra nav definēta. Šeit būs jāapzinās UART1 elektroinstalācija. Uz imx8mm UART1 var sajaukt ar uart1 vai sai2 spilventiņiem. Attiecīgi ser1_pads var definēt kā:

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

Vai arī, izmantojot sai2:

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

Tagad UART bāzes adrese ir jāmaina, adrese ir noteikta dēļu galvenes konfigurācijā file.

Mērķis file: workspace/sources/u-boot-imx/include/configs/msc_sm2s_imx8mm.h

Mainiet definīciju CONFIG_MXC_UART_BASE. Attiecībā uz UART1 tas būtu: 

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

Visbeidzot, ir jāmaina konsoles kodola arguments. Vērtību var atrast tajā pašā galvenē file. Meklēt “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 uzticamās programmaparatūras modificēšana

Arm Trusted Firmware (imx-atf) nav savas UART inicializācijas rutīnas, taču tai ir cietā kodēta UART bāzes adrese, un tā ir atkarīga no pareizas UART inicializācijas no u-boot. Atšķirīga bāzes adreses konfigurācija u-boot un imx-atf, visticamāk, atstās procesoru iestrēgtu izņēmumu apstrādātājā, un UART nekas nebūs redzams (šķiet, ka centrālais procesors uzkaras bez redzama iemesla). Mainot UART portu, šīm izmaiņām ir jānotiek arī imx-atf! Lai mainītu UART portu imx-atf, ir jāmaina bāzes adrese. Šī vērtība ir iestatīta platformā.mk file no procesora.

Mērķis file: darbvieta/sources/imx-atf/plat/imx/imx8m/imx8mm/platform.mk 

Pareizo UART bāzes adresi var atrast imx8 atsauces rokasgrāmatā. Šajā bijušajāampmēs mainām no UART2 uz UART1 uz imx8mm:

# IMX_BOOT_UART_BASE ?= 0x30890000
IMX_BOOT_UART_BASE ?= 0x30860000

Optee-os modificēšana

Optee OS parasti tiek ielādēta, kad sistēmā tiek izmantota CAAM moduļa kriptogrāfija. Optee darbojas ar tiem pašiem ARM Cortex-A53 kodoliem, bet citā pilnīgi neatkarīgā instancē kā kodols. Optee arī pieprasa UART piekļuvi, un šajā gadījumā tas nozīmē bāzes adreses modifikāciju.

Mērķis file: workspace/sources/optee-os/core/arch/arm/plat-imx/conf.mk

Šis bijušaisample iestatīs UART bāzes adresi no UART2 uz UART1: 

#CFG_UART_BASE ?= UART2_BASE
CFG_UART_BASE ?= UART1_BASE

Kodola modificēšana

Kodolam būs nepieciešamas tikai dažas ierīces koka modifikācijas un tikai tad, ja UART kodolā vēl nav pieejams. Daudzos gadījumos nekādas izmaiņas nebūs vajadzīgas. Tomēr, lūdzu, pārbaudiet, vai tty instance, kuru vēlaties izmantot, pastāv! Pārbaudiet tty klātbūtni ar čaulas komandu:

$ ls /dev/ttymxc*

Ja ttymxc jau ir pieejams, izmaiņas nav nepieciešamas. Piemēram,ample, UART2 tas būtu /dev/ttymxc1. Kā mēs jau zinām, tty indekss vienmēr ir fiziskā UART indekss mīnus 1. Ja nepieciešamais tty nav pieejams, lūdzu, izpildiet parasto UART integrācijas procedūru.

Veidojiet un pārbaudiet

Lai nodrošinātu drošu pārbūvi, jāveic pilnīga tīrīšana:

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

Izveidojiet attēlu vēlreiz, izmantojot noklusējuma veidošanas komandu, piemēram,ample:

$ ./bitbake msc-image-base

Pārbaudes nolūkā UART adapteris jāpievieno vecajam UART. Vecajā UART vairs nevajadzētu izvadīt! Jaunajam UART ir jābūt pilnībā funkcionālam, tādēļ, lūdzu, pārbaudiet savienojumu, izmantojot u-boot UART apvalku un Linux konsoli.

Produktu atbalsts

Avnet Embedded inženieri un tehniķi ir apņēmušies sniegt atbalstu mūsu klientiem, kad vien tas ir nepieciešams. Pirms sazināties ar Avnet Embedded tehnisko atbalstu, lūdzu, skatiet attiecīgās mūsu vietnes lapas webvietne plkst
https://embedded.avnet.com/support/
jaunākajai dokumentācijai, draiveriem un programmatūras lejupielādēm.

Ja tur sniegtā informācija neatrisina jūsu problēmu, lūdzu, sazinieties ar mūsu Avnet Embedded tehniskā atbalsta komandu šādi:

E-pasts: support.boards@avnet.eu
Tālrunis: +49 (0)8165 906-200

AVNET EMBEDDED Logo

Dokumenti / Resursi

AVNET IEgultais MSC SM2S-IMX8M Atkļūdot UART portu ARM balstītus datorus modulī [pdfNorādījumi
MSC SM2S-IMX8M, MSC SM2S-IMX8M Uz UART porta ARM balstītu datoru atkļūdošana modulī, UART porta ARM balstītu datoru atkļūdošana modulī, UART porta ARM balstītus datorus modulī, ARM balstītus datorus modulī, ARM balstītus datorus uz moduļa uz moduli, datori uz moduli, moduli

Atsauces

Atstājiet komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti *