AVNET EMBEDDED MSC SM2S-IMX8M Debug UART Port ARM កុំព្យូទ័រផ្អែកលើការណែនាំអំពីម៉ូឌុល

បុព្វបទ
សេចក្តីជូនដំណឹងស្តីពីការរក្សាសិទ្ធិ
រក្សាសិទ្ធិ © 2023 Avnet Embedded GmbH ។ រក្សារសិទ្ធគ្រប់យ៉ាង។ ការចម្លងឯកសារនេះ ផ្តល់ជូនអ្នកដ៏ទៃ និងការប្រើប្រាស់ ឬការប្រាស្រ័យទាក់ទងនៃខ្លឹមសារនោះ ត្រូវបានហាមឃាត់ដោយគ្មានសិទ្ធិអំណាចច្បាស់លាស់ពី Avnet Embedded /MSC Technologies
GmbH ។ ជនល្មើសត្រូវទទួលខុសត្រូវចំពោះការសងការខូចខាត។ សិទ្ធិទាំងអស់ត្រូវបានរក្សានៅក្នុងព្រឹត្តិការណ៍នៃការផ្តល់ប៉ាតង់ឬការចុះឈ្មោះនៃគំរូឧបករណ៍ប្រើប្រាស់ឬការរចនា។
ព័ត៌មានសំខាន់
ឯកសារនេះគឺសម្រាប់តែទស្សនិកជនដែលមានសមត្ថភាពប៉ុណ្ណោះ។ ផលិតផលដែលបានពិពណ៌នានៅទីនេះមិនមែនជាផលិតផលអ្នកប្រើប្រាស់ចុងក្រោយទេ។ វាត្រូវបានបង្កើតឡើង និងផលិតសម្រាប់ដំណើរការបន្ថែមទៀតដោយបុគ្គលិកដែលបានទទួលការបណ្តុះបណ្តាល។
ការបដិសេធ
ទោះបីជាឯកសារនេះត្រូវបានបង្កើតដោយយកចិត្តទុកដាក់បំផុតក៏ដោយ ក៏គ្មានការធានា ឬការទទួលខុសត្រូវចំពោះភាពត្រឹមត្រូវ ឬភាពសមស្របសម្រាប់គោលបំណងជាក់លាក់ណាមួយត្រូវបានបញ្ជាក់ដែរ។ ព័ត៌មានក្នុងឯកសារនេះត្រូវបានផ្តល់ “ដូចជា” ហើយអាចនឹងមានការផ្លាស់ប្តូរដោយគ្មានការជូនដំណឹង។
ពាណិជ្ជសញ្ញា
ឈ្មោះផលិតផល ស្លាកសញ្ញា ឬពាណិជ្ជសញ្ញាដែលបានប្រើទាំងអស់ គឺជាកម្មសិទ្ធិរបស់ម្ចាស់រៀងៗខ្លួន។
ព័ត៌មានទូទៅ
វិសាលភាព
ឯកសារនេះអនុវត្តសម្រាប់គ្រប់ Avnet Embedded Computer-on-Modules ដោយផ្អែកលើ NXP i.MX8- និង i.MX9-series CPUs ដូចជា ឧ.
- 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 | M. Koch | កំណែដំបូង |
របៀបផ្លាស់ប្តូរច្រក UART បំបាត់កំហុស
សេចក្តីផ្តើម
ប្រព័ន្ធដែលមានមូលដ្ឋានលើ ARM ជាច្រើនបានភ្ជាប់មកជាមួយ Serial Console ជាមធ្យោបាយសំខាន់នៃការចូលប្រើសម្រាប់គោលបំណងបំបាត់កំហុស និងប្រព័ន្ធ។ អាស្រ័យលើតម្រូវការរបស់អតិថិជន វាគឺជាតម្រូវការដែលកើតឡើងញឹកញាប់នៅក្នុងប្រព័ន្ធបែបនេះ ដែលច្រក UART បំបាត់កំហុសលំនាំដើមត្រូវប្តូរទៅច្រកសៀរៀលផ្សេង។ តាមរយៈការបំបាត់កំហុស ច្រក UART យើងមានន័យថាច្រក UART ដែលនឹងផ្តល់នូវការបញ្ចូល/ទិន្នផល U-Boot ទាំងអស់ លទ្ធផលដំណើរការរបស់ខឺណែល និងសែលខឺណែល ជាទូទៅការទំនាក់ទំនង UART ទាំងអស់នឹងឃើញនៅក្នុងរូបភាព Yocto តិចតួចបំផុត។ ដោយសារច្រក UART លំនាំដើមមិនត្រូវបានប្រើដោយសមាសភាគកម្មវិធីតែមួយប៉ុណ្ណោះ ប៉ុន្តែជាធាតុផ្សំជាច្រើន រួមទាំង u-boot, atf-firmware, optee-os និង kernel ខ្លួនវា ការកំណត់ច្រក UART លំនាំដើមអាចជាបញ្ហាប្រឈម ហើយលើសពីនេះទៅទៀតview អាចបាត់បង់យ៉ាងឆាប់រហ័ស។ ឯកសារនេះនឹងពន្យល់ជំហានទាំងអស់ដែលត្រូវអនុវត្តតាម ដើម្បីសម្រេចកិច្ចការនេះ។ សម្រាប់ការពន្យល់កាន់តែងាយស្រួល ឯកសារនេះត្រូវបានសរសេរសម្រាប់ NXP i.MX8 MINI processor និង mscldk ប៉ុន្តែអាចត្រូវបានអនុវត្តចំពោះប្រព័ន្ធដំណើរការ i.MX8- និង i.MX9-series ទាំងអស់ និងប្រព័ន្ធសាងសង់ផ្សេងទៀតដោយមានការខិតខំប្រឹងប្រែងតិចតួចបំផុត។
ការរៀបចំបរិស្ថាន
ការផ្លាស់ប្តូរច្រកបំបាត់កំហុសលំនាំដើម UART នឹងតម្រូវឱ្យមានការកែប្រែកូដនៅក្នុង Yocto ហើយវិធីងាយស្រួលបំផុតដើម្បីធ្វើវាគឺប្រើ Yocto devtool ដើម្បីរៀបចំប្រភពសម្រាប់ពួកយើង។ វានឹងចាំបាច់ក្នុងការកែប្រែកញ្ចប់ Yocto ខាងក្រោម៖
- u-boot-imx (virtual/bootloader)
- linux-imx (និម្មិត/ខឺណែល)
- atf-imx
- optee-os (លុះត្រាតែ optee ត្រូវបានប្រើ)
ប្រភពគួរតែត្រូវបានរៀបចំជាមួយ devtool:
$ ./devtool កែប្រែ u-boot-imx
$ ./devtool កែប្រែ linux-imx
$ ./devtool កែប្រែ atf-imx
$ ./devtool កែប្រែ optee-os
ប្រភពទាំងអស់អាចរកបាននៅក្នុងថត "កន្លែងធ្វើការ" ។
ការកែប្រែលេខកូដ
ការកែប្រែកម្មវិធីចាប់ផ្ដើមប្រព័ន្ធ
នៅក្នុង bootloader ការចាប់ផ្តើម UART មូលដ្ឋានមួយចំនួននឹងកើតឡើង ដូច្នេះវានឹងចាំបាច់ក្នុងការកែប្រែ muxing និង base address នៃ UART port ។ ភារកិច្ចទីពីរនៃ u-boot គឺត្រូវបញ្ជូន boot argument ទៅកាន់ kernel ហើយនៅទីនេះ វានឹងចាំបាច់ក្នុងការកែប្រែ console tty argument ។ ការចាប់ផ្តើម UART និង muxing កើតឡើងនៅដើមដំបូងបំផុត។tage នៃដំណើរការចាប់ផ្ដើមនៅក្នុង 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 ជាមួយ init_ser1() នៅក្នុងមុខងារ board_early_init_f() ។ លើសពីនេះទៀតយើងកត់សំគាល់ថារចនាសម្ព័ន្ធ ser1_pads មិនត្រូវបានកំណត់ទេ។ នៅទីនេះវានឹងចាំបាច់ក្នុងការយល់ដឹងអំពីខ្សែភ្លើងនៃ UART1 ។ នៅលើ imx8mm UART1 អាចត្រូវបានលាយបញ្ចូលគ្នាទៅនឹងបន្ទះ uart1 ឬទៅ 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 គួរតែត្រូវបានកែប្រែ អាសយដ្ឋានត្រូវបានកំណត់នៅក្នុងការកំណត់បឋមកថារបស់ក្រុមប្រឹក្សា 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…” ហើយកែប្រែ “ttymxc1” ទៅ “ttymxc0”។ លេខលិបិក្រមជាប់នឹងសន្ទស្សន៍ UART ហើយតែងតែជាសន្ទស្សន៍ UART ដក 1។ ដូច្នេះសម្រាប់ UART 2 យើងប្រើ ttymxc1 សម្រាប់ UART3 ប្រើ ttymxc2 ជាដើម។
ការកែប្រែកម្មវិធីបង្កប់ដែលជឿទុកចិត្តរបស់ 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៖ workspace/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 module cryptography ត្រូវបានប្រើនៅលើប្រព័ន្ធ។ Optee ដំណើរការលើស្នូល ARM Cortex-A53 ដូចគ្នា ប៉ុន្តែនៅក្នុងឧទាហរណ៍ឯករាជ្យទាំងស្រុងមួយទៀតដូចជាខឺណែល។ Optee ក៏តម្រូវឱ្យមានការចូលប្រើ UART ហើយក្នុងករណីនេះវាមានន័យថាការកែប្រែអាសយដ្ឋានមូលដ្ឋាន។
គោលដៅ file: workspace/sources/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 ដែលអ្នកចង់ប្រើមានឬអត់! ពិនិត្យវត្តមាន 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
បង្កើតរូបភាពម្តងទៀតដោយប្រើពាក្យបញ្ជាបង្កើតលំនាំដើម ឧទាហរណ៍ampលេ៖
$ ./bitbake msc-image-base
សម្រាប់គោលបំណងសាកល្បង អាដាប់ទ័រ UART គួរតែត្រូវបានភ្ជាប់ទៅ UART ចាស់។ មិនគួរមានលទ្ធផលទៀតទេនៅលើ UART ចាស់! UART ថ្មីគួរតែមានមុខងារពេញលេញ សម្រាប់ការនោះសូមផ្ទៀងផ្ទាត់ការតភ្ជាប់ដោយប្រើសែល UART U-boot និងកុងសូលលីនុច។
ការគាំទ្រផលិតផល
វិស្វករ និងអ្នកបច្ចេកទេសបង្កប់ Avnet ប្តេជ្ញាផ្តល់ការគាំទ្រដល់អតិថិជនរបស់យើងនៅពេលណាដែលត្រូវការ។ មុននឹងទាក់ទងផ្នែកជំនួយបច្ចេកទេសរបស់ Avnet Embedded សូមពិគ្រោះជាមួយទំព័រនីមួយៗនៅលើរបស់យើង។ webគេហទំព័រនៅ
https://embedded.avnet.com/support/
សម្រាប់ឯកសារចុងក្រោយបំផុត កម្មវិធីបញ្ជា និងការទាញយកកម្មវិធី។
ប្រសិនបើព័ត៌មានដែលបានផ្តល់នៅទីនោះមិនអាចដោះស្រាយបញ្ហារបស់អ្នកបានទេ សូមទាក់ទងក្រុមជំនួយបច្ចេកទេស Avnet Embedded របស់យើងដូចខាងក្រោម៖
អ៊ីមែល៖ 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 Port ARM កុំព្យូទ័រផ្អែកលើម៉ូឌុល, UART Port ARM កុំព្យូទ័រផ្អែកលើម៉ូឌុល, Port ARM កុំព្យូទ័រផ្អែកលើ Module, កុំព្យូទ័រផ្អែកលើ ARM នៅលើម៉ូឌុល កុំព្យូទ័រផ្អែកលើ Module កុំព្យូទ័រផ្អែកលើម៉ូឌុល |




