AVNET ایمبیڈڈ MSC SM2S-IMX8M ڈیبگ UART پورٹ ARM پر مبنی کمپیوٹرز ماڈیول ہدایات پر
AVNET ایمبیڈڈ MSC SM2S-IMX8M ڈیبگ UART پورٹ ARM پر مبنی کمپیوٹرز آن ماڈیول

دیباچہ

کاپی رائٹ نوٹس

کاپی رائٹ © 2023 Avnet Embedded GmbH. جملہ حقوق محفوظ ہیں. اس دستاویز کی کاپی کرنا، دوسروں کو فراہم کرنا اور اس کے مواد کا استعمال یا مواصلات Avnet Embedded/MSC Technologies کی طرف سے واضح اختیار کے بغیر منع ہیں۔

GmbH مجرم ہرجانے کی ادائیگی کے ذمہ دار ہیں۔ پیٹنٹ کی منظوری یا یوٹیلیٹی ماڈل یا ڈیزائن کی رجسٹریشن کی صورت میں تمام حقوق محفوظ ہیں۔

اہم معلومات

یہ دستاویزات صرف اہل سامعین کے لیے ہیں۔ یہاں بیان کردہ پروڈکٹ صارف کی آخری مصنوعات نہیں ہے۔ اسے تربیت یافتہ اہلکاروں کے ذریعے مزید پروسیسنگ کے لیے تیار اور تیار کیا گیا تھا۔

ڈس کلیمر

اگرچہ یہ دستاویز انتہائی احتیاط کے ساتھ تیار کی گئی ہے کسی خاص مقصد کے لیے درستگی یا موزوں ہونے کی کوئی وارنٹی یا ذمہ داری مضمر نہیں ہے۔ اس دستاویز میں معلومات "جیسا ہے" فراہم کی گئی ہے اور بغیر اطلاع کے تبدیل کی جاسکتی ہے۔

ٹریڈ مارکس

تمام استعمال شدہ پروڈکٹ کے نام، لوگو یا ٹریڈ مارک ان کے متعلقہ مالکان کی ملکیت ہیں۔

عمومی معلومات

دائرہ کار

یہ دستاویز NXP i.MX8- اور i.MX9-series CPUs پر مبنی تمام Avnet ایمبیڈڈ کمپیوٹر آن ماڈیولز پر لاگو ہوتی ہے، جیسے کہ

  • 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 ان پٹ/آؤٹ پٹ، کرنل بوٹلاگ آؤٹ پٹ اور کرنل شیل فراہم کرے گا، بنیادی طور پر تمام UART کمیونیکیشن ایک کم سے کم Yocto امیج میں نظر آئے گی۔ چونکہ پہلے سے طے شدہ UART پورٹ صرف ایک سافٹ ویئر جزو کے ذریعہ استعمال نہیں ہوتا ہے، بلکہ بہت سے اجزاء بشمول u-boot، atf-firmware، optee-os اور kernel خود استعمال کرتے ہیں، اس لیے پہلے سے طے شدہ 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 پورٹ کے بنیادی ایڈریس میں ترمیم کرنا ضروری ہوگا۔ یو بوٹ کا دوسرا کام بوٹ آرگیومینٹس کو کرنل میں منتقل کرنا ہے اور یہاں کنسول ٹی ٹی آرگومینٹ میں ترمیم کرنا ضروری ہوگا۔ UART کی ابتدا اور مکسنگ ابتدائی s میں ہوتی ہے۔tagSPL میں بوٹ کے عمل کا e۔ سورس کوڈ بورڈ کے مخصوص spl.c میں پایا جا سکتا ہے۔ file.

ہدف file: workspace/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() سے بورڈ_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: 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

آخر میں، کنسول کرنل دلیل میں ترمیم کی جانی چاہئے۔ قدر اسی ہیڈر میں مل سکتی ہے۔ file. تلاش کریں۔ "console=ttymxc1…" اور "ttymxc1" کو "ttymxc0" میں تبدیل کریں۔ انڈیکس نمبر UART انڈیکس سے منسلک ہوتا ہے، اور ہمیشہ UART انڈیکس مائنس 1 ہوتا ہے۔ لہذا UART 2 کے لیے ہم ttymxc1 استعمال کرتے ہیں، UART3 کے لیے ttymxc2 وغیرہ استعمال کرتے ہیں۔

