AVNET EMBEDDED MSC SM2S-IMX8M Վրիպազերծել UART Port ARM-ի վրա հիմնված համակարգիչները մոդուլի հրահանգների վրա
AVNET EMBEDDED MSC SM2S-IMX8M Վրիպազերծել UART Port ARM-ի վրա հիմնված համակարգիչները մոդուլի վրա

Նախաբան

Հեղինակային իրավունքի ծանուցում

Հեղինակային իրավունք © 2023 Avnet Embedded GmbH: Բոլոր իրավունքները պաշտպանված են: Այս փաստաթղթի պատճենումը, ուրիշներին տրամադրելը և դրա բովանդակության օգտագործումը կամ հաղորդումն արգելվում է առանց Avnet Embedded/MSC Technologies-ի հստակ լիազորությունների:

GmbH. Հանցագործները պատասխանատվություն են կրում վնասների հատուցման համար: Բոլոր իրավունքները պաշտպանված են արտոնագրի տրամադրման կամ օգտակար մոդելի կամ դիզայնի գրանցման դեպքում:

Կարևոր տեղեկություն

Այս փաստաթուղթը նախատեսված է միայն որակավորված լսարանի համար: Այստեղ նկարագրված արտադրանքը վերջնական օգտագործողի արտադրանք չէ: Այն մշակվել և արտադրվել է վերապատրաստված անձնակազմի կողմից հետագա մշակման համար:

Հրաժարում պատասխանատվությունից

Չնայած այս փաստաթուղթը ստեղծվել է առավելագույն խնամքով, որևէ կոնկրետ նպատակի համար ճշգրտության կամ համապատասխանության երաշխիք կամ պատասխանատվություն չի ենթադրվում: Այս փաստաթղթի տեղեկատվությունը տրամադրվում է «ինչպես կա» և ենթակա է փոփոխման առանց ծանուցման:

Ապրանքային նշաններ

Բոլոր օգտագործված ապրանքների անվանումները, լոգոները կամ ապրանքային նշանները իրենց համապատասխան սեփականատերերի սեփականությունն են:

Ընդհանուր տեղեկություններ

Շրջանակ

Այս փաստաթուղթը վերաբերում է բոլոր Avnet ներկառուցված համակարգիչների վրա մոդուլների վրա, որոնք հիմնված են NXP i.MX8- և i.MX9 սերիաների պրոցեսորների վրա, օրինակ.

  • 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

Այս ցանկը սպառիչ չէ, հատկապես, քանի որ կարող են թողարկվել նոր վահանակներ, որոնց համար կարող են կիրառվել նույն ընթացակարգերը, մինչդեռ այս փաստաթուղթը միշտ չէ, որ կարող է անմիջապես թարմացվել:

Վերանայումներ և փոփոխություններ

Վերանայման Ամսաթիվ Մեկնաբանություն
1.0 25.05.2023 Մ.Քոչ Նախնական տարբերակը

Ինչպես փոխել վրիպազերծման UART պորտը

Ներածություն

ARM-ի վրա հիմնված շատ համակարգեր ունեն Սերիական Վահանակ՝ որպես վրիպազերծման և համակարգի վերհանման նպատակների մուտքի հիմնական միջոց: Կախված հաճախորդի պահանջներից, նման համակարգերում հաճախակի առաջացող անհրաժեշտություն է, որ կանխադրված վրիպազերծման UART պորտը պետք է փոխարկվի այլ սերիական պորտի: Վրիպազերծման UART պորտ ասելով մենք նկատի ունենք UART պորտը, որը կտրամադրի U-Boot-ի բոլոր մուտքերը/ելքերը, միջուկի bootlog-ի ելքը և միջուկի կեղևը, հիմնականում բոլոր UART հաղորդակցությունները, որոնք դուք կտեսնեք նվազագույն Yocto պատկերում: Քանի որ կանխադրված UART պորտը չի օգտագործվում միայն մեկ ծրագրային բաղադրիչի կողմից, այլ շատ բաղադրիչների կողմից, ներառյալ u-boot-ը, atf-որոնվածը, optee-os-ը և հենց միջուկը, լռելյայն UART պորտի կարգավորումը կարող է դժվար լինել, և ավելին:view կարող է արագ կորցնել: Այս փաստաթուղթը կբացատրի բոլոր քայլերը, որոնք պետք է իրականացվեն այս առաջադրանքին հասնելու համար: Ավելի հեշտ բացատրության համար այս փաստաթուղթը գրվել է NXP i.MX8 MINI պրոցեսորի և mscldk-ի համար, սակայն կարող է կիրառվել i.MX8- և i.MX9-սերիաների բոլոր պրոցեսորների և այլ կառուցողական համակարգերի համար՝ շատ քիչ ջանքերի գնով:

Միջավայրի պատրաստում

