در این مطلب ۱۸ پرسشوپاسخ متداول درباره سیستم های امبدد برای تمامی افراد چه داوطلبان مبتدی و چه افراد باتجربه وجود دارد تا بتوانند ابهامات و سؤالات خود را در این باره برطرف کنند.
سیستم های امبدد (Embedded system) یا سیستم های تعبیه شده، شامل سیستم های کامپیوتری با عملکردی ویژه و هدفی مشخص هستند که در درون یک سیستم مکانیکی یا الکتریکی بزرگ تر قرار گرفته اند و معمولا دارای قیدهای رایانش بی درنگ (Real time Computing) هستند.
با امبدد سیستم، امکان جایگزینی دهها یا تعداد بیشتری گیتهای لاجیک سختافزاری، بافرهای ورودی، مدارهای زمانبندی، درایورهای خروجی و… با ریزپردازندهای ارزان قیمت وجود دارد.
اجزای اصلی سیستم های امبدد عبارتاند از:
دستگاههای ورودی/خروجی سیستم های امبدد به دودسته تقسیم میشوند:
ورودی | خروجی | |
سنکرون | سیگنال صوتی/تصویری | سیگنال صوتی/تصویری |
آسنکرون | صفحهکلید، ماوس، مودم | پرینتر، مودم |
ورودی | خروجی | |
تکبیت | سنسورهای Threshold | |
مولتی بیت | Vp از ADC، سنسورها | LCD، پرینتر |
امبدد سیستمهای بلادرنگ یا real-time، سیستم های رایانه ای هستند که مانتورینگ، نظارت و کنترل سیستم های خارجی را انجام می دهند، این سیستم های خارجی با استفاده از محرکها، سنسورها و سایر رابطهای ورودی – خروجی به سیستم کامپیوتری متصل میشوند.
میکروکنترلر یک ریزپردازنده بسیار قوی و مدار ساده شدهای است که قادر است دستورات خاص مطابق با برنامه موجود در حافظه را اجرا کند.
همانطور که از نام آن نیز پیداست، دستگاه پردازشی است که دیتا را بر اساس مجموعهای از دستورالعملها به اطلاعات تبدیل میکند. بهعلاوه، میکروپروسسور یک تراشه الکترونیکی بسیار فشرده است که به همین دلیل از آن بهعنوان ریزپردازنده یاد میشود.
یک سیستم الکترونیکی است که از یک عنصر پردازش، یک حافظه کوچک (RAM، ROM، EPROM)، پورتهای ورودی/خروجی و… بر روی یک تراشه تشکیل شده است؛ بنابراین، یک میکروکنترلر شباهت بسیار کمی به یک میکروکامپیوتر دارد. بهطورکلی، میکروکنترلر یک دستگاه الکترونیکی بسیار کوچک و کمهزینه است که در بسیاری از لوازم الکترونیکی نقش اساسی دارد.
DMA می تواند آدرس های حافظه را تولید و وارد سایکل های خواندن یا نوشتن حافظه کند. DMA شامل چندین رجیستر سخت افزاری است که می تواند توسط CPU نوشته و خوانده شود که شامل یک رجیستر آدرس حافظه، یک رجیستر تعداد بایت و یک یا چند رجیستر کنترل است.
تأخیر وقفه (Interrupt latency)، تأخیر بین زمان شروع یک درخواست وقفه (IRQ) و شروع روتین سرویس وقفه مربوطه (ISR)** است. این معیار، در تعیین عملکرد و پاسخگویی سیستم و همچنین در طراحی و بهینه سازی سیستم های بلادرنگ و تعبیه شده، بسیار مهم است.
برای امبدد سیستم، باسهای موردنیاز برای ارتباط عبارتاند از:
در حالی که، ISA، EISA، PCI باسهای استاندارد برای ارتباطات پارالل هستند و در رایانههای شخصی، دستگاههای شبکه کامپیوتری و … استفاده میشوند.
تایمرها در امبدد سیستم در موارد مختلفی کاربرد دارند؛ از جمله:
Watchdog یا سگ نگهبان، یک تایمر الکترونیکی یا نرمافزاری میباشد که بهمنظور شناسایی ایرادات میکروکنترلرها استفاده میشود. تایمر نگهبان در میکروکنترلرها، برای آسانکردن اصلاح خودکار خطاهای سختافزاری کاربرد دارد. همچنین، تایمر نگهبان جهت جلوگیری از اختلال در عملکرد سیستم بهوسیله نرم افزاهای اشتباه استفاده میگردد. در حالت عادی تایمر نگهبان بهصورت مداوم ریست میشود. اگر به علت خطای سختافزاری یا خطای برنامه، میکروکنترلر نتواند دوباره تایمر نگهبان را راهاندازی کند، موجب سپریشدن تایمر و ایجاد سیگنال مهلت میشود؛ از سیگنال مهلت زمانی جهت آغاز اقدامات اصلاحی استفاده میشود. اقدامات اصلاحی اغلب شامل قراردادن سختافزارهای مرتبط در حالت ایمن و استناد به راهاندازی مجدد میباشد.
سیستم های امبدد به حلقههای بینهایت برای پردازش یا نظارت پیوسته بر وضعیت برنامه نیاز دارند. بهعنوانمثال، یک برنامه همواره باید برای عدم وجود هر گونه خطایی که ممکن است در طول زمان اجرای برنامه اتفاق بیفتد؛ مانند قطع حافظه، کنترل شود.
برخی از خطاهای رایج در سیستم های امبدد عبارتاند از:
یکی از ساده ترین مفاهیم سیستم عامل سمافور (Semaphore) است. ممکن است شما منابعی داشته باشید که چند قسمت از سیستم شما تمایل به استفاده از آنها در یک زمان را داشته باشند. برای مثال، ممکن است چند بخش از برنامه شما بخواهند دادهای را از رم بخوانند یا در آن بنویسند. یک راه این است که محدودیتی نداشته باشید و به همه اجازه بدهید که هر بار میخواهند از رم استفاده کنند. ولی اگر برنامه شما دارای تابعهای زیادی باشد و تعداد دسترسیها به رم بیش از اندازه شود به احتمال زیاد باس داده و آدرس که به رم متصل هستند نمیتوانند به همه این درخواستها برسند. در اینجا میتوانید برای حل مشکل و جلوگیری از قفل شدن سیستم یا کند شدن آن، محدودیتی روی تعداد درخواستهایی که رم میتواند بپذیرد قرار دهید. این مقدار در واقع توسط سمافور تعیین میشود.
با یک سمافور دسترسی به یک گروه از وسایل جانبی مشابه، مدیریت میشود. تعداد منابع موجود، در پارامتر تابع osSemaphoreCreate بیان میشود. هر بار با تابع osSemaphoreWait یک token میگیرید و از شماره سمافور، یک عدد کم میشود. وقتی شماره سمافور، به صفر رسید، دیگر token نمی توان گرفت. برای آزاد کردن سمافور هم، از تابع osSemaphoreRelease استفاده میشود. این تابع شماره سمافور را یک عدد افزایش میدهد. در نهایت تابع osSemaphoreDelete نیز آن را پاک میکند.
وقتی تعداد درخواستهای بازگشتی زیادتر از حد معمول نیست، میتوان از تابع بازگشتی استفاده کرد. تابع inline، هر زمان که فراخوانده شود، تعریف کامل آن تابع را کپی میکند. همچنین، تابع بازگشتی inline، بار (burden) اجرای کامپایلر را ایجاد میکند.
در کرنل لینوکس نمیتوان از سمافور یا موتکس برای کانتکست وقفه استفاده کرد. اما از اسپینلاکها میتوان برای قفلکردن کانتکست وقفه استفاده کرد.
منبع: guru99
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.