AVNET EMBEDED MSC SM2S-IMX8M ማረም UART Port ARM በሞጁል መመሪያዎች ላይ የተመሰረቱ ኮምፒተሮች
AVNET EMBEDED MSC SM2S-IMX8M ማረም UART Port ARM በሞጁል ላይ የተመሰረቱ ኮምፒተሮች

መቅድም

የቅጂ መብት ማስታወቂያ

የቅጂ መብት © 2023 Avnet የተከተተ GmbH. ሁሉም መብቶች የተጠበቁ ናቸው። ይህን ሰነድ መቅዳት፣ ለሌሎች ማቅረብ እና ይዘቱን መጠቀም ወይም መገናኘት፣ ከአቭኔት ኢብዴድድ/ኤምኤስሲ ቴክኖሎጂስ ያለ ግልጽ ስልጣን የተከለከለ ነው።

GmbH. ጥፋተኞች ለጉዳት ክፍያ ተጠያቂ ናቸው. የፓተንት ስጦታ ሲሰጥ ወይም የመገልገያ ሞዴል ወይም ዲዛይን ሲመዘገብ ሁሉም መብቶች የተጠበቁ ናቸው።

ጠቃሚ መረጃ

ይህ ሰነድ የታሰበው ብቁ ለሆኑ ታዳሚዎች ብቻ ነው። እዚህ ላይ የተገለጸው ምርት የመጨረሻ ተጠቃሚ ምርት አይደለም። ለበለጠ ሂደት የተዘጋጀው በሰለጠኑ ሰዎች ነው።

ማስተባበያ

ምንም እንኳን ይህ ሰነድ በከፍተኛ ጥንቃቄ የመነጨ ቢሆንም ለትክክለኛነቱ ወይም ለየትኛውም ዓላማ ተስማሚነት ምንም አይነት ዋስትና ወይም ተጠያቂነት አልተገለፀም። በዚህ ሰነድ ውስጥ ያለው መረጃ "እንደሆነ" ቀርቧል እና ያለማሳወቂያ ሊለወጥ ይችላል.

የንግድ ምልክቶች

ሁሉም ያገለገሉ የምርት ስሞች፣ አርማዎች ወይም የንግድ ምልክቶች የየባለቤቶቻቸው ንብረት ናቸው።

አጠቃላይ መረጃ

ወሰን

ይህ ሰነድ በNXP i.MX8- እና i.MX9-ተከታታይ ሲፒዩዎች ላይ ለተመሠረቱ ሁሉንም Avnet Embedded Computer-on-Modules ተፈጻሚ ይሆናል፣ ለምሳሌ ለምሳሌ

  • SM2S-IMX8PLUS
  • SM2S-IMX8M
  • SM2S-IMX8ሚኒ
  • 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 M. Koch የመጀመሪያ ስሪት

ማረም UART ወደብ እንዴት እንደሚቀየር

መግቢያ

ብዙ በARM ላይ የተመሰረቱ ስርአቶች ከሴሪያል ኮንሶል ጋር እንደ ዋናው የማረም እና የስርአት ማምጣት አላማዎች መዳረሻ ናቸው። በደንበኛ መስፈርቶች ላይ በመመስረት በእንደዚህ ያሉ ስርዓቶች ውስጥ በተደጋጋሚ የሚከሰት አስፈላጊ ነገር ነው, ነባሪውን የ UART ወደብ ወደ ሌላ ተከታታይ ወደብ መቀየር ያስፈልገዋል. የ UART ወደብን በማረም ሁሉንም የዩ-ቡት ግብዓት/ውፅዓት፣ የከርነል ቡትሎግ ውፅዓት እና የከርነል ሼልን የሚያቀርብ የUART ወደብ ማለታችን ነው፣ በመሠረቱ ሁሉም የ UART ግንኙነት በትንሹ በዮክቶ ምስል ይታያል። ነባሪው UART ወደብ የሚጠቀመው በአንድ ሶፍትዌር አካል ብቻ ሳይሆን በብዙ ክፍሎች ማለትም u-boot፣ atf-firmware፣optee-os እና kernelን ጨምሮ በመሆኑ ነባሪውን የ UART ወደብ ማቀናበር ፈታኝ ሊሆን ይችላል እና ተጨማሪview በፍጥነት ሊጠፋ ይችላል. ይህ ሰነድ ይህንን ተግባር ለማሳካት ሁሉንም እርምጃዎች ያብራራል. ለቀላል ማብራሪያ፣ ይህ ሰነድ የተፃፈው ለNXP i.MX8 MINI ፕሮሰሰር እና mscldk ነው፣ ነገር ግን በሁሉም i.MX8- እና i.MX9-ተከታታይ ፕሮሰሰሮች እና ሌሎች የግንባታ ስርዓቶች ላይ በትንሽ ጥረት ሊተገበር ይችላል።

