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