ARM ٹرسٹڈ فرم ویئر میں ترمیم کرنا

آرم ٹرسٹڈ فرم ویئر (imx-atf) کا کوئی اپنا UART ابتدائیہ کا معمول نہیں ہے، تاہم اس کا ایک ہارڈ کوڈ شدہ UART بیس ایڈریس ہے، اور U-boot سے مناسب UART ابتداء پر انحصار کرتا ہے۔ 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ہم imx2mm پر UART1 سے UART8 میں تبدیل کرتے ہیں:

# IMX_BOOT_UART_BASE ?= 0x30890000
IMX_BOOT_UART_BASE ?= 0x30860000

optee-os میں ترمیم کرنا

Optee OS عام طور پر اس وقت لوڈ ہوتا ہے جب سسٹم پر CAAM ماڈیول کرپٹوگرافی کا استعمال کیا جاتا ہے۔ Optee اسی ARM Cortex-A53 cores پر چلتا ہے، لیکن ایک اور مکمل طور پر آزاد مثال میں کرنل کے طور پر۔ Optee کو UART تک رسائی کی بھی ضرورت ہوتی ہے اور اس صورت میں اس کا مطلب بنیادی ایڈریس میں ترمیم ہے۔

ہدف file: workspace/sources/optee-os/core/arch/arm/plat-imx/conf.mk

یہ سابقample 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 کلینالل u-boot-imx linux-imx imx-atf optee-os

پہلے سے طے شدہ بلڈ کمانڈ کے ساتھ تصویر کو دوبارہ بنائیں، مثال کے طور پرampلی:

$ ./bitbake msc-image-base

جانچ کے مقصد کے لیے، ایک UART اڈاپٹر کو پرانے UART سے منسلک ہونا چاہیے۔ پرانے UART پر مزید آؤٹ پٹ نہیں ہونا چاہئے! نیا UART مکمل طور پر فعال ہونا چاہیے، اس کے لیے براہ کرم u-boot UART شیل اور لینکس کنسول استعمال کر کے کنکشن کی تصدیق کریں۔

پروڈکٹ سپورٹ

Avnet ایمبیڈڈ انجینئرز اور تکنیکی ماہرین ہمارے صارفین کو جب بھی ضرورت ہو مدد فراہم کرنے کے لیے پرعزم ہیں۔ Avnet Embedded کے ٹیکنیکل سپورٹ سے رابطہ کرنے سے پہلے، براہ کرم ہمارے متعلقہ صفحات سے رجوع کریں۔ webسائٹ پر
https://embedded.avnet.com/support/
تازہ ترین دستاویزات، ڈرائیورز اور سافٹ ویئر ڈاؤن لوڈز کے لیے۔

اگر وہاں فراہم کردہ معلومات سے آپ کا مسئلہ حل نہیں ہوتا ہے، تو براہ کرم ہماری Avnet ایمبیڈڈ ٹیکنیکل سپورٹ ٹیم سے مندرجہ ذیل طور پر رابطہ کریں:

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

AVNET ایمبیڈڈ لوگو

دستاویزات / وسائل

AVNET ایمبیڈڈ MSC SM2S-IMX8M ڈیبگ UART پورٹ ARM پر مبنی کمپیوٹرز آن ماڈیول [پی ڈی ایف] ہدایات
MSC SM2S-IMX8M، MSC SM2S-IMX8M ڈیبگ UART پورٹ ARM پر مبنی کمپیوٹرز ماڈیول پر، ڈیبگ UART پورٹ ARM پر مبنی کمپیوٹرز ماڈیول پر، UART پورٹ ARM پر مبنی کمپیوٹرز ماڈیول پر، پورٹ ARM پر مبنی کمپیوٹرز ماڈیول پر، ARM پر مبنی کمپیوٹرز، Module پر ARM پر مبنی کمپیوٹرز ماڈیول پر، کمپیوٹرز پر ماڈیول، ماڈیول

حوالہ جات

ایک تبصرہ چھوڑیں۔

آپ کا ای میل پتہ شائع نہیں کیا جائے گا۔ مطلوبہ فیلڈز نشان زد ہیں۔ *