AVNET EMBEDDED MSC SM2S-IMX8M اشکال زدایی UART پورت ARM رایانه های مبتنی بر دستورالعمل های ماژول
AVNET EMBEDDED MSC SM2S-IMX8M اشکال زدایی UART پورت 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 M. Koch نسخه اولیه

نحوه تغییر درگاه اشکال زدایی UART

مقدمه

بسیاری از سیستم‌های مبتنی بر ARM با کنسول سریال به عنوان ابزار اصلی دسترسی برای اهداف اشکال‌زدایی و معرفی سیستم همراه هستند. بسته به نیاز مشتری، در چنین سیستم‌هایی یک ضرورت متداول است که پورت UART دیباگ پیش‌فرض باید به یک پورت سریال دیگر تغییر کند. منظور از اشکال‌زدایی پورت UART، پورت UART است که تمام ورودی/خروجی U-Boot، خروجی بوت‌لوگ هسته و پوسته هسته را ارائه می‌دهد، اساساً تمام ارتباطات UART در یک تصویر مینیمال Yocto مشاهده می‌شود. از آنجایی که پورت پیش‌فرض UART تنها توسط یک مؤلفه نرم‌افزاری استفاده نمی‌شود، بلکه توسط بسیاری از مؤلفه‌ها از جمله u-boot، atf-firmware، optee-os و خود هسته استفاده می‌شود، تنظیم پورت پیش‌فرض UART می‌تواند چالش‌برانگیز باشد.view می تواند به سرعت گم شود این سند تمام مراحلی را که باید برای دستیابی به این کار دنبال کنید توضیح می دهد. برای توضیح راحت‌تر، این سند برای پردازنده NXP i.MX8 MINI و mscldk نوشته شده است، اما می‌توان آن را برای تمام پردازنده‌های سری i.MX8 و i.MX9 و سایر سیستم‌های ساخت با تلاش بسیار کمی اعمال کرد.

آماده سازی محیط

تغییر پورت UART اشکال زدایی پیش فرض نیاز به تغییر کد در Yocto دارد و ساده ترین راه برای انجام آن، استفاده از Yocto devtool است تا منابع را برای ما آماده کند. لازم است بسته های Yocto زیر را اصلاح کنید:

  • u-boot-imx (مجازی/بوت لودر)
  • linux-imx (مجازی/هسته)
  • atf-imx
  • optee-os (فقط در صورت استفاده از optee)

منابع باید با devtool تهیه شوند: 

$ ./devtool تغییر u-boot-imx
$ ./devtool تغییر linux-imx
$ ./devtool اصلاح atf-imx
$ ./devtool اصلاح optee-os

همه منابع را می توان در فهرست "فضای کاری" یافت.

در حال اصلاح کد

اصلاح بوت لودر

در بوت لودر مقدار اولیه اولیه UART اتفاق می افتد، بنابراین لازم است که muxing و آدرس پایه پورت UART تغییر یابد. دومین وظیفه u-boot ارسال آرگومان های بوت به هسته است و در اینجا لازم است آرگومان کنسول tty را تغییر دهید. UART اولیه و muxing در اولین ثانیه اتفاق می افتدtage از فرآیند بوت در SPL. کد منبع را می توان در spl.c مخصوص برد پیدا کرد file.

هدف file: workspace/sources/u-boot-imx/board/msc/sm2s_imx8mm/spl.c

را باز کنید file و به تابع init_ser0():

استاتیک void init_ser0(void)
{
imx_iomux_v3_setup_multiple_pads(ser0_pads، ARRAY_SIZE(ser0_pads)); init_uart_clk(1);
}

این تابع ساعت را برای UART2(شاخص 1 برای UART فیزیکی 2).

حال، اگر بخواهیم به جای آن از UART1 استفاده کنیم، می توانیم تابع init_ser1 خودمان را تعریف کنیم:

استاتیک void init_ser1(void)
{
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 ممکن است به صورت زیر تعریف شود:

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: Workspace/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…” 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

Arm Trusted Firmware (imx-atf) هیچ روال اولیه سازی UART خود را ندارد، با این حال دارای یک آدرس پایه UART کدگذاری شده است و به مقداردهی اولیه UART مناسب از u-boot متکی است. پیکربندی آدرس پایه متفاوت در u-boot و imx-atf به احتمال زیاد باعث می‌شود که پردازنده در یک کنترل‌کننده استثنا گیر کند و چیزی در UART قابل مشاهده نخواهد بود (به نظر می‌رسد که CPU بدون هیچ دلیل قابل مشاهده ای معلق است). وقتی پورت 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 در سیستم استفاده می شود. 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 را با دستور 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

برای مثال، دوباره با دستور ساخت پیش فرض، تصویر را بسازیدampدر:

$ ./bitbake msc-image-base

برای هدف آزمایش، یک آداپتور UART باید به UART قدیمی متصل شود. دیگر نباید در UART قدیمی خروجی وجود داشته باشد! UART جدید باید کاملاً کاربردی باشد، بنابراین لطفاً با استفاده از پوسته UART u-boot و کنسول لینوکس اتصال را تأیید کنید.

پشتیبانی محصول

مهندسان و تکنسین های Avnet Embedded متعهد هستند که در صورت نیاز از مشتریان خود پشتیبانی کنند. قبل از تماس با پشتیبانی فنی Avnet Embedded، لطفاً با صفحات مربوطه در ما مشورت کنید webسایت در
https://embedded.avnet.com/support/
برای آخرین اسناد، درایورها و دانلود نرم افزار.

اگر اطلاعات ارائه شده در آنجا مشکل شما را حل نکرد، لطفاً با تیم پشتیبانی فنی Avnet Embedded ما به شرح زیر تماس بگیرید:

ایمیل: support.boards@avnet.eu
تلفن: +49 (0)8165 906-200

لوگوی AVNET EMBEDDED

اسناد / منابع

AVNET EMBEDDED MSC SM2S-IMX8M اشکال زدایی UART پورت ARM کامپیوترهای مبتنی بر ماژول [pdfدستورالعمل‌ها
MSC SM2S-IMX8M، MSC SM2S-IMX8M اشکال زدایی کامپیوترهای مبتنی بر پورت UART ARM بر روی ماژول، اشکال زدایی رایانه‌های مبتنی بر پورت UART ARM بر روی ماژول، رایانه‌های مبتنی بر پورت UART ARM بر روی ماژول، رایانه‌های مبتنی بر پورت ARM در ماژول، رایانه‌های مبتنی بر ARM، رایانه‌های مبتنی بر ARM، رایانه‌های مبتنی بر ماژول در ماژول، کامپیوترها در ماژول، ماژول

مراجع

نظر بدهید

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی مشخص شده اند *