AVNET EMBEDDED MSC SM2S-IMX8M Debug UART Port ARM ကွန်ပျူတာများကို Module ညွှန်ကြားချက်များပေါ်အခြေခံသည်
AVNET EMBEDDED MSC SM2S-IMX8M Debug UART Port ARM အခြေခံကွန်ပျူတာများ

နိမိတ်ဖတ်

မူပိုင်ခွင့် အသိပေးချက်

မူပိုင်ခွင့် © 2023 Avnet Embedded GmbH မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။ ဤစာရွက်စာတမ်းကို ကူးယူခြင်း၊ အခြားသူများအား ပေးအပ်ခြင်းနှင့် ၎င်း၏အကြောင်းအရာများကို အသုံးပြုခြင်း သို့မဟုတ် ဆက်သွယ်ခြင်းအား Avnet Embedded /MSC Technologies မှ ထုတ်ဖော်ပြောဆိုခွင့်မရှိဘဲ တားမြစ်ထားသည်။

GmbH ကျူးလွန်သူများသည် နစ်နာကြေးပေးဆောင်ရန် တာဝန်ရှိသည်။ မူပိုင်ခွင့် သို့မဟုတ် အသုံးဝင်မှု မော်ဒယ် သို့မဟုတ် ဒီဇိုင်းကို မှတ်ပုံတင်ခြင်းမှ ပေးအပ်သည့် ကိစ္စရပ်တွင် အခွင့်အရေးအားလုံးကို လက်ဝယ်ရှိသည်။

အရေးကြီးသောအချက်အလက်များ

ဤစာရွက်စာတမ်းသည် အရည်အချင်းပြည့်မီသော ပရိသတ်များအတွက်သာ ရည်ရွယ်ပါသည်။ ဤနေရာတွင်ဖော်ပြထားသော ထုတ်ကုန်သည် အသုံးပြုသူ ကုန်ပစ္စည်းတစ်ခုမဟုတ်ပါ။ ၎င်းကို လေ့ကျင့်သင်ကြားထားသော ဝန်ထမ်းများမှ ဆက်လက်လုပ်ဆောင်ရန်အတွက် တီထွင်ထုတ်လုပ်ထားပါသည်။

ရှင်းလင်းချက်

ဤစာရွက်စာတမ်းကို ဂရုတစိုက်ဖြင့် ထုတ်လုပ်ထားသော်လည်း မည်သည့်ရည်ရွယ်ချက်အတွက်မဆို မှန်ကန်မှု သို့မဟုတ် သင့်လျော်မှုအတွက် အာမခံ သို့မဟုတ် တာဝန်ခံမှု မရှိပေ။ ဤစာတမ်းပါအချက်အလက်များကို "ရှိသကဲ့သို့" ပေးဆောင်ထားပြီး အသိပေးခြင်းမရှိဘဲ ပြောင်းလဲနိုင်သည်။

ကုန်အမှတ်တံဆိပ်များ

အသုံးပြုထားသော ကုန်ပစ္စည်းအမည်များ၊ လိုဂို သို့မဟုတ် ကုန်အမှတ်တံဆိပ်များသည် သက်ဆိုင်ရာပိုင်ရှင်များ၏ ပိုင်ဆိုင်မှုဖြစ်သည်။

ယေဘုယျသတင်းအချက်အလက်

အတိုင်းအတာ

