AVNET EMBEDDED MSC SM2S-IMX8M Li ser Talîmatên Modulê Komputerên Bingeha ARM-yê UART-Port Debug
AVNET EMBEDDED MSC SM2S-IMX8M Komputerên li ser Modulê Bingeha ARM UART Debug

Pêşgotin

Notice Copyright

Copyright © 2023 Avnet Embedded GmbH. Hemû maf parastî ne. Kopîkirina vê belgeyê, pêşkêşkirina ji kesên din re û bikar anîn an ragihandina naveroka wê, bêyî destûrnameyek eşkere ji Avnet Embedded / MSC Technologies qedexe ye.

GmbH. Sûcdar ji bo dayîna zirarê berpirsiyar in. Hemî maf parastî ne di bûyera dayîna patentek an tomarkirina modelek bikêr an sêwiranê de.

Agahiya Girîng

Ev belge tenê ji bo temaşevanên jêhatî ye. Hilbera ku li vir hatî destnîşan kirin ne hilberek bikarhênerek dawî ye. Ew ji bo pêvajoyek bêtir ji hêla personelên perwerdekirî ve hate pêşve xistin û çêkirin.

Disclaimer

Her çend ev belge bi hûrgulî hatî çêkirin jî, ji bo armancek taybetî garantî an berpirsiyarî ji bo rastbûn an guncandî nayê destnîşan kirin. Agahdariya di vê belgeyê de "wek ku heye" tête peyda kirin û bêyî agahdarî tête guhertin.

Trademarks

Hemî navên hilberên bikar anîn, logo an tîcarî milkên xwediyên wan ên têkildar in.

Agahiyên Giştî

Scope

Ev belge ji bo hemî Komputer-li-Modulên Avnet ên Embedded yên ku li ser bingeha CPU-yên NXP i.MX8- û i.MX9-serî ne, wek mînak

  • 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

Ev navnîş îdîa nake ku bêkêmasî ye, nemaze ji ber ku dibe ku panelên nû werin berdan ku ji bo wan heman prosedur dikarin werin sepandin, di heman demê de dibe ku ev belge her gav tavilê neyê nûve kirin.

Guhertin û Guhertin

Nûxwestin Rojek Agahkişî
1.0 25.05.2023 M. Koç Guhertoya destpêkê

Meriv çawa porta debug UART-ê biguhezîne

Pêşkêş

Gelek pergalên ARM-ê bi Konsola Serial wekî navgîniya bingehîn a gihîştina ji bo mebestên debugkirin û rakirina pergalê têne. Bi hewcedariyên xerîdar ve girêdayî, di pergalên weha de hewcedariyek pir caran çêdibe ku pêdivî ye ku porta debug UART-a xwerû li portek serialî ya cûda were guheztin. Bi debug porta UART mebesta me porta UART e ku dê hemî têketin/derketina U-Boot, derketina bootloga kernel û qalika kernelê peyda bike, di bingeh de hemî ragihandina UART ku meriv dê di wêneyek Yocto ya hindiktirîn de bibîne. Ji ber ku porta UART-ya xwerû ne tenê ji hêla yek hêmanek nermalavê ve, lê ji hêla gelek beşan ve, di nav de u-boot, atf-firmware, optee-os û kernel bixwe ve tê bikar anîn, danîna porta UART-ya xwerû dikare dijwar be, û ya din.view zû dikare winda bibe. Ev belge dê hemî gavên ku divê bişopînin, ji bo bidestxistina vî karî rave bike. Ji bo ravekirina hêsantir, ev belge ji bo pêvajoya NXP i.MX8 MINI û mscldk hate nivîsandin, lê dikare bi hewildanek pir hindik li ser hemî pêvajoyên rêzikên i.MX8- û i.MX9 û pergalên din ên çêkirinê were sepandin.

Amadekirina hawirdorê

