مقدمه‌‌ای بر طراحی و توسعه‌ی سیستم‌های نهفته

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

برای آنکه بتوانیم به درک درستی از مفهوم سیستم نهفته برسیم، ابتدا باید یک بار دیگر مفهوم سیستم را با هم مرور کنیم.

سیستم چیست؟

یک سیستم مجموعه‌ای از تعدادی جزء یا واحد تشکیل دهنده است که در راستای انجام عملکردی خاص، با هم همکاری می‌کنند.

مثلا ماشین یک سیستم خودرویی است که از اجزایی مانند یک اتاقک فلزی، یک واحد احتراق که موتور را راه‌اندازی می‌کند، چرخ‌ها که با گردش خود ماشین را به حرکت درمی‌آورند و … تشکیل شده است. در واقع هر کدام از اجزاء سیستم، وظیفه‌ی منحصر به فرد و مشخصی را که همگی زیر مجموعه‌ی آن عملکرد اصلی و در راستای تکمیل آن هستند انجام می‌دهند.

مقدمه‌‌ای بر طراحی و توسعه‌ی سیستم‌های نهفته

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

سیستم نهفته چیست؟

 سیستم نهفته به یک مدار الکترونیکی گفته می‌شود که در دل یک مجموعه‌ی بزرگتر قرار دارد و می‌تواند به صورتی الکتریکی یا مکانیکی و یا هر دو در آن مجموعه ایفای نقش کند. در حقیقت سیستم نهفته؛ سیستمی ‌است که در بطن سیستمی ‌دیگر قرار گرفته باشد.

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

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

مطلب پیشنهادی:  پروژه فرکانس متر با CMOS و TTL

آیا سیستم‌های نهفته چیزی متفاوت با کامپیوترها هستند؟

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

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

ویژگی‌‌های یک سیستم نهفته

مهم‌ترین ویژگی‌های یک سیستم نهفته عبارتند از:

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

مقدمه‌‌ای بر طراحی و توسعه‌ی سیستم‌های نهفته

 نمایی نزدیک از یک کامپیوتر تک-بردی رزبری‌پای

به چه کسی طراح سیستم‌های نهفته بگوییم؟

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

هرچند که زمینه‌ی تخصصی طراحی سیستم‌های نهفته (embedded system design) نیز به صورت آکادمیک وجود دارد و در ذیل گروه‌های مهندسی سخت‌افزار و نرم‌افزار قرار می‌گیرد.

اجزاء سخت‌ افزاری سیستم نهفته

از جمله اجزاء سخت‌افزاری که ممکن است در یک سیستم نهفته وجود داشته ‌باشند موارد زیر هستند. (و البته موارد دیگری به جز اینها هم می‌توانند وجود داشته باشند)

  • منبع تغذیه: مقدار توان مورد نیاز برای سیستم‌های نهفته بستگی به کاربردی دارد که برای آنها تعریف شده است. هرچند که معمولا سیستم‌های نهفته از لحاظ توان کم‌ مصرف هستند و مقدار مورد نیازشان چندان بزرگ نخواهد بود. مثلا در مواردی که بسیار کم ‌مصرف هستند این مقدار 8VDC است و به وسیله‌ی باتری یا آداپتورهای دیواری قابل تامین است.
  • میکروپرسسور/ میکروکنترلر: پروسسوری که در درون یک سیستم نهفته وجود دارد، مرکز و مقر اصلی انجام و اجرای محاسبات و دستورالعمل‌ها می‌باشد. براساس نیاز پردازشی آن سیستم، میکروپروسسورهای مورد استفاده می‌توانند از نوع معماری ۸ بیتی، ۱۶ بیتی و یا ۳۲ بیتی باشند.
  • System memory: واحد‌هایی که به منظور ذخیره‌سازی داده در سیستم‌های نهفته استفاده می‌شوند مواردی مانند ROM ،RAM و EEPROM هستند. از ROM برای نگه‌داری سورس کد پروژه که اجرای آن مد نظر است استفاده می‌شود و از RAM برای نگه‌داری داده‌های موقتی که در طول پروسه تولید می‌شوند. EEPROM نیز یک حافظه‌ی منحصر به فرد و غیرفرار در سیستم است که از آن برای نگه‌داری داده‌های با احتمال پاک شدن یا برنامه‌ریزی مجدد استفاده می‌شود. اگر علاقمند بودید مقاله انواع حافظه می‌تواند برای شما مفید باشد.
  • ست‌آپی برای ورودی‌ها و خروجی‌های سیستم: گفتیم که ورودی/ خروجی‌های یک سیستم نهفته می‌تواند از طریق پورت و یا از طریق واحد‌های سخت‌افزاری دیگری مانند سنسورها تامین و مبادله شوند. بنابراین بدیهی‌ترین کاربردی که ست‌آپ IO‌ها دارد عینی ساختن هدف تبادل داده و ارتباط برقرار کردن با سیستم است.
  • یک مدار ASIC: این مدارها (application-specific integrated circuit) کارکردها و ویژگی‌های مخصوصی را متناظر با کاربردهایی به خصوص برای ما فراهم می‌کنند. مثلا می‌توانیم یک ASIC برای تشخیص گاز، دما و یا صدا داشته باشیم. این مدارها معمولا منبع تغذیه و پردازنده‌های جداگانه دارند و یا نمایشگرهایی که حتی می‌تواند از سایر اجزای سیستم نهفته جدا باشد.