ဤစာတမ်းသည် NXP i.MX8- နှင့် i.MX9-series CPU များအပေါ် အခြေခံထားသော Avnet Embedded Computer-on-Modules အားလုံးအတွက် အကျုံးဝင်သည်၊ ဥပမာ၊

  • 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-based စနစ်များစွာသည် အမှားရှာပြင်ခြင်းနှင့် စနစ်ထည့်သွင်းခြင်းရည်ရွယ်ချက်များအတွက် ဝင်ရောက်ခြင်း၏အဓိကနည်းလမ်းအဖြစ် Serial Console ပါရှိသည်။ ဖောက်သည်လိုအပ်ချက်များအပေါ် မူတည်၍ ၎င်းသည် ပုံမှန်အမှားအယွင်း UART ပို့တ်ကို မတူညီသော အမှတ်စဉ်ပို့တ်သို့ ပြောင်းရန် လိုအပ်သည့် စနစ်များတွင် မကြာခဏဖြစ်ပေါ်နေသော လိုအပ်ချက်တစ်ခုဖြစ်သည်။ အမှားရှာပြင်ခြင်း UART ပို့တ်အားဖြင့် ကျွန်ုပ်တို့သည် U-Boot အသွင်း/အထွက်၊ kernel bootlog အထွက်နှင့် kernel shell အားလုံးကို ပံ့ပိုးပေးမည့် UART ဆိပ်ကမ်းကို ဆိုလိုသည်၊ အခြေခံအားဖြင့် UART ဆက်သွယ်ရေးအားလုံးကို အနည်းဆုံး Yocto ပုံတွင် မြင်တွေ့ရမည်ဖြစ်သည်။ မူရင်း UART port ကို ဆော့ဖ်ဝဲလ် အစိတ်အပိုင်းတစ်ခုတည်းကသာ အသုံးမပြုသော်လည်း၊ u-boot၊ atf-firmware၊ optee-os နှင့် kernel ကိုယ်တိုင် အပါအဝင် အစိတ်အပိုင်းများစွာဖြင့် ပုံမှန် UART ပို့တ်ကို သတ်မှတ်ခြင်းသည် စိန်ခေါ်မှုဖြစ်နိုင်ပြီး၊view မြန်မြန်ပျောက်နိုင်တယ်။ ဤစာရွက်စာတမ်းသည် ဤလုပ်ငန်းကိုအောင်မြင်ရန် လိုက်နာရမည့်အဆင့်အားလုံးကို ရှင်းပြပါမည်။ ပိုမိုလွယ်ကူသောရှင်းလင်းချက်အတွက်၊ ဤစာတမ်းကို NXP i.MX8 MINI ပရိုဆက်ဆာနှင့် mscldk အတွက် ရေးသားထားသော်လည်း i.MX8- နှင့် i.MX9-series ပရိုဆက်ဆာများနှင့် အခြားတည်ဆောက်မှုစနစ်များအားလုံးကို အားစိုက်ထုတ်နိုင်သည် ။

ပတ်ဝန်းကျင်ပြင်ဆင်ခြင်း။

default debug UART port ကိုပြောင်းလဲခြင်းသည် Yocto တွင်ကုဒ်ကိုမွမ်းမံရန်လိုအပ်မည်ဖြစ်ပြီး၎င်းကိုပြုလုပ်ရန်အလွယ်ကူဆုံးနည်းလမ်းမှာကျွန်ုပ်တို့အတွက်အရင်းအမြစ်များကိုပြင်ဆင်ရန် Yocto devtool ကိုအသုံးပြုရန်ဖြစ်သည်။ အောက်ပါ Yocto ပက်ကေ့ဂျ်များကို ပြင်ဆင်ရန် လိုအပ်ပါမည်။

  • u-boot-imx (virtual/bootloader)
  • linux-imx (virtual/kernel)
  • atf-imx
  • optee-os (optee ကိုအသုံးပြုမှသာ)

အရင်းအမြစ်များကို devtool ဖြင့် ပြင်ဆင်သင့်သည်- 

$ ./devtool u-boot-imx ကို ပြင်ဆင်ပါ။
$ ./devtool linux-imx ကို ပြင်ဆင်ပါ။
$ ./devtool atf-imx ကို ပြင်ဆင်ပါ။
$ ./devtool optee-os ကို ပြင်ဆင်ပါ။

အရင်းအမြစ်အားလုံးကို "အလုပ်နေရာ" လမ်းညွှန်တွင် တွေ့နိုင်သည်။

ကုဒ်ကို ပြင်ဆင်ခြင်း။