አካባቢን ማዘጋጀት

ነባሪውን የUART ወደብ መቀየር በ Yocto ውስጥ ኮድን ማሻሻል ያስፈልገዋል፣ እና እሱን ለማድረግ ቀላሉ መንገድ ዮክቶ ዴቭቶልን ተጠቅመን ምንጮቹን ለእኛ ማዘጋጀት ነው። የሚከተሉትን የዮክቶ ፓኬጆችን ማስተካከል አስፈላጊ ይሆናል፡

  • u-boot-imx (ምናባዊ/ቡት ጫኚ)
  • linux-imx (ምናባዊ/ከርነል)
  • atf-imx
  • optee-os (optee ጥቅም ላይ ከዋለ ብቻ)

ምንጮች በዴቭቶል መዘጋጀት አለባቸው: 

$ ./devtool ማሻሻል u-boot-imx
$ ./devtool linux-imx ቀይር
$ ./devtool አሻሽል atf-imx
$ ./devtool ማሻሻል optee-os

ሁሉም ምንጮች በ "የስራ ቦታ" ማውጫ ውስጥ ይገኛሉ.

ኮድ በመቀየር ላይ

የቡት ጫኚውን በማስተካከል ላይ

በቡት ጫኚው ውስጥ አንዳንድ መሰረታዊ የ UART ማስጀመሪያ ይከሰታል፣ ስለዚህ muxing እና የ UART ወደብ መነሻ አድራሻ መቀየር አስፈላጊ ይሆናል። ሁለተኛው የ u-boot ተግባር የቡት ነጋሪ እሴቶችን ወደ ከርነል ማስተላለፍ ነው እና እዚህ የኮንሶል ቲቲ ክርክርን ማስተካከል አስፈላጊ ይሆናል። የ UART ጅምር እና ሙክሲንግ የሚከናወነው በመጀመሪያዎቹ ዎች ውስጥ ነው።tagበ SPL ውስጥ የቡት ሂደት. የምንጭ ኮድ በቦርዱ የተወሰነ spl.c ውስጥ ሊገኝ ይችላል file.

ዒላማ file: የስራ ቦታ/ምንጮች/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 ተግባር ጥሪ በቦርድ_early_init_f () ተግባር ውስጥ በ init_ser1 () ይተኩ። በተጨማሪም የ ser1_pads መዋቅር እንዳልተገለጸ እናስተውላለን። እዚህ የ UART1 ሽቦን ማወቅ አስፈላጊ ይሆናል. በ imx8mm ላይ፣ UART1 ወደ uart1 pads፣ ወይም ወደ sai2 pads ሊደበቅ ይችላል። በዚህ መሰረት፣ 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: የስራ ቦታ/ምንጮች/u-boot-imx/include/configs/msc_sm2s_imx8mm.h

CONFIG_MXC_UART_BASE ትርጉሙን አስተካክል። ለ UART1 ይህ ይሆናል፡- 

  • // # CONFIG_MXC_UART_BASEን ይግለጹ
  • UART2_BASE_ADDR
  • #CONFIG_MXC_UART_BASEን ይግለጹ
  • UART1_BASE_ADDR

በመጨረሻም የኮንሶል ከርነል ክርክር መስተካከል አለበት። እሴቱ በተመሳሳይ ራስጌ ውስጥ ሊገኝ ይችላል file. ፈልግ “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..

በARM የታመነ ፈርምዌርን ማሻሻል

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የስራ ቦታ/ምንጮች/imx-atf/plat/imx/imx8m/imx8mm/platform.mk 

ትክክለኛው የ UART መሰረት አድራሻ በ imx8 ማጣቀሻ መመሪያ ውስጥ ይገኛል. በዚህ የቀድሞampበ imx2mm ላይ ከ UART1 ወደ UART8 እንለውጣለን።

# IMX_BOOT_UART_BASE ?= 0x30890000
IMX_BOOT_UART_BASE?= 0x30860000

optee-os በማስተካከል ላይ