مطلب پیشنهادی:  معرفی Tinker Board شرکت ASUS (مشابه رزبری پای)

مقدمه‌‌ای بر طراحی و توسعه‌ی سیستم‌های نهفته

تصویری از یک  بورد آردوینو

 اجزاء نرم‌افزاری سیستم نهفته

از جمله اجزاء نرم‌‌افزاری که ممکن است در یک سیستم نهفته وجود داشته ‌باشند موارد زیر هستند. (و البته موارد دیگری به جز اینها هم می‌توانند وجود داشته باشند)

  • text editor: نرم‌افزاری برای نوشتن سورس کد‌های سیستم نهفته. در این کدها به سیستم توضیح می‌دهیم که برای رسیدن به هدف نهایی خود چه کارهایی را و به چه ترتیبی انجام دهد. معمولا این کدها را با زبان‌های سطح پایینی مانند C یا ++C می‌نویسند.
  • کامپایلر یا اسمبلر: این نرم‌افزار سورس کد را از text editor گرفته و آن را به زبان قابل فهم برای ماشین ترجمه می‌کند.
  • Linker‌: برنامه‌هایی که کدهای نوشته شده در فایل‌ها مختلف را گرفته و برای اجرا در یک برنامه‌ی واحد با هم ادغام می‌کنند.
  • software library: مجموعه‌ای از منابعی مانند کانفیگوریشن داده‌ها، اسکریپت‌ها، کدهای از پیش نوشته شده، مستند‌ات و … که توسط نرم‌افزارهای کامپایلر، لینکر و … مورد استفاده قرار می‌گیرند.
  • دیباگر: ابزاری که بررسی می‌کند آیا سورس کد‌ها خطا یا باگی دارند یا خیر. به این صورت که خط به خط کد را بررسی می‌کند و نقاطی را که خطای سینتکسی، run time error، و مواردی از این قبیل دارند را مشخص می‌کند. دیباگ کردن، یکی از مراحل مهم و کلیدی در تعیین کیفیت عملکرد سیستم‌های نهفته محسوب می‌شود.
مطلب پیشنهادی:  شروع به کار با بورد آردوینو

اگر قبلا زبان برنامه‌ نویسی خاصی را یاد نگرفته‌اید توصیه میکنیم از زبان C یا زبان ++C شروع کنید. و اگر دنبال زبان راحت‌تری هستین آموزش‌های زبان پایتون را مطالعه کنید.

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

منبع: ترجمه از سایت electronicspoint.com

منبع: عکس شاخص از سایت educba.com

مطالعه بیشتر

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

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

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

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

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

یک دیدگاه

  1. سلام و سپاس از مطلبتون