Bootloader ကိုပြုပြင်မွမ်းမံခြင်း။

bootloader တွင် အခြေခံ UART အစပြုခြင်းအချို့ ဖြစ်ပေါ်လိမ့်မည်၊ ထို့ကြောင့် ၎င်းသည် muxing နှင့် UART port ၏ အခြေခံလိပ်စာကို ပြင်ဆင်ရန် လိုအပ်မည်ဖြစ်ပါသည်။ u-boot ၏ဒုတိယတာဝန်မှာ kernel သို့ boot arguments များကိုဖြတ်သန်းရန်နှင့် ဤနေရာတွင် console tty argument ကိုမွမ်းမံရန်လိုအပ်မည်ဖြစ်ပါသည်။ UART အစပြုခြင်း နှင့် muxing သည် အစောဆုံး s တွင်ဖြစ်သည်။tage SPL ရှိ boot လုပ်ငန်းစဉ်။ အရင်းအမြစ်ကုဒ်ကို board specific spl.c တွင် တွေ့နိုင်သည်။ file.

ပစ်မှတ် file: workspace/sources/u-boot-imx/board/msc/sm2s_imx8mm/spl.c

ကိုဖွင့်ပါ။ file ပြီးလျှင် function init_ser0():

static void init_ser0(ပျက်ပြယ်)
{
imx_iomux_v3_setup_multiple_pads(ser0_pads၊ ARRAY_SIZE(ser0_pads)); init_uart_clk(1);
}

လုပ်ဆောင်ချက်သည် နာရီကို အသက်သွင်းသည်။ UART2(အညွှန်း ရုပ်ပိုင်းဆိုင်ရာ UART 1 အတွက် 2)။

ယခု၊ ကျွန်ုပ်တို့အစား UART1 ကိုအသုံးပြုလိုပါက၊ ကျွန်ုပ်တို့၏ကိုယ်ပိုင် init_ser1 လုပ်ဆောင်ချက်ကို ကျွန်ုပ်တို့ သတ်မှတ်နိုင်သည်-

static void init_ser1(ပျက်ပြယ်)
{
imx_iomux_v3_setup_multiple_pads(ser1_pads၊ ARRAY_SIZE(ser1_pads)); init_uart_clk(0);
}

board_early_init_f() လုပ်ဆောင်ချက်တွင် init_ser0 ၏ လုပ်ဆောင်ချက်ခေါ်ဆိုမှုကို init_ser1() ဖြင့် အစားထိုးပါ။ ထို့အပြင် ser1_pads ဖွဲ့စည်းပုံကို သတ်မှတ်မထားပါ။ ဤနေရာတွင် UART1 ၏ ဝိုင်ယာကြိုးများကို သတိထားရန် လိုအပ်ပါမည်။ imx8mm တွင် UART1 ကို uart1 pads သို့မဟုတ် sai2 pads သို့ ရောနှောနိုင်သည်။ ထို့ကြောင့်၊ ser1_pads များကို အောက်ပါအတိုင်း သတ်မှတ်နိုင်သည်။

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

ဒါမှမဟုတ် sai2 ကိုသုံးပြီး

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

ယခု UART အခြေခံလိပ်စာကို ပြုပြင်သင့်သည်၊ လိပ်စာကို boards header config တွင် သတ်မှတ်ထားပါသည်။ file.

ပစ်မှတ် file: workspace/sources/u-boot-imx/include/configs/msc_sm2s_imx8mm.h

အဓိပ္ပါယ် CONFIG_MXC_UART_BASE ကို မွမ်းမံပါ။ UART1 အတွက်၎င်းသည်- 

  • // #define CONFIG_MXC_UART_BASE
  • UART2_BASE_ADDR
  • #CONFIG_MXC_UART_BASE ကို သတ်မှတ်ပါ။
  • UART1_BASE_ADDR

