AVNET IMBEDDED MSC SM2S-IMX8M Derinti UART prievado ARM pagrindu veikiančius kompiuterius pagal modulio instrukcijas
AVNET IMBEDDED MSC SM2S-IMX8M Derinti UART prievado ARM pagrindu veikiančius kompiuterius modulyje

Pratarmė

Autorių teisių pranešimas

Autoriaus teisės © 2023 Avnet Embedded GmbH. Visos teisės saugomos. Draudžiama kopijuoti šį dokumentą, teikti jį kitiems ir naudoti ar perduoti jo turinį be aiškaus Avnet Embedded /MSC Technologies sutikimo.

GmbH. Pažeidėjai atsako už žalos atlyginimą. Visos teisės saugomos patento išdavimo arba naudingojo modelio ar dizaino registravimo atveju.

Svarbi informacija

Ši dokumentacija skirta tik kvalifikuotai auditorijai. Čia aprašytas produktas nėra galutinio vartotojo produktas. Jį sukūrė ir pagamino apmokytas personalas, kad galėtų toliau apdoroti.

Atsisakymas

Nors šis dokumentas buvo sukurtas itin kruopščiai, jokia garantija ar atsakomybė už teisingumą ar tinkamumą jokiam konkrečiam tikslui netaikoma. Informacija šiame dokumente pateikiama tokia, kokia yra, ir gali būti keičiama be įspėjimo.

Prekių ženklai

Visi naudojami gaminių pavadinimai, logotipai ar prekių ženklai yra atitinkamų savininkų nuosavybė.

Bendra informacija

Taikymo sritis

Šis dokumentas taikomas visiems „Avnet Embedded Computer-on-Modules“, pagrįstiems NXP i.MX8 ir i.MX9 serijos procesoriais, pvz.

  • 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 sąrašas nepretenduoja į baigtinį, ypač dėl to, kad gali būti išleistos naujos plokštės, kurioms gali būti taikomos tos pačios procedūros, o šis dokumentas ne visada gali būti atnaujinamas iš karto.

Pataisymai ir modifikacijos

Peržiūra Data komentuoti
1.0 25.05.2023 M. Koch Pradinė versija

Kaip pakeisti derinimo UART prievadą

Įvadas

Daugelyje ARM pagrįstų sistemų yra serijinė konsolė, kuri yra pagrindinė prieigos priemonė derinimo ir sistemos paleidimo tikslais. Priklausomai nuo klientų poreikių, tokiose sistemose dažnai pasitaiko būtinybė, kad numatytasis derinimo UART prievadas turi būti perjungtas į kitą nuoseklųjį prievadą. Derindami UART prievadą, turime omenyje UART prievadą, kuris suteiks visą U-Boot įvestį / išvestį, branduolio įkrovos žurnalo išvestį ir branduolio apvalkalą, iš esmės visą UART ryšį bus galima pamatyti minimaliame Yocto paveikslėlyje. Kadangi numatytąjį UART prievadą naudoja ne tik vienas programinės įrangos komponentas, o daugelis komponentų, įskaitant u-boot, atf-firmware, optee-os ir patį branduolį, numatytąjį UART prievadą nustatyti gali būti sudėtinga.view galima greitai prarasti. Šiame dokumente bus paaiškinti visi žingsniai, kuriuos reikia atlikti norint pasiekti šią užduotį. Kad būtų lengviau paaiškinti, šis dokumentas buvo parašytas NXP i.MX8 MINI procesoriui ir mscldk, tačiau labai mažai pastangų gali būti pritaikytas visiems i.MX8 ir i.MX9 serijos procesoriams ir kitoms kūrimo sistemoms.

Aplinkos paruošimas

Norint pakeisti numatytąjį derinimo UART prievadą, reikės modifikuoti „Yocto“ kodą, o lengviausias būdas tai padaryti yra naudoti „Yocto devtool“ šaltiniams paruošti. Reikės modifikuoti šiuos Yocto paketus:

  • u-boot-imx (virtualus / įkrovos įkroviklis)
  • linux-imx (virtualus / branduolys)
  • atf-imx
  • „optee-os“ (tik jei naudojamas „optee“)

Šaltiniai turi būti paruošti naudojant devtool: 

$ ./devtool modifikuoti u-boot-imx
$ ./devtool modifikuoti linux-imx
$ ./devtool modifikuoti atf-imx
$ ./devtool modifikuoti opte-os

Visus šaltinius galite rasti „darbo srities“ kataloge.

Modifikuojamas kodas

Įkrovos tvarkyklės modifikavimas

Įkrovos įkroviklėje įvyks tam tikras pagrindinis UART inicijavimas, todėl reikės modifikuoti maišymą ir bazinį UART prievado adresą. Antroji u-boot užduotis yra perduoti įkrovos argumentus branduoliui ir čia reikės modifikuoti konsolės tty argumentą. UART inicijavimas ir maišymas įvyksta anksčiausiaitage įkrovos procesą SPL. Šaltinio kodą galima rasti konkrečioje plokštėje spl.c file.

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

Atidarykite file ir eikite į funkciją init_ser0():

statinė galia init_ser0(tuščia)
{
imx_iomux_v3_setup_multiple_pads(ser0_pads, ARRAY_SIZE(ser0_pads)); init_uart_clk(1);
}

Funkcija įjungia laikrodį UART2 (indeksas 1 fiziniam UART 2).

Dabar, jei norime naudoti UART1, galime apibrėžti savo init_ser1 funkciją:

statinė galia init_ser1(tuščia)
{
imx_iomux_v3_setup_multiple_pads(ser1_pads, ARRAY_SIZE(ser1_pads)); init_uart_clk(0);
}

