امبدد لینوکس, مقاله های سیسوگ

18 پرسش‌وپاسخ درباره سیستم های امبدد که برای مصاحبه کاری باید بلد باشید!

امبدد سیستم

در این مطلب ۱۸ پرسش‌وپاسخ متداول درباره سیستم های امبدد برای تمامی افراد چه داوطلبان مبتدی و چه افراد باتجربه‌ وجود دارد تا بتوانند ابهامات و سؤالات خود را در این باره برطرف کنند.

پرسش‌ها و پاسخ‌های مربوط به سیستم های امبدد برای افراد مبتدی

1) سیستم امبدد چیست؟

سیستم های امبدد (Embedded system) یا سیستم های تعبیه شده، شامل سیستم های کامپیوتری با عملکردی ویژه و هدفی مشخص هستند که در درون یک سیستم مکانیکی یا الکتریکی بزرگ تر قرار گرفته اند و معمولا دارای قیدهای رایانش بی درنگ (Real time Computing) هستند.

2) چرا سیستم های امبدد مهم هستند؟

با امبدد سیستم، امکان جایگزینی ده‌ها یا تعداد بیش‌تری گیت‌های لاجیک سخت‌افزاری، بافرهای ورودی، مدارهای زمان‌بندی، درایورهای خروجی و… با ریزپردازنده‌ای ارزان قیمت وجود دارد.

3) اجزای اصلی سیستم های امبدد را نام ببرید؟

اجزای اصلی سیستم های امبدد عبارت‌اند از:

سخت‌افزار

  • پردازنده
  • حافظه
  • تایمرها
  • مدارهای ورودی/خروجی
  • مدارهای ویژه سیستم اپلیکیشن

نرم افزار

  • امبدد سیستم دردسترس‌بودن حافظه سیستم و سرعت پردازنده را بررسی می‌کند.
  • محدود کردن توان اتلافی در زمانی که سیستم بصورت پیوسته کار می کند.

سیستم عامل بلادرنگ RTOS

  • این سیستم یک فرایند را طبق زمان‌بندی اجرا می‌کند و از یک فرایند به فرایند دیگر سوییچینگ را انجام می‌دهد.

4) نحوه طبقه‌بندی دستگاه‌های ورودی/خروجی برای سیستم های امبدد چگونه است؟

دستگاه‌های ورودی/خروجی سیستم های امبدد به دودسته تقسیم می‌شوند:

  • سریال

ورودی

خروجی

سنکرون

سیگنال صوتی/تصویری

سیگنال صوتی/تصویری

آسنکرون

صفحه‌کلید، ماوس، مودم

پرینتر، مودم

  • موازی

ورودی

خروجی

تک‌بیت

سنسورهای Threshold

پالس‌های مدار خارجی

مولتی بیت

Vp از ADC، سنسورها

LCD، پرینتر

5) مفهوم امبدد سیستم بلادرنگ یا real-time را توضیح دهید؟

امبدد سیستم‌های بلادرنگ یا real-time، سیستم های رایانه ای هستند که مانتورینگ، نظارت و کنترل سیستم های خارجی را انجام می دهند، این سیستم های خارجی با استفاده از محرک‌ها، سنسورها و سایر رابط‌های ورودی – خروجی به سیستم کامپیوتری متصل می‌شوند.

Embedded Interview Question And Answers

6) میکروکنترلر چیست؟

میکروکنترلر یک ریزپردازنده بسیار قوی و مدار ساده شده‌ای است که قادر است دستورات خاص مطابق با برنامه موجود در حافظه را اجرا کند.

7) تفاوت بین میکروپروسسور (ریزپردازنده) و میکروکنترلر چیست؟

  • میکروپروسسور (ریزپردازنده)

همان‌طور که از نام آن نیز پیداست، دستگاه پردازشی است که دیتا را بر اساس مجموعه‌ای از دستورالعمل‌ها به اطلاعات تبدیل می‌کند. به‌علاوه، میکروپروسسور یک تراشه الکترونیکی بسیار فشرده است که به همین دلیل از آن به‌عنوان ریزپردازنده یاد می‌شود.

  • میکروکنترلر

یک سیستم الکترونیکی است که از یک عنصر پردازش، یک حافظه کوچک (RAM، ROM، EPROM)، پورت‌های ورودی/خروجی و… بر روی یک تراشه تشکیل شده است؛ بنابراین، یک میکروکنترلر شباهت بسیار کمی به یک میکروکامپیوتر دارد. به‌طورکلی، میکروکنترلر یک دستگاه الکترونیکی بسیار کوچک و کم‌هزینه است که در بسیاری از لوازم الکترونیکی نقش اساسی دارد.