Guhertina porta debug UART ya xwerû dê hewceyê guheztina kodê li Yocto bike, û riya herî hêsan a kirina wê ev e ku meriv devtoolê Yocto bikar bîne da ku çavkaniyan ji me re amade bike. Pêdivî ye ku pakêtên Yocto yên jêrîn biguherînin:

  • u-boot-imx (virtual/bootloader)
  • linux-imx (virtual/kernel)
  • atf-imx
  • optee-os (tenê heke optee tê bikaranîn)

Divê çavkanî bi devtool bêne amadekirin: 

$ ./devtool u-boot-imx biguherîne
$ ./devtool linux-imx biguherîne
$ ./devtool atf-imx biguherîne
$ ./devtool optee-os biguherîne

Hemî çavkanî di pelrêça "qada xebatê" de têne dîtin.

Guhertina kodê

Guhertina Bootloader

Di bootloader de dê hin destpêkek bingehîn a UART çêbibe, ji ber vê yekê pêdivî ye ku muxing û navnîşana bingehîn a porta UART were guheztin. Karê duyemîn ê u-boot ev e ku argumanên bootê ji kernel re derbas bike û li vir hewce ye ku argumana tty konsolê biguhezîne. Destpêkirin û mûxalîfkirina UART di s-ya pêşîn de pêk têtage ya pêvajoya boot di SPL. Koda çavkaniyê dikare di panela taybetî ya spl.c de were dîtin file.

Armanc file: qada xebatê/sources/u-boot-imx/board/msc/sm2s_imx8mm/spl.c

Vekin file û li fonksiyona init_ser0 ():

valahiya statîk init_ser0(betal)
{
imx_iomux_v3_setup_multiple_pads(ser0_pads, ARRAY_SIZE(ser0_pads)); init_uart_clk(1);
}

Fonksîyon ji bo demjimêrê çalak dike UART2 (indeks 1 ji bo UART fîzîkî 2).

Naha, heke em dixwazin li şûna UART1 bikar bînin, em dikarin fonksiyona xweya init_ser1 diyar bikin:

valahiya statîk init_ser1(betal)
{
imx_iomux_v3_setup_multiple_pads(ser1_pads, ARRAY_SIZE(ser1_pads)); init_uart_clk(0);
}

Di fonksiyona board_early_init_f() de banga fonksiyonê ya init_ser0 bi init_ser1() veguherîne. Zêdetir em bala xwe didin ku avahiya ser1_pads ne diyar e. Li vir pêdivî ye ku meriv ji têlkirina UART1 haydar be. Li ser imx8mm, UART1 dikare bi padsên uart1, an jî bi padsên sai2 ve were girêdan. Li gorî vê yekê, ser1_pads dibe ku wekî:

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

An na, sai2 bikar bînin:

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

Naha divê navnîşana bingehîn a UART were guheztin, navnîş di mîhengê sernavê panelê de tête diyar kirin file.

Armanc file: qada xebatê/sources/u-boot-imx/include/configs/msc_sm2s_imx8mm.h

Pênaseya CONFIG_MXC_UART_BASE biguherîne. Ji bo UART1 ev ê bibe: 

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

Di dawiyê de, divê argumana kernelê ya konsolê were guheztin. Nirx dikare di heman sernavê de were dîtin file. Search for “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..

Guhertina Firmwareya pêbawer a ARM

Firmware-ya Trusted Arm (imx-atf) xwedan rûtînek destpêkirina UART-ê tune, di heman demê de ew xwedan navnîşek bingehîn a UART-ê ya hişk e, û xwe dispêre destpêka UART-ya rast a ji u-boot. Veavakirina navnîşana bingehîn a cihêreng di u-boot û imx-atf de bi îhtîmalek mezin dê pêvajoyê di hilgirê îstîsnayê de bihêle, û dê li ser UART tiştek xuya nebe (CPU bêyî sedemek xuyayî dixuye ku disekine). Dema ku porta UART were guhertin, divê ev guhertin di imx-atf de jî çêbibe! Guhertina porta UART di imx-atf de guherînek navnîşana bingehîn hewce dike. Ev nirx di platform.mk de hatiye danîn file ya pêvajoyê.

Armanc file: qada xebatê/sources/imx-atf/plat/imx/imx8m/imx8mm/platform.mk 