Լռելյայն վրիպազերծման UART պորտը փոխելու համար կպահանջվի փոփոխել կոդը Yocto-ում, և դա անելու ամենահեշտ ձևն է օգտագործել Yocto devtool-ը՝ մեզ համար աղբյուրները պատրաստելու համար: Անհրաժեշտ կլինի փոփոխել հետևյալ Yocto փաթեթները.

  • u-boot-imx (վիրտուալ/bootloader)
  • linux-imx (վիրտուալ/միջուկ)
  • atf-imx
  • optee-os (միայն եթե optee-ն օգտագործվում է)

Աղբյուրները պետք է պատրաստվեն devtool-ով. 

$ ./devtool փոփոխել u-boot-imx
$ ./devtool փոփոխել linux-imx
$ ./devtool փոփոխել atf-imx
$ ./devtool փոփոխել optee-os

Բոլոր աղբյուրները կարելի է գտնել «աշխատանքային տարածք» գրացուցակում:

Կոդը փոփոխվում է

Bootloader-ի փոփոխում

Bootloader-ում տեղի կունենա որոշ հիմնական UART սկզբնավորում, ուստի անհրաժեշտ կլինի փոփոխել muxing-ը և UART նավահանգստի բազային հասցեն: U-boot-ի երկրորդ խնդիրն է փոխանցել boot արգումենտները միջուկին, և այստեղ անհրաժեշտ կլինի փոփոխել կոնսոլի tty արգումենտը: UART-ի սկզբնավորումը և մաքսավորումը տեղի են ունենում ամենավաղ stagSPL-ում բեռնման գործընթացի էլ. Աղբյուրի կոդը կարելի է գտնել հատուկ տախտակի spl.c-ում file.

Թիրախ file: աշխատանքային տարածք/sources/u-boot-imx/board/msc/sm2s_imx8mm/spl.c

Բացեք file և նավարկեք դեպի init_ser0():

ստատիկ դատարկ init_ser0 (անվավեր)
{
imx_iomux_v3_setup_multiple_pads(ser0_pads, ARRAY_SIZE(ser0_pads)); init_uart_clk (1);
}

Ֆունկցիան ակտիվացնում է ժամացույցը UART2 (ինդեքս 1 ֆիզիկական UART 2-ի համար):

Այժմ, եթե մենք ցանկանում ենք օգտագործել UART1-ի փոխարեն, մենք կարող ենք սահմանել մեր սեփական init_ser1 ֆունկցիան.

ստատիկ դատարկ init_ser1 (անվավեր)
{
imx_iomux_v3_setup_multiple_pads(ser1_pads, ARRAY_SIZE(ser1_pads)); init_uart_clk (0);
}

Փոխարինեք init_ser0 ֆունկցիայի կանչը init_ser1()-ով board_early_init_f() ֆունկցիայում: Հետագայում մենք նկատում ենք, որ ser1_pads կառուցվածքը սահմանված չէ: Այստեղ անհրաժեշտ կլինի տեղյակ լինել UART1-ի լարերի մասին: imx8mm-ում UART1-ը կարող է միացվել uart1 բարձիկներին կամ sai2 բարձիկներին: Համապատասխանաբար, ser1_pads-ը կարող է սահմանվել հետևյալ կերպ.

ստատիկ 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
};

Կամ, օգտագործելով sai2:

ստատիկ 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 };

Այժմ UART բազային հասցեն պետք է փոփոխվի, հասցեն սահմանված է տախտակների վերնագրի կազմաձևում file.

Թիրախ file: աշխատանքային տարածք/sources/u-boot-imx/include/configs/msc_sm2s_imx8mm.h

Փոփոխեք CONFIG_MXC_UART_BASE սահմանումը: UART1-ի համար սա կլինի. 

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

Վերջապես, կոնսոլի միջուկի արգումենտը պետք է փոփոխվի: Արժեքը կարելի է գտնել նույն վերնագրում file. Որոնել «console=ttymxc1…» գրեք և «ttymxc1»-ը փոխեք «ttymxc0»-ի։ Ինդեքսի համարը համապատասխանում է UART ինդեքսին և միշտ UART ինդեքսը հանած 1 է։ Այսպիսով, UART 2-ի համար մենք օգտագործում ենք ttymxc1, UART3-ի համար՝ ttymxc2 և այլն։

ARM Trusted որոնվածի փոփոխում

Arm Trusted Firmware (imx-atf) չունի սեփական UART սկզբնավորման ռեժիմ, սակայն այն ունի կոշտ կոդավորված UART բազային հասցե և հիմնված է UART-ի պատշաճ սկզբնավորման վրա u-boot-ից: U-boot-ում և imx-atf-ում բազային հասցեի այլ կոնֆիգուրացիան, ամենայն հավանականությամբ, պրոցեսորը կթողնի բացառությունների կարգավորիչում, և UART-ում տեսանելի ոչինչ չի լինի (կարծես թե պրոցեսորը կախված է առանց տեսանելի պատճառի): Երբ UART նավահանգիստը փոխվում է, այս փոփոխությունը պետք է տեղի ունենա նաև imx-atf-ում: UART պորտը imx-atf-ում փոխելու համար անհրաժեշտ է բազային հասցեի փոփոխություն: Այս արժեքը սահմանված է platform.mk-ում file պրոցեսորի։