8) DMA با چه چیزی سروکار دارد؟

DMA می تواند آدرس های حافظه را تولید و وارد سایکل های خواندن یا نوشتن حافظه کند. DMA شامل چندین رجیستر سخت افزاری است که می تواند توسط CPU نوشته و خوانده شود که شامل یک رجیستر آدرس حافظه، یک رجیستر تعداد بایت و یک یا چند رجیستر کنترل است.

9) تأخیر وقفه چیست و چگونه می‌توان آن را کاهش داد؟

تأخیر وقفه (Interrupt latency)، تأخیر بین زمان شروع یک درخواست وقفه (IRQ) و شروع روتین سرویس وقفه مربوطه (ISR)** است. این معیار، در تعیین عملکرد و پاسخگویی سیستم و همچنین در طراحی و بهینه سازی سیستم های بلادرنگ و تعبیه شده، بسیار مهم است.

10) برای ارتباط با امبدد سیستم از چه باس‌هایی استفاده می‌شود؟

برای امبدد سیستم، باس‌های موردنیاز برای ارتباط عبارت‌اند از:

  • I2C: برای ارتباط بین چند IC استفاده می‌شود.
  • CAN: در اتومبیل‌هایی با شبکه کنترل مرکزی استفاده می‌شود.
  • USB: برای ارتباط بین CPU و دستگاه‌هایی مانند ماوس و غیره استفاده می‌شود.

در حالی که، ISA، EISA، PCI باس‌های استاندارد برای ارتباطات پارالل هستند و در رایانه‌های شخصی، دستگاه‌های شبکه کامپیوتری و … استفاده می‌شوند.

پرسش‌ها و پاسخ‌های تخصصی تر سیستم های امبدد

11) کاربردهای تایمرها در سیستم های امبدد چیست؟

تایمرها در امبدد سیستم در موارد مختلفی کاربرد دارند؛ از جمله:

  • Real Time Clock (RTC) برای سیستم
  • شروع یک ایونت بعد از یک تأخیر زمانی از پیش تعیین شده
  • راه‌اندازی حتی بعد از مقایسه زمان‌های از پیش تعیین شده
  • محاسبه تعداد شمارش تایمر در یک ایونت
  • پیداکردن فاصله زمانی بین دو ایونت
  • زمان‌بندی برای انجام تسک‌های مختلف
  • مالتی پلکسینگ تایم ویژن
  • برنامه‌ریزی برای تسک‌های مختلف در RTOS

12) تايمر سگ نگهبان (Watchdog) چیست؟

Watchdog یا سگ نگهبان، یک تایمر الکترونیکی یا نرم‌افزاری می‌باشد که به‌منظور شناسایی ایرادات میکروکنترلرها استفاده می‌شود. تایمر نگهبان در میکروکنترلرها، برای آسان‌کردن اصلاح خودکار خطاهای سخت‌افزاری کاربرد دارد. همچنین، تایمر نگهبان جهت جلوگیری از اختلال در عملکرد سیستم به‌وسیله نرم افزاهای اشتباه استفاده می‌گردد. در حالت عادی تایمر نگهبان به‌صورت مداوم ریست می‌شود. اگر به علت خطای سخت‌افزاری یا خطای برنامه، میکروکنترلر نتواند دوباره تایمر نگهبان را راه‌اندازی کند، موجب سپری‌شدن تایمر و ایجاد سیگنال مهلت می‌شود؛ از سیگنال مهلت زمانی جهت آغاز اقدامات اصلاحی استفاده می‌شود. اقدامات اصلاحی اغلب شامل قراردادن سخت‌افزارهای مرتبط در حالت ایمن و استناد به راه‌اندازی مجدد می‌باشد.

13) کاربرد لوپ یا حلقه بی‌نهایت در سیستم های امبدد را توضیح دهید؟

سیستم های امبدد به حلقه‌های بی‌نهایت برای پردازش یا نظارت پیوسته بر وضعیت برنامه نیاز دارند. به‌عنوان‌مثال، یک برنامه همواره باید برای عدم وجود هر گونه خطایی که ممکن است در طول زمان اجرای برنامه اتفاق بیفتد؛ مانند قطع حافظه، کنترل شود.

14) برخی از خطاهای رایج در سیستم های امبدد را نام ببرید؟

برخی از خطاهای رایج در سیستم های امبدد عبارت‌اند از:

  • آسیب‌دیدن دستگاه‌های حافظه تخلیه استاتیک و جریان گذرا
  • خرابی آدرس لاین به دلیل اتصال کوتاه
  • خرابی دیتا لاین‌ها
  • در استوریج (storage) برخی از مکان‌های حافظه به دلیل ایجاد برخی ارورها، قابل‌دسترسی نباشند
  • اشتباه قراردادن دستگاه‌های حافظه در اسلات‌های حافظه
  • ایجاد سیگنال‌های کنترلی نادرست

