AVNET EMBEDDED MSC SM2S-IMX8M Debug UART port ARM temeljena računala na uputama modula
Predgovor
Obavijest o autorskim pravima
Autorska prava © 2023 Avnet Embedded GmbH. Sva prava pridržana. Kopiranje ovog dokumenta, davanje drugima te korištenje ili priopćavanje njegovog sadržaja zabranjeni su bez izričitog ovlaštenja Avnet Embedded /MSC Technologies
GmbH. Počinitelji su odgovorni za naknadu štete. Sva prava su pridržana u slučaju priznanja patenta ili registracije korisnog modela ili dizajna.
Važne informacije
Ova je dokumentacija namijenjena samo kvalificiranoj publici. Ovdje opisan proizvod nije proizvod krajnjeg korisnika. Razvijeno je i proizvedeno za daljnju obradu od strane obučenog osoblja.
Odricanje
Iako je ovaj dokument izrađen s najvećom pažnjom, ne podrazumijeva se nikakvo jamstvo ili odgovornost za ispravnost ili prikladnost za bilo koju posebnu svrhu. Podaci u ovom dokumentu dani su "kakvi jesu" i podložni su promjenama bez prethodne obavijesti.
Zaštitni znakovi
Svi korišteni nazivi proizvoda, logotipi ili zaštitni znakovi vlasništvo su njihovih vlasnika.
Opće informacije
Opseg
Ovaj dokument se odnosi na sva Avnet ugrađena računala-na-modulima temeljena na NXP i.MX8- i i.MX9-serijskim procesorima, kao što je npr.
- 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
Ovaj popis ne tvrdi se da je iscrpan, pogotovo zato što se mogu objaviti nove ploče za koje se mogu primijeniti isti postupci, dok ovaj dokument možda neće uvijek biti odmah ažuriran.
Revizije i izmjene
Revizija | Datum | Komentar | |
1.0 | 25.05.2023 | M. Koch | Početna verzija |
Kako promijeniti debug UART port
Uvod
Mnogi sustavi koji se temelje na ARM-u dolaze sa serijskom konzolom kao glavnim sredstvom pristupa za ispravljanje pogrešaka i pokretanje sustava. Ovisno o zahtjevima korisnika, u takvim je sustavima česta potreba da se zadani UART port za ispravljanje pogrešaka mora prebaciti na drugi serijski port. Pod UART priključkom za otklanjanje pogrešaka mislimo na UART priključak koji će osigurati sav U-Boot ulaz/izlaz, izlaz kernel bootlog-a i kernel shell, u osnovi svu UART komunikaciju koju ćete vidjeti u minimalnoj Yocto slici. Budući da zadani UART priključak ne koristi samo jedna softverska komponenta, već mnoge komponente, uključujući u-boot, atf-firmware, optee-os i samu jezgru, postavljanje zadanog UART priključka može biti izazovno, a prekoview može se brzo izgubiti. Ovaj dokument će objasniti sve korake koje treba slijediti kako bi se postigao ovaj zadatak. Radi lakšeg objašnjenja, ovaj je dokument napisan za NXP i.MX8 MINI procesor i mscldk, ali se može primijeniti na sve i.MX8- i i.MX9-serije procesora i druge sustave izrade uz vrlo malo truda.
Priprema okruženja
Promjena zadanog UART priključka za otklanjanje pogrešaka zahtijevat će izmjenu koda u Yoctu, a najlakši način da to učinite jest korištenje Yocto devtoola za pripremu izvora za nas. Bit će potrebno modificirati sljedeće Yocto pakete:
- u-boot-imx (virtualni/bootloader)
- linux-imx (virtualni/kernel)
- atf-imx
- optee-os (samo ako se koristi optee)
Izvore treba pripremiti pomoću devtoola:
$ ./devtool modificirajte u-boot-imx
$ ./devtool modificirajte linux-imx
$ ./devtool modificirajte atf-imx
$ ./devtool modify optee-os
Svi izvori mogu se pronaći u direktoriju “workspace”.
Modificiranje koda
Izmjena pokretačkog programa
U bootloaderu će se dogoditi neka osnovna UART inicijalizacija, tako da će biti potrebno modificirati muxing i osnovnu adresu UART porta. Drugi zadatak u-boot-a je proslijediti boot argumente kernelu i ovdje će biti potrebno modificirati tty argument konzole. UART inicijalizacija i muxing događa se u najranijim stage procesa pokretanja u SPL-u. Izvorni kod se može pronaći u posebnom spl.c file.
Cilj file: radni prostor/izvori/u-boot-imx/board/msc/sm2s_imx8mm/spl.c
Otvorite file i idite do funkcije init_ser0():
statička praznina init_ser0(void)
{
imx_iomux_v3_setup_multiple_pads(ser0_pads, ARRAY_SIZE(ser0_pads)); init_uart_clk(1);
}
Funkcija aktivira sat za UART2(indeks 1 za fizički UART 2).
Sada, ako umjesto toga želimo koristiti UART1, mogli bismo definirati vlastitu init_ser1 funkciju:
statička praznina init_ser1(void)
{
imx_iomux_v3_setup_multiple_pads(ser1_pads, ARRAY_SIZE(ser1_pads)); init_uart_clk(0);
}
Zamijenite poziv funkcije init_ser0 s init_ser1() u funkciji board_early_init_f(). Nadalje primjećujemo da struktura ser1_pads nije definirana. Ovdje će biti potrebno biti svjestan ožičenja UART1. Na imx8mm, UART1 se može muxirati na uart1 jastučiće ili na sai2 jastučiće. Sukladno tome, ser1_pads može se definirati kao:
statički 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
};
Ili, koristeći sai2:
statički 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 };
Sada treba izmijeniti baznu UART adresu, adresa je definirana u konfiguraciji zaglavlja ploče file.
Cilj file: radni prostor/izvori/u-boot-imx/include/configs/msc_sm2s_imx8mm.h
Izmijenite definiciju CONFIG_MXC_UART_BASE. Za UART1 ovo bi bilo:
- // #define CONFIG_MXC_UART_BASE
- UART2_BASE_ADDR
- #define CONFIG_MXC_UART_BASE
- UART1_BASE_ADDR
Konačno, argument kernela konzole bi trebao biti modificiran. Vrijednost se može pronaći u istom zaglavlju file. Tražiti “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..
Izmjena ARM Trusted firmware-a
Arm Trusted Firmware (imx-atf) nema vlastitu rutinu inicijalizacije UART-a, ali ima tvrdo kodiranu osnovnu adresu UART-a i oslanja se na ispravnu inicijalizaciju UART-a iz u-boot-a. Drugačija konfiguracija osnovne adrese u u-boot i imx-atf najvjerojatnije će ostaviti procesor zaglavljenim u rukovatelju iznimkama, a na UART-u neće biti ništa vidljivo (čini se da CPU visi bez vidljivog razloga). Kada se promijeni UART port, ova promjena se također mora dogoditi u imx-atf! Promjena UART porta u imx-atf zahtijeva modifikaciju osnovne adrese. Ova vrijednost je postavljena u platform.mk file procesora.
Cilj file: radni prostor/izvori/imx-atf/plat/imx/imx8m/imx8mm/platform.mk
Ispravna bazna adresa UART-a može se pronaći u referentnom priručniku imx8. U ovom prampmijenjamo s UART2 na UART1 na imx8mm:
# IMX_BOOT_UART_BASE ?= 0x30890000
IMX_BOOT_UART_BASE ?= 0x30860000
Modificiranje optee-os
Optee OS se obično učitava kada se u sustavu koristi kriptografija CAAM modula. Optee radi na istim ARM Cortex-A53 jezgrama, ali u drugoj potpuno neovisnoj instanci kao kernel. Optee također zahtijeva UART pristup i u ovom slučaju to znači modifikaciju osnovne adrese.
Cilj file: radni prostor/izvori/optee-os/core/arch/arm/plat-imx/conf.mk
Ovaj bivšiample će postaviti osnovnu adresu UART-a s UART2 na UART1:
#CFG_UART_BASE ?= UART2_BASE
CFG_UART_BASE ?= UART1_BASE
Modificiranje kernela
Kernel će zahtijevati samo nekoliko modifikacija stabla uređaja i samo ako UART još nije dostupan u kernelu. U mnogim slučajevima neće biti potrebne nikakve izmjene. Ipak, provjerite postoji li tty instanca koju želite koristiti! Provjerite prisutnost tty-ja naredbom ljuske:
$ls /dev/ttymxc*
Ako je ttymxc već dostupan, nisu potrebne izmjene. Na primjerample, za UART2 ovo bi bilo /dev/ttymxc1. Kao što već znamo, indeks tty je uvijek indeks fizičkog UART-a minus 1. Ako traženi tty nije dostupan, slijedite uobičajeni postupak integracije UART-a.
Izradi i testiraj
Za sigurnu ponovnu izgradnju potrebno je primijeniti potpuno čišćenje:
$ ./bitbake –c cleanall u-boot-imx linux-imx imx-atf optee-os
Ponovno izgradite sliku sa zadanom naredbom za izgradnju, nprampono:
$ ./bitbake msc-image-base
U svrhu testiranja, UART adapter treba biti spojen na stari UART. Ne bi trebalo više biti izlaza na starom UART-u! Novi UART trebao bi biti potpuno funkcionalan, za to provjerite vezu pomoću u-boot UART ljuske i linux konzole.
Podrška za proizvode
Inženjeri i tehničari Avnet Embedded predani su pružanju podrške našim klijentima kad god je to potrebno. Prije kontaktiranja tehničke podrške za Avnet Embedded, pogledajte odgovarajuće stranice na našem webmjesto na
https://embedded.avnet.com/support/
za najnoviju dokumentaciju, upravljačke programe i preuzimanja softvera.
Ako tamo navedene informacije ne riješe vaš problem, obratite se našem timu za tehničku podršku ugrađenog Avneta na sljedeći način:
Email: support.boards@avnet.eu
Telefon: +49 (0)8165 906-200
Dokumenti / Resursi
![]() |
AVNET EMBEDDED MSC SM2S-IMX8M Debug UART port ARM temeljena računala na modulu [pdfUpute MSC SM2S-IMX8M, MSC SM2S-IMX8M Debug UART port ARM temeljena računala na modulu, Debug UART port ARM temeljena računala na modulu, UART port ARM temeljena računala na modulu, port ARM temeljena računala na modulu, ARM temeljena računala na modulu, bazirana računala na Modul, Računala na Modul, Modul |