የ CAAM ሞጁል ክሪፕቶግራፊ በሲስተሙ ላይ ጥቅም ላይ ሲውል ኦፕቲ ኦኤስ አብዛኛው ጊዜ ይጫናል። Optee በተመሳሳይ ARM Cortex-A53 ኮሮች ላይ ይሰራል፣ ነገር ግን በሌላ ሙሉ በሙሉ ገለልተኛ ምሳሌ እንደ ከርነል ነው። Optee የ UART መዳረሻን ይፈልጋል እና በዚህ ሁኔታ የመሠረት አድራሻ ማሻሻያ ማለት ነው።

ዒላማ file: የስራ ቦታ/ምንጮች/optee-os/core/arch/arm/plat-imx/conf.mk

ይህ ለምሳሌampየ UART መሰረት አድራሻን ከ UART2 ወደ UART1 ያዘጋጃል፡- 

#CFG_UART_BASE?= UART2_BASE
CFG_UART_BASE?= UART1_BASE

የከርነልን ማስተካከል

ከርነል ጥቂት የመሣሪያ ዛፍ ማሻሻያዎችን ብቻ ይፈልጋል፣ እና UART እስካሁን በከርነል ውስጥ ከሌለ ብቻ ነው። በብዙ አጋጣሚዎች ምንም ማሻሻያ አያስፈልግም. ሆኖም፣ እባክህ መጠቀም የምትፈልገው tty ምሳሌ መኖሩን አረጋግጥ! የቲ መገኘትን በሼል ትዕዛዝ ያረጋግጡ፡

$ ls /dev/ttymxc*

ttymxc አስቀድሞ ካለ፣ ምንም ማሻሻያ አያስፈልግም። ለ example፣ ለ UART2 ይህ /dev/ttymxc1 ይሆናል። አስቀድመን እንደምናውቀው የቲቲ ኢንዴክስ ምንጊዜም የአካላዊው UART ሲቀነስ 1 ነው። የሚፈለገው ቲቲ ከሌለ፣ እባክዎን የተለመደውን የ UART ውህደት ሂደት ይከተሉ።

ይገንቡ እና ይሞክሩ

ለአስተማማኝ መልሶ ግንባታ ሙሉ ጽዳት መተግበር አለበት፡-

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

ምስሉን በነባሪ የግንባታ ትዕዛዝ እንደገና ይገንቡ፣ ለምሳሌampላይ:

$ ./bitbake msc-image-base

ለሙከራ ዓላማ፣ የUART አስማሚ ከአሮጌው UART ጋር መገናኘት አለበት። በአሮጌው UART ላይ ምንም ተጨማሪ ውጤት ሊኖር አይገባም! አዲሱ UART ሙሉ በሙሉ የሚሰራ መሆን አለበት፣ ለዚያ እባክዎን u-boot UART shell እና ሊኑክስ ኮንሶል በመጠቀም ግንኙነቱን ያረጋግጡ።

የምርት ድጋፍ

Avnet Embedded መሐንዲሶች እና ቴክኒሻኖች ለደንበኞቻችን በሚፈልጉበት ጊዜ ሁሉ ድጋፍ ለመስጠት ቆርጠዋል። የAvnet Embedded ቴክኒካል ድጋፍን ከማነጋገርዎ በፊት እባክዎ በየእኛ ላይ ያሉትን ገፆች ያማክሩ webጣቢያ በ
https://embedded.avnet.com/support/
ለቅርብ ጊዜ ሰነዶች, ሾፌሮች እና የሶፍትዌር ውርዶች.

እዚያ የቀረበው መረጃ ችግርዎን ካልፈታው እባክዎን የእኛን Avnet Embedded Technical Support ቡድን እንደሚከተለው ያነጋግሩ።

ኢሜይል፡- support.boards@avnet.eu
ስልክ፡ +49 (0)8165 906-200

AVNET EMBEDED አርማ

ሰነዶች / መርጃዎች

AVNET EMBEDED MSC SM2S-IMX8M ማረም UART Port ARM በሞጁል ላይ የተመሰረቱ ኮምፒተሮች [pdf] መመሪያ
MSC SM2S-IMX8M፣ MSC SM2S-IMX8M ማረም UART ወደብ ARM በሞጁል ላይ የተመሰረቱ ኮምፒተሮች፣ ሞጁል ላይ የተመሰረቱ ኮምፒውተሮችን ያርሙ UART Port ARM በሞጁል

ዋቢዎች

አስተያየት ይስጡ

የኢሜል አድራሻዎ አይታተምም። አስፈላጊ መስኮች ምልክት ተደርጎባቸዋል *