နောက်ဆုံးတွင်၊ console kernel အငြင်းအခုံကို ပြုပြင်သင့်သည်။ တန်ဖိုးကို တူညီသော ခေါင်းစီးတွင် တွေ့နိုင်သည်။ 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 Trusted Firmware ကို ပြင်ဆင်ခြင်း။

Arm Trusted Firmware(imx-atf) တွင် ကိုယ်ပိုင် UART အစပြုခြင်းလုပ်ရိုးလုပ်စဉ်မရှိသော်လည်း ၎င်းတွင် hardcoded UART အခြေခံလိပ်စာတစ်ခုရှိပြီး u-boot မှ သင့်လျော်သော UART စတင်ခြင်းအပေါ် မူတည်သည်။ u-boot နှင့် imx-atf တွင် မတူညီသော အခြေခံလိပ်စာဖွဲ့စည်းမှုပုံစံတစ်ခုသည် ပရိုဆက်ဆာအား ခြွင်းချက်ကိုင်တွယ်ကိရိယာတွင် ပိတ်မိနေစေရန် ဖြစ်နိုင်ချေရှိပြီး UART တွင် မည်သည့်အရာမျှ မမြင်နိုင်တော့သည် ( CPU သည် မမြင်နိုင်သော အကြောင်းပြချက်ဖြင့် ချိတ်ဆွဲထားပုံရသည်)။ UART ပို့တ်ကို ပြောင်းသောအခါ၊ ဤပြောင်းလဲမှုသည်လည်း imx-atf တွင် ဖြစ်ရပါမည်။ imx-atf တွင် UART port ကိုပြောင်းခြင်းသည် အခြေခံလိပ်စာ ပြုပြင်မွမ်းမံမှု လိုအပ်သည်။ ဤတန်ဖိုးကို platform.mk တွင် သတ်မှတ်ထားသည်။ file processor ၏

ပစ်မှတ် file: workspace/sources/imx-atf/plat/imx/imx8m/imx8mm/platform.mk 

မှန်ကန်သော UART အခြေခံလိပ်စာကို imx8 ရည်ညွှန်းချက်လက်စွဲတွင် တွေ့နိုင်ပါသည်။ ဒီ exampimx2mm တွင် UART1 မှ UART8 သို့ ပြောင်းလဲပါသည်။

# IMX_BOOT_UART_BASE ?= 0x30890000
IMX_BOOT_UART_BASE ?= 0x30860000

optee-os ကို ပြင်ဆင်နေသည်

စနစ်ပေါ်တွင် CAAM module cryptography ကိုအသုံးပြုသောအခါတွင် Optee OS ကို အများအားဖြင့် တင်နေပါသည်။ Optee သည် တူညီသော ARM Cortex-A53 cores ပေါ်တွင်အလုပ်လုပ်သည်၊ သို့သော် kernel ကဲ့သို့လုံးဝလွတ်လပ်သောအခြားဥပမာတွင်ဖြစ်သည်။ Optee သည် UART အသုံးပြုခွင့်ကိုလည်း လိုအပ်ပြီး ဤကိစ္စတွင် ၎င်းသည် အခြေခံလိပ်စာ ပြုပြင်မွမ်းမံခြင်းကို ဆိုလိုသည်။

ပစ်မှတ် file: workspace/sources/optee-os/core/arch/arm/plat-imx/conf.mk

ဒီ example UART အခြေစိုက်လိပ်စာ UART2 မှ UART1 သို့ သတ်မှတ်ပါမည်။ 

#CFG_UART_BASE ?= UART2_BASE
CFG_UART_BASE ?= UART1_BASE

Kernel ကိုမွမ်းမံခြင်း။

Kernel သည် စက်သစ်ပင်မွမ်းမံပြင်ဆင်မှု အနည်းငယ်သာ လိုအပ်မည်ဖြစ်ပြီး UART ကို kernel တွင် မရရှိနိုင်သေးပါကသာ လိုအပ်မည်ဖြစ်သည်။ များစွာသောကိစ္စများတွင်၊ ပြုပြင်ပြောင်းလဲမှုလုံးဝမလိုအပ်ပါ။ သို့သော် သင်အသုံးပြုလိုသည့် tty ဥပမာ ရှိ၊ မရှိ အတည်ပြုပါ။ shell command ဖြင့် tty ရှိနေခြင်းကို စစ်ဆေးပါ။