Funkcijos init_ser0 iškvietimą pakeiskite į init_ser1() funkcijoje board_early_init_f(). Be to, pastebime, kad ser1_pads struktūra nėra apibrėžta. Čia reikės žinoti UART1 laidus. Imx8mm UART1 gali būti sujungtas su uart1 arba sai2 trinkelėmis. Atitinkamai, ser1_pads gali būti apibrėžti kaip:

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

Arba, naudojant 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 };

Dabar UART bazinis adresas turėtų būti pakeistas, adresas yra apibrėžtas plokštės antraštės konfigūracijose file.

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

Pakeiskite apibrėžimą CONFIG_MXC_UART_BASE. UART1 tai būtų: 

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

Galiausiai konsolės branduolio argumentas turėtų būti pakeistas. Vertę galima rasti toje pačioje antraštėje file. Ieškokite „console=ttymxc1…“ ir pakeiskite „ttymxc1“ į „ttymxc0“. Indekso numeris koreliuoja su UART indeksu ir visada yra UART indeksas minus 1. Taigi, UART 2 naudojame ttymxc1, UART3 – ttymxc2 ir t. t.

ARM patikimos programinės įrangos modifikavimas

Arm Trusted Firmware (imx-atf) neturi savo UART inicijavimo rutinos, tačiau ji turi užkoduotą UART bazinį adresą ir priklauso nuo tinkamo UART inicijavimo iš u-boot. Dėl kitokios bazinės adreso konfigūracijos u-boot ir imx-atf procesorius greičiausiai įstrigs išimčių tvarkyklėje, o UART nieko nebus matoma (atrodo, kad centrinis procesorius kabo be jokios matomos priežasties). Kai pakeičiamas UART prievadas, šis pakeitimas turi įvykti ir imx-atf! Norint pakeisti UART prievadą imx-atf, reikia pakeisti pagrindinį adresą. Ši reikšmė nustatyta platformoje.mk file procesoriaus.

Tikslas file: darbo vieta/sources/imx-atf/plat/imx/imx8m/imx8mm/platform.mk 

Teisingą UART bazinį adresą galite rasti imx8 informaciniame vadove. Šiame buvampmes keičiame iš UART2 į UART1 imx8mm:

# IMX_BOOT_UART_BASE ?= 0x30890000
IMX_BOOT_UART_BASE ?= 0x30860000

Optee-os modifikavimas

Optee OS paprastai įkeliama, kai sistemoje naudojama CAAM modulio kriptografija. „Optee“ veikia tais pačiais ARM Cortex-A53 branduoliais, bet kitame visiškai nepriklausomame egzemplioriuje kaip branduolys. Optee taip pat reikalauja UART prieigos ir šiuo atveju tai reiškia bazinio adreso pakeitimą.

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

Šis buvęsample nustatys UART bazinį adresą iš UART2 į UART1: 

#CFG_UART_BASE ?= UART2_BASE
CFG_UART_BASE ?= UART1_BASE

Branduolio modifikavimas

Branduoliui reikės tik kelių įrenginio medžio modifikacijų ir tik tuo atveju, jei UART branduolyje dar nėra. Daugeliu atvejų jokių pakeitimų nereikės. Tačiau patikrinkite, ar tty egzempliorius, kurį norite naudoti, egzistuoja! Patikrinkite tty buvimą naudodami apvalkalo komandą:

$ ls /dev/ttymxc*

Jei ttymxc jau yra, modifikuoti nereikia. Pavyzdžiui,ample, UART2 tai būtų /dev/ttymxc1. Kaip jau žinome, tty indeksas visada yra fizinio UART indeksas atėmus 1. Jei reikiamo tty nėra, atlikite įprastą UART integravimo procedūrą.

Sukurti ir išbandyti

Norint saugiai atstatyti, reikia atlikti visišką valymą:

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

Dar kartą sukurkite vaizdą naudodami numatytąją kūrimo komandą, pvzampLe:

$ ./bitbake msc-image-base

Bandymo tikslais UART adapteris turi būti prijungtas prie senojo UART. Senajame UART neturėtų būti daugiau išvesties! Naujasis UART turėtų veikti visiškai, todėl patikrinkite ryšį naudodami u-boot UART apvalkalą ir Linux konsolę.

Produkto palaikymas

„Avnet Embedded“ inžinieriai ir technikai yra įsipareigoję teikti pagalbą mūsų klientams, kai tik to reikia. Prieš kreipdamiesi į „Avnet Embedded“ techninę pagalbą, peržiūrėkite atitinkamus mūsų puslapius websvetainė adresu
https://embedded.avnet.com/support/
Norėdami gauti naujausią dokumentaciją, tvarkykles ir programinės įrangos atsisiuntimus.

Jei ten pateikta informacija neišsprendžia jūsų problemos, susisiekite su mūsų „Avnet Embedded“ techninės pagalbos komanda taip:

El. paštas: support.boards@avnet.eu
Telefonas: +49 (0)8165 906-200

AVNET Įterptas logotipas

Dokumentai / Ištekliai

AVNET IMBEDDED MSC SM2S-IMX8M Derinti UART prievado ARM pagrindu veikiančius kompiuterius modulyje [pdfInstrukcijos
MSC SM2S-IMX8M, MSC SM2S-IMX8M Derinti UART prievado ARM pagrindu veikiančius kompiuterius modulyje, UART prievado ARM pagrįstus kompiuterius modulyje, UART prievado ARM pagrįstus kompiuterius modulyje, ARM pagrindu veikiančius kompiuterius modulyje, ARM pagrindu veikiančius kompiuterius modulyje modulyje, kompiuteriai modulyje, modulyje

Nuorodos

Palikite komentarą

Jūsų el. pašto adresas nebus skelbiamas. Privalomi laukai pažymėti *