Թիրախ fileԱշխատանքային տարածք/sources/imx-atf/plat/imx/imx8m/imx8mm/platform.mk 

Ճիշտ UART բազային հասցեն կարելի է գտնել imx8 տեղեկատու ձեռնարկում: Այս նախկինումampմենք փոխում ենք UART2-ից UART1-ի imx8mm-ում.

# IMX_BOOT_UART_BASE ?= 0x30890000
IMX_BOOT_UART_BASE ?= 0x30860000

Optee-os-ի փոփոխում

Optee OS-ը սովորաբար բեռնվում է, երբ համակարգում օգտագործվում է CAAM մոդուլի ծածկագրությունը: Optee-ն աշխատում է նույն ARM Cortex-A53 միջուկներով, բայց մեկ այլ ամբողջովին անկախ օրինակով, ինչպես միջուկը: Optee-ն նաև պահանջում է UART մուտք, և այս դեպքում դա նշանակում է բազային հասցեի փոփոխություն:

Թիրախ file: աշխատանքային տարածք/sources/optee-os/core/arch/arm/plat-imx/conf.mk

Այս նախկինample կսահմանի UART բազային հասցեն UART2-ից մինչև UART1. 

#CFG_UART_BASE ?= UART2_BASE
CFG_UART_BASE ?= UART1_BASE

Միջուկի փոփոխում

Kernel-ը կպահանջի միայն մի քանի սարքի ծառի փոփոխություններ, և միայն այն դեպքում, եթե UART-ը դեռ հասանելի չէ միջուկում: Շատ դեպքերում ընդհանրապես ոչ մի փոփոխություն չի պահանջվի: Այնուամենայնիվ, խնդրում ենք ստուգել, ​​արդյոք առկա է tty օրինակը, որը ցանկանում եք օգտագործել: Ստուգեք tty ներկայությունը shell հրամանով.

$ ls /dev/ttymxc*

Եթե ​​ttymxc-ն արդեն հասանելի է, փոփոխության կարիք չկա: Նախample, UART2-ի համար սա կլինի /dev/ttymxc1: Ինչպես արդեն գիտենք, tty-ի ինդեքսը միշտ ֆիզիկական UART-ի ինդեքսն է մինուս 1: Եթե անհրաժեշտ tty-ն հասանելի չէ, խնդրում ենք հետևել UART ինտեգրման սովորական ընթացակարգին:

Կառուցել և փորձարկել

Ապահով վերակառուցման համար պետք է կատարվի ամբողջական մաքրում.

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

Կառուցեք պատկերը նորից լռելյայն build հրամանով, օրինակampլե:

$ ./bitbake msc-image-base

Փորձարկման նպատակով UART ադապտեր պետք է միացված լինի հին UART-ին: Հին UART-ի վրա այլևս թողարկում չպետք է լինի: Նոր UART-ը պետք է լիովին գործարկվի, դրա համար խնդրում ենք ստուգել կապը՝ օգտագործելով u-boot UART shell-ը և linux վահանակը:

Ապրանքի աջակցություն

Avnet Embedded-ի ինժեներներն ու տեխնիկները պարտավորվում են աջակցել մեր հաճախորդներին անհրաժեշտության դեպքում: Նախքան Avnet Embedded-ի տեխնիկական աջակցության հետ կապ հաստատելը, խնդրում ենք ծանոթանալ մեր կայքի համապատասխան էջերին webկայքը՝ հասցեով
https://embedded.avnet.com/support/
վերջին փաստաթղթերի, դրայվերների և ծրագրերի ներբեռնումների համար:

Եթե ​​այնտեղ ներկայացված տեղեկատվությունը չի լուծում ձեր խնդիրը, խնդրում ենք կապվել մեր Avnet Ներկառուցված տեխնիկական աջակցության թիմին հետևյալ կերպ.

Էլ. support.boards@avnet.eu
Հեռախոս: +49 (0)8165 906-200

AVNET EMBEDDED Logo

Փաստաթղթեր / ռեսուրսներ

AVNET EMBEDDED MSC SM2S-IMX8M Վրիպազերծել UART Port ARM-ի վրա հիմնված համակարգիչները մոդուլի վրա [pdfՀրահանգներ
MSC SM2S-IMX8M, MSC SM2S-IMX8M վրիպազերծել UART Port ARM-ի վրա հիմնված համակարգիչները մոդուլի վրա, վրիպազերծել UART նավահանգիստ ARM-ի վրա հիմնված համակարգիչները մոդուլի վրա, UART նավահանգիստ ARM-ի վրա հիմնված համակարգիչները մոդուլի վրա, նավահանգիստ ARM-ի վրա հիմնված համակարգիչները մոդուլի վրա, ARM-ի վրա հիմնված համակարգիչները, համակարգիչների վրա: on Module, Computers on Module, Module

Հղումներ

Թողնել մեկնաբանություն

Ձեր էլփոստի հասցեն չի հրապարակվի: Պարտադիր դաշտերը նշված են *