$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

ဥပမာအားဖြင့် ပုံသေတည်ဆောက်မှု command ဖြင့် ပုံကို ထပ်မံတည်ဆောက်ပါ။ample-

$ ./bitbake msc-image-base

စမ်းသပ်ရန်ရည်ရွယ်ချက်အတွက် UART အဒက်တာသည် UART အဟောင်းနှင့် ချိတ်ဆက်သင့်သည်။ UART အဟောင်းတွင် အထွက်နှုန်း မရှိတော့ပါ။ UART အသစ်သည် အပြည့်အဝ လုပ်ဆောင်နိုင်သင့်သည်၊ ထို့ကြောင့် u-boot UART shell နှင့် linux ကွန်ဆိုးလ်ကို အသုံးပြု၍ ချိတ်ဆက်မှုကို အတည်ပြုပါ။

ထုတ်ကုန်ပံ့ပိုးမှု

Avnet Embedded အင်ဂျင်နီယာများနှင့် နည်းပညာရှင်များသည် ကျွန်ုပ်တို့၏ဖောက်သည်များကို လိုအပ်သည့်အခါတိုင်း ပံ့ပိုးကူညီပေးရန် ကတိပြုပါသည်။ Avnet Embedded ၏ နည်းပညာပံ့ပိုးကူညီမှုအား မဆက်သွယ်မီ၊ ကျွန်ုပ်တို့၏ သက်ဆိုင်ရာ စာမျက်နှာများတွင် ကျေးဇူးပြု၍ ဆွေးနွေးပါ။ website မှာ
https://embedded.avnet.com/support/
နောက်ဆုံးပေါ်စာရွက်စာတမ်းများ၊ ယာဉ်မောင်းများနှင့် ဆော့ဖ်ဝဲဒေါင်းလုဒ်များအတွက်။

ထိုနေရာတွင် ပေးထားသော အချက်အလက်သည် သင့်ပြဿနာကို မဖြေရှင်းနိုင်ပါက၊ ကျေးဇူးပြု၍ ကျွန်ုပ်တို့၏ Avnet Embedded Technical Support team ကို အောက်ပါအတိုင်း ဆက်သွယ်ပါ။

အီးမေးလ်- support.boards@avnet.eu
ဖုန်း- +49 (0)8165 906-200

AVNET မြှုပ်နှံထားသော လိုဂို

စာရွက်စာတမ်းများ / အရင်းအမြစ်များ

AVNET EMBEDDED MSC SM2S-IMX8M Debug UART Port ARM အခြေခံကွန်ပျူတာများ [pdf] ညွှန်ကြားချက်များ
MSC SM2S-IMX8M၊ MSC SM2S-IMX8M မော်ဂျူးပေါ်ရှိ UART Port ARM အခြေခံကွန်ပျူတာများ အမှားရှာပြင်ခြင်း၊ Module ရှိ UART Port ARM အခြေခံကွန်ပျူတာများကို အမှားရှာပါ၊ Module ပေါ်ရှိ UART Port ARM အခြေခံကွန်ပျူတာများ၊ Module ပေါ်ရှိ ARM အခြေခံ ကွန်ပျူတာများကို ပို့ပါ၊ Module ပေါ်ရှိ ARM အခြေခံ ကွန်ပျူတာများ၊ Module ပေါ်ရှိ ARM အခြေခံ ကွန်ပျူတာများ၊

ကိုးကား

မှတ်ချက်တစ်ခုချန်ထားပါ။

သင့်အီးမေးလ်လိပ်စာကို ထုတ်ပြန်မည်မဟုတ်ပါ။ လိုအပ်သောအကွက်များကို အမှတ်အသားပြုထားသည်။ *