Navnîşana bingehîn a UART-ê ya rast dikare di manuala referansa imx8 de were dîtin. Di vê exampLe em ji UART2 biguherînin UART1 li ser imx8mm:

# IMX_BOOT_UART_BASE ?= 0x30890000
IMX_BOOT_UART_BASE ?= 0x30860000

Guhertina optee-os

Optee OS bi gelemperî dema ku şîfreya modula CAAM li ser pergalê tê bikar anîn tê barkirin. Optee li ser heman corên ARM Cortex-A53 dimeşîne, lê di mînakek din a bi tevahî serbixwe de wekî kernel. Optee di heman demê de gihîştina UART-ê jî hewce dike û di vê rewşê de ev tê wateya guhartinek navnîşana bingehîn.

Armanc file: qada xebatê/sources/optee-os/core/arch/arm/plat-imx/conf.mk

Ev example dê navnîşana bingehîn a UART ji UART2 ber UART1 saz bike: 

#CFG_UART_BASE ?= UART2_BASE
CFG_UART_BASE ?= UART1_BASE

Guhertina Kernelê

Kernel dê tenê çend guheztinên dara cîhazê hewce bike, û tenê heke UART hîn di kernel de peyda nebe. Di gelek rewşan de, tu guhertin dê li her tiştî hewce nebe. Lêbelê, ji kerema xwe verast bikin ka tty mînaka ku hûn dixwazin bikar bînin heye! Bi fermanek şêlê hebûna tty kontrol bikin:

$ ls /dev/ttymxc*

Ger ttymxc jixwe berdest be, guheztinek ne hewce ye. Ji bo example, ji bo UART2 ev dê bibe /dev/ttymxc1. Wekî ku em jixwe dizanin, îndeksa tty her gav nîşaneya UART-ya laşî kêm 1 e. Ger ttyya pêwîst peyda nebe, ji kerema xwe prosedûra entegrasyona UART ya adetî bişopînin.

Avakirin & Test

Ji bo jinûveavakirinek bi ewle divê paqijiyek tam were sepandin:

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

Wêneyê dîsa bi fermana avakirina xwerû, ji bo nimûne, ava bikinample:

$ ./bitbake msc-image-base

Ji bo mebesta ceribandinê, pêdivî ye ku adapterek UART bi UART-a kevn ve were girêdan. Pêdivî ye ku li ser UART-a kevn êdî encamek tune be! Pêdivî ye ku UART-a nû bi tevahî bikêrhatî be, ji bo vê yekê ji kerema xwe pêwendiyê bi karanîna şêlê UART-ê û konsolê linux-ê verast bikin.

Piştgiriya hilberê

Endezyar û teknîsyenên Avnet Embedded pabend in ku kengê hewce bike piştgirî bidin xerîdarên me. Berî ku bi Piştgiriya Teknîkî ya Avnet Embedded re têkilî daynin, ji kerema xwe bi rûpelên têkildar ên li ser me re şêwir bikin website li
https://embedded.avnet.com/support/
ji bo belgeyên herî dawî, ajokar û dakêşanên nermalavê.

Ger agahdariya ku li wir hatî peyda kirin pirsgirêka we çareser nake, ji kerema xwe bi tîmê meya Piştgiriya Teknîkî ya Embedded Avnet re bi vî rengî têkilî daynin:

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

AVNET EMBEDDED Logo

Belge / Çavkanî

AVNET EMBEDDED MSC SM2S-IMX8M Komputerên li ser Modulê Bingeha ARM UART Debug [pdf] Rênîşander
MSC SM2S-IMX8M, MSC SM2S-IMX8M Debug UART Port ARM Komputerên li ser Modul, Debug UART Port ARM Komputerên li ser Modulê, UART Port ARM Komputerên li ser Modulê, Port ARM Komputerên li ser Modulê, Komputerên Bingeha ARM, Komputerên li ser Modulê li ser Modul, Komputer li ser Modulê, Module

Çavkanî

Bihêle şîroveyek

Navnîşana e-nameya we nayê weşandin. Zeviyên pêwîst têne nîşankirin *