15) سمافور (Semaphore) چیست؟

یکی از ساده ترین مفاهیم سیستم عامل سمافور (Semaphore) است. ممکن است شما منابعی داشته باشید که چند قسمت از سیستم شما تمایل به استفاده از آنها در یک زمان را داشته باشند. برای مثال، ممکن است چند بخش از برنامه شما بخواهند داده‌ای را از رم بخوانند یا در آن بنویسند. یک راه این است که محدودیتی نداشته باشید و به همه اجازه بدهید که هر بار می‌خواهند از رم استفاده کنند. ولی اگر برنامه شما دارای تابع‌های زیادی باشد و تعداد دسترسی‌ها به رم بیش از اندازه شود به احتمال زیاد باس داده و آدرس که به رم متصل هستند نمی‌توانند به همه این درخواست‌ها برسند. در اینجا می‌توانید برای حل مشکل و جلوگیری از قفل شدن سیستم یا کند شدن آن، محدودیتی روی تعداد درخواست‌هایی که رم می‌تواند بپذیرد قرار دهید. این مقدار در واقع توسط سمافور تعیین می‌شود.

با یک سمافور دسترسی به یک گروه از وسایل جانبی مشابه، مدیریت می‌شود. تعداد منابع موجود، در پارامتر تابع osSemaphoreCreate  بیان می‌شود. هر بار با تابع osSemaphoreWait  یک token می‌گیرید و از شماره سمافور، یک عدد کم می‌شود. وقتی شماره سمافور، به صفر رسید، دیگر token نمی توان گرفت. برای آزاد کردن سمافور هم، از تابع osSemaphoreRelease استفاده می‌شود. این تابع شماره سمافور را یک عدد افزایش می‌دهد. در نهایت تابع osSemaphoreDelete نیز آن را پاک می‌کند.

16) تفاوت بین موتکس (Mutex) و سمافور (Semaphore) چیست؟

  • موتکس از مکانیزم قفل‌شدن استفاده می‌کند و اگر پروسه‌ای بخواهد از منابع استفاده کند، ابتدا آن منابع را قفل می‌کند و سپس آن‌ها آزاد می‌شوند. از طرف دیگر، سمافور از مکانیزم سیگنال استفاده می‌کند و متدهای wait و signal نحوه استفاده از منابع را مدیریت می‌کنند.
  • یک موتکس شامل یک آبجکت است؛ اما سمافور یک متغیر از نوع عددی (integer) می‌باشد.
  • سمافور دارای فانکشن‌های wait و signal است، اما موتکس هیچ فانکشنی برای صدازدن ندارد.
  • یک آبجکت موتکس به چندین ترد پروسه‌ها اجازه می‌دهد تا به یک منبع توزیع شده، دسترسی داشته باشند، اما فقط در یک‌زمان مشخص. از طرف دیگر، سمافور به تردهای پروسه‌ها اجازه دسترسی به instanceهای محدودی از منابع را می‌دهد تا زمانی که در دسترس هستند.
  • در موتکس، قفل‌شدن و آزادسازی می‌تواند توسط یک پروسه انجام شود. اما مقدار سمافور باید توسط هر پروسه‌ای که نیاز به منابع دارد، آپدیت شود؛ همچنین، باید اشاره کرد که فقط یک پروسه اجازه این کار را دارد.

17) چه زمانی باید از تابع بازگشتی (recursion function) استفاده کرد؟ وقتی توابع بازگشتی به‌صورت inline باشند، چه اتفاقی می‌افتد؟

وقتی تعداد درخواست‌های بازگشتی زیادتر از حد معمول نیست، می‌توان از تابع بازگشتی استفاده کرد. تابع inline، هر زمان که فراخوانده شود، تعریف کامل آن تابع را کپی می‌کند. همچنین، تابع بازگشتی inline، بار (burden) اجرای کامپایلر را ایجاد می‌کند.

18) آیا می‌توان در کرنل لینوکس از سمافور (semaphore)، موتکس (mutex) یا اسپین‌لاک (spinlock) در کانتکست وقفه استفاده کرد؟

در کرنل لینوکس نمی‌توان از سمافور یا موتکس برای کانتکست وقفه استفاده کرد. اما از اسپین‌لاک‌ها می‌توان برای قفل‌کردن کانتکست وقفه استفاده کرد.

منبع: ‌guru99

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *