معرفی سیستم تعبیه شده یا Embedded System :
سیستم های تعبیه شده یا embedded system ترکیبی از سخت افزار و نرم افزار رایانه ای است.
این سیستم ها را با نام سیستم های نهفته ( سامانه نهفته ) نیز می شناسند.
سیستم های تعبیه شده با قابلیت ثابت یا قابل برنامه ریزی، برای یک کارکرد خاص یا عملکردهای درون یک سیستم بزرگتر طراحی شده اند. برای مقایسه ویژگی های سامانه های نهفته با سیستم های معمولی با کاربرد های متداول، می توان به مصرف توان کمتر، اندازه کوچک تر، بازه عملیاتی انعطاف پذیر و هزینه کمتر به ازای هر واحد اشاره کرد. اما این ویژگی ها به قیمت منابع پردازشی محدود به دست می آید. این امر باعث می شود تا برنامه ریزی و تعامل با این سامانه ها دشوار باشد. با این وجود، با ایجاد مکانیزم های هوش مصنوعی بر روی سخت افزار، بهره بردن از سنسور های موجود و وجود یک شبکه از سامانه های نهفته، می توان منابع موجود در سطوح واحد و شبکه را به صورت بهینه مدیریت کرد.
همچنین قابلیت های جدیدی را که بسیار فراتر از قابلیت های موجود هستند، ایجاد کرد.
به عنوان مثال، می توان روش های هوشمندی طراحی کرد که بتوانند مصرف توان سامانه های نهفته را مدیریت کنند. دستگاه های صنعتی ، دستگاه های کشاورزی و صنایع فرآیندی ، اتومبیل و تجهیزات پزشکی، نمونه هایی از مکان های ممکن برای استفاده از سیستم های تعبیه شده هستند.
سیستم های تعبیه شده، سیستم های محاسباتی هستند.
رابط های کاربری سیستم های تعبیه شده:
این سیستم ها از رابط های کاربری متغیری(UI) برخوردار هستند.
بعضی از این سامانه ها هیچگونه رابط کاربری ندارند و تنها به انجام یک وظیفه مشخص اختصاص داده شده اند. دسته ای دیگر دارای رابط های کاربری تصویری پیچیده ای هستند که بی شباهت به کامپیوتر های مدرن رومیزی و سیستم عامل آن ها نیست. سامانه های تعبیه شده ساده از دکمه ها، چراغ های LED، LCD های گرافیکی یا کاراکتری (برای مثال HD44780 LCD) و منویی ساده استفاده می کنند. رابط کاربری می تواند شامل دکمه ها ، LED ها ، سنجشگر صفحه لمسی و موارد دیگر باشد. برخی سیستم های تعبیه شده از رابط های کاربری از راه دور نیز استفاده می کنند. برخی از سیستم ها می توانند رابط کاربری را از راه دور و با استفاده از یک درگاه سریال (مانند RS-232، USB، I²C و …) و یا اتصال شبکه (مانند Ethernet) ارائه دهند.
این حالت چندین ویژگی در بر دارد:
- این کار باعث گسترش توانایی های سامانه نهفته می گردد.
- از هزینه های یک صفحه نمایش اختصاصی اجتناب می شود.
- BSP ( بسته پشتیبانی از برد) را ساده تر می کند.
- امکان ساخت رابط های کاربری غنی تر و بهتری را بر روی کامپیوتر های شخصی فراهم می کند.
تاریخچه سیستم های تعبیه شده:
سیستم های تعبیه شده به دهه 1960 باز می گردد.
هارل استار درپ در سال 1961 یک مدار یکپارچه (IC) را برای کاهش اندازه و وزن رایانه راهنمایی آپولو (Apollo Guidance Computer یا AGC) ، سیستم دیجیتال نصب شده در ماژول فرمان آپولو (Apollo Command Module ) و Apollo Lunar اModule ایجاد کرد . اولین رایانه ای که از IC استفاده کرد ، به فضانوردان کمک کرد تا داده های پرواز را در زمان واقعی جمع کنند.
در سال 1965 ، Autonetics که اکنون جزئی از Boeing است ، D-17B را تولید کرد. D-17B رایانه ای است که ،در سیستم هدایت موشکی Minuteman I مورد استفاده قرار گرفت. این رایانه به طور گسترده به عنوان اولین سیستم تعبیه شده با تولید انبوه شناخته می شود. وقتی Minuteman II در سال 1966 به مرحله تولید رسید ، D-17B با سیستم هدایت موشکی NS-17 جایگزین شد . NS-17 به دلیل استفاده زیاد از مدارهای مجتمع مشهور است. در سال 1968 ، اولین سیستم تعبیه شده برای یک وسیله نقلیه منتشر شد. فولکس واگن 1600 از یک ریز پردازنده برای کنترل سیستم تزریق سوخت الکترونیکی خود، استفاده کرد. در اواخر دهه 1960 و اوایل دهه 1970 ، قیمت مدارهای مجتمع کاهش یافت؛ در نتیجه میزان مصرف آن ها افزایش پیدا کرد.
اولین میکروکنترلر توسط تگزاس اینسترومنت در سال 1971 ساخته شد.
سری TMS 1000 ، که در سال 1974 از نظر تجاری به بازار عرضه شد ، حاوی یک پردازنده 4 بیتی ، حافظه فقط خواندنی (ROM) و حافظه دسترسی تصادفی (RAM) بودکه در سفارش های فله ای حدود 2 دلار هزینه داشت.
ظهور ریز پردازنده ها و سیستم عامل های مورد نیاز سیستم های تعبیه شده :
در سال 1971 ، اینتل آنچه را که به عنوان اولین پردازنده تجاری در دسترس شناخته می شود ، منتشر کرد ، 4004. ریزپردازنده 4 بیتی برای استفاده در ماشین حساب ها و دستگاه های الکترونیک های کوچک طراحی شد. البته به حافظه پایدار و تراشه های پشتیبانی نیاز داشت. 8 بیتی Intel 8008 که در سال 1972 منتشر شد دارای 16 کیلوبایت حافظه بود. اینتل 8080 در سال 1974 با 64 کیلوبایت حافظه ساخته شد. جانشین 8080 ، سری x86 ، در سال 1978 منتشر شد و هنوز هم در حال استفاده است.
در سال 1987 ، اولین سیستم عامل جاسازی شده ، VxWorks در زمان واقعی ، توسط ویند ریور(Wind River) منتشر شد.
به دنبال آن ( Microsoft’s Windows Embedded CE ) در سال 1996 روانه بازار شد.
در اواخر دهه 1990 ، اولین محصولات تعبیه شده لینوکس ظاهر شدند.
امروزه ، تقریباً در تمام دستگاه های تعبیه شده از لینوکس استفاده می شود.
سخت افزار سیستم های تعبیه شده (میکروکنترلر مبتنی بر ریز پردازنده)
سخت افزار سیستم جاسازی شده می تواند مبتنی بر ریزپردازنده یا میکروکنترلر باشد.
در هر صورت ، یک مدار یکپارچه در قلب محصولی است که، به طور کلی برای انجام محاسبات و عملیات در زمان واقعی طراحی شده است. پردازنده های نهفته را می توان در دو دسته کلی طبقه بندی کرد. ریزپردازنده های معمولی (μP) ابرای حافظه و بخش های جانبی از مدار های مجتمع جدا استفاده می کنند. ریزپردازنده ها از نظر بصری از میکروکنترلرها قابل تشخیص نیستند. ریزپردازنده فقط یک واحد پردازش مرکزی (CPU) را پیاده سازی می کند و بنابراین نیاز به اضافه کردن سایر مؤلفه ها مانند تراشه های حافظه دارد. سامانه های تعبیه شده از معماری های پردازنده متفاوت و مختلفی استفاده می شود. زیرا در این حالت، نرم افزار به طور سفارشی برای یک کاربرد مشخص طراحی می شود و محصولی به شمار نمی رود که خود کاربر بتواند آن را نصب کند.
در پردازنده ها از هر دو معماری فون نویمان و هاروارد استفاده می شود.
پردازنده های RISC (کامپیوتر های کم دستور) و غیر RISC نیز در این سامانه ها دیده شده اند.
از ریز پردازنده های با کاربرد عمومی نیز در سامانه های نهفته استفاده می شود اما به طور کلی، این ریزپردازنده ها نسبت به میکروکنترلر ها به مدار های پشتیبان بیشتری احتیاج دارند.
میکروکنترلر ها :
میکروکنترلر ها به عنوان سیستم های خود ساخته طراحی می شوند.
میکروکنترلر ها نه تنها یک CPU بلکه حافظه و لوازم جانبی مانند حافظه فلش ، حافظه رم یا پورت های ارتباطی سریال را نیز شامل می شوند. در میکروکنترلر ها (μC) بخش های جانبی بر روی خود چیپ قرار گرفته اند و در نتیجه میزان مصرف توان و اندازه و هزینه آن ها کمتر است. از آنجا که میکروکنترلر ها تمایل به اجرای سیستم های کامل (در صورت کم بودن توان رایانه) دارند ، آنها اغلب در کارهای پیچیده تر مورد استفاده قرار می گیرند.
میکروکنترلر های متعددی برای استفاده در سیستم های تعبیه شده ساخته شده اند.
به عنوان مثال ، میکروکنترلر ها در عملیات وسایل نقلیه ، روبات ها ، وسایل پزشکی و لوازم خانگی استفاده می شوند.
بالاترین قابلیت میکروکنترلر ، اصطلاحی است به نام سیستم روی یک تراشه (SoC).
سیستم روی یک تراشه (SoC) یک مدار مجتمع (همچنین به عنوان “تراشه” شناخته می شود) است، که تمام اجزای یک رایانه یا یک سیستم الکترونیکی را ادغام می کند. این مؤلفه ها معمولاً (اما نه همیشه) شامل یک واحد پردازش مرکزی (CPU) ، حافظه ، پورت های ورودی / خروجی و ذخیره سازی ثانویه هستند.
همه این مولفه ها در یک بستر یا میکروچیپ ، اندازه یک سکه جمع شده اند.
نرم افزار سیستم تعبیه شده:
میکروکنترلر صنعتی معمولی در مقایسه با رایانه رومیزی شرکتی معمولی کم نظیر است.
به طور کلی میکروکنترلر صنعتی معمولی به یک برنامه ساده تر و کم حافظه وابسته است.
ساده ترین دستگاه ها روی فلز لخت ( bare metal ) کار می کنند. دستگاه ها به طور مستقیم با استفاده از زبان کد دستگاه پردازنده تراشه، برنامه ریزی می شوند. فلز لخت (bare metal) یک سیستم رایانه ای یا شبکه ای است که در آن یک ماشین مجازی به جای سیستم عامل میزبان (OS) مستقیماً بر روی سخت افزار نصب می شود.
اصطلاح “فلز برهنه” به یک هارد دیسک اشاره دارد.
این هارد دیسک یک وسیله معمولی است تا سیستم عامل کامپیوتر روی آن نصب شود.
در سطوح بالاتر از قابلیت تراشه ها ، مانند نمونه هایی که در SoC وجود دارد ، طراحان به طور فزاینده ای تصمیم گرفته اند که سیستم ها به اندازه کافی سریع باشند. آن ها می توانند در هنگام اجرای واکنش تغییرات جزیی را تحمل و به صورت آن تایم واکنش نشان دهند. برای این کار از نسخه های اصلاح شده ی لینوکس استفاده کردند. در این نسخه ها همه ی ویژگی های غیر ضرور حذف شده بودند. استفاده از این نسخه از لینوکس زمانی توسعه پیدا کرد که سایر سیستم عامل ها از دور خارج شدند.سیستم عامل هایی نظیر (Embedded Java و Windows IoT (formerly Windows Embedded. به طور کلی ، برای ذخیره برنامه ها و سیستم عامل ها در دستگاه های تعبیه شده ، از فلش یا حافظه فلش قابل بازنویسی استفاده می شود.
Embedded firmware سیستم عامل های تعبیه شده:
دستورالعمل های نرم افزاری برای سامانه های نهفته به نام فریمور (Firmware) شناخته می شوند .
فریمور ها در حافظه های Read-Only یا حافظه فلش چیپ ها ذخیره می شوند. این سامانه ها با منابع سخت افزاری محدودی کار می کنند یعنی حافظه کمی دارند، صفحه کلید و صفحه نمایش آن ها نیز بسیار کوچک است یا اصلا وجود ندارد. سیستم عامل تعبیه شده یک تراشه فلش مموری است. در این تراشه نرم افزارهای تخصصی مورد نیاز برای کنترل فانکشن های سیستم های تعبیه شده ذخیره و اجرا می شود. همانند ROM عمل می کند. اما برای سازگاری بهتر با شرایط و سازگاری با با تجهیزات اضافی راحت تر به روز رسانی می شود. سیستم عامل جاسازی شده برای کنترل عملکردهای مختلف دستگاه و سیستم مورد استفاده قرار می گیرد . به عنوان مثال ، به دستگاه می گوید که چگونه با دستگاه های دیگر ارتباط برقرار کند ، عملکردهای خاصی را انجام دهد و عملکرد ورودی و خروجی را فراهم کند.
مشخص کردن تفاوت بین Embedded firmware و embedded software تا حدودی مبهم است.
embedded software اغلب به تنها کدی که روی یک قطعه سخت افزاری اجرا می شود ، اشاره دارد. در حالی که سیستم عامل می تواند به تراشه ای اشاره کند که سیستم ورودی / خروجی اساسی دستگاه را در خود جای داده است (BIOS). همچنین به رابط نرم افزاری توسعه یافته یکپارچه (UEFI) ، که نرم افزار و سیستم عامل یک سیستم را به هم وصل می کند، نیز اشاره دارد.
اشکال زدایی سیستم های تعبیه شده:
مشابه سایر نرم افزار ها، طراحان سیستم های تعبیه شده نیز از کامپایلر ها، همگذار ها (اسمبلر ها) و اشکال یاب ها ( دیباگر ها) استفاده می کنند. منطقه ای که سیستم های جاسازی شده با سیستم عامل ها و محیط های توسعه منطقه دیگر ارتباط برقرار می کنند و رایانه های بزرگ در زمینه اشکال زدایی قرار دارند. در حالی که برنامه نویسانی که با محیط رایانه رومیزی کار می کنند دارای سیستم هایی هستند که می توانند کد در حال توسعه را اجرا و به کمک برنامه های اشکال زدایی جداگانه که بر عملکرد کد توسعه نظارت می کند،کار اشکال زدایی را انجام دهند ،برنامه نویسان سیستم های تعبیه شده از چنین امکانی برخوردار نیستند.
برخی از زبانهای برنامه نویسی روی میکروکنترلرها با راندمان کافی اجرا می شوند که اشکال زدایی تعاملی ابتدایی به طور مستقیم روی تراشه موجود است. علاوه بر این ، پردازنده ها اغلب دارای اشکال زدایی CPU هستند که می تواند از طریق JTAG یا درگاه اشکال زدایی مشابه کنترل شود – و به این ترتیب ، اجرای برنامه کنترل شود. با این حال ، در بسیاری از موارد، برنامه نویسان سیستم های تعبیه شده به ابزاری نیاز دارند که یک سیستم اشکال زدایی جداگانه را از طریق یک سریال یا درگاه دیگر به سیستم مورد نظر متصل کنند.
عملکرد سیستم های اشکال زدایی جداگانه:
در این سناریو ، برنامه نویس می تواند کد منبع را روی صفحه رایانه شخصی معمولی مشاهده کند.
روش اشکال زدایی جداگانه مورد استفاده اجرای نرم افزار بر روی رایانه شخصی است. در این روش رفتار تراشه فیزیکی را در نرم افزار شبیه سازی می کند . مدل سازی در سطح سیستم و ابزار های شبیه سازی به طراحان کمک می کنند تا بتوانند مدل های شبیه سازی شده ای را از یک سیستم با اجزای سخت افزاری آن مانند پردازنده ها، حافظه ها، DMA ها، رابط ها ، باس ها و همچنین رفتار نرم افزاری آن در غالب یک نمودار حالت و یا نمودار جریان ارائه دهند.
این کار با کمک بلوک های کتابخانه ای قابل تنظیم صورت می گیرد.
علت استفاده از شبیه سازی، انتخاب اجزای مناسب با ایجاد مصالحه بین توان و عملکرد، انجام تحلیل اطمینان پذیری و تحلیل تنگنا است. گزارش هایی که به طراح کمک می کنند تا در مورد معماری سیستم تصمیم بگیرد شامل زمان تاخیر نرم افزار، توان عملیاتی دستگاه، نرخ کارکرد دستگاه، توان مصرفی کل سیستم و همچنین توان مصرفی در سطح دستگاه هستند. بنابراین امکان اشکال زدایی در عملکرد نرم افزار وجود دارد به گونه ای که گویی در یک تراشه فیزیکی واقعی اجرا شده است. به طور کلی ، سیستم های تعبیه شده از لحاظ اشکال زدایی مورد توجه بسیاری قرار گرفته اند. زیرا تعداد زیادی دستگاه با استفاده از کنترل های تعبیه شده برای استفاده در موقعیت هایی طراحی شده اند. در این دستگاه ها ایمنی و قابلیت اطمینان در اولویت های اصلی قرار دارند.
روش های مختلف اشکار زدایی سیستم های تعبیه شده:
روش ها را می توان به طور تقریبی از پیچیده ترین به ساده ترین و به صورت زیر طبقه بندی کرد:
- اشکال زدایی تعاملی مقیم:
با استفاده از یک پوسته ساده که توسط سیستم عامل سامانه نهفته ارائه می شود.
- اشکال یاب درون مداری (ICD):
یک دستگاه سخت افزاری است که با استفاده از رابط های JTAG یا Nexus به ریز پردازنده متصل می شود.
این کار باعث می شود تا بتوان عملیات ریزپردازنده را به طور خارجی کنترل کرد.
- یک شبیه ساز اشکال یاب داخل مداری (ICE):
یک معادل شبیه سازی شده را جایگزین ریزپردازنده می کند .
کنترلی کامل بر روی تمام جنبه های ریزپردازنده خواهد داشت.
- یک شبیه ساز کامل:
تمام جنبه های سخت افزار را شبیه سازی می کند.
امکان کنترل و اصلاح همه آن ها را فراهم می کند.
این کار باعث می شود تا بتوان اشکال زدایی را از طریق یک کامپیوتر شخصی معمولی نیز انجام داد.
نقاط ضعف این روش، هزینه ی بالا و سرعت پایین عملیات است که در بعضی موارد می تواند تا 100 برابر کند تر از سیستم نهایی باشد.
- برای طراحی سیستم های بر روی تراشه (SoC):
رویکرد متداول، بررسی و اشکال زدایی طرح بر روی یک برد اولیه FPGA است.
از ابزار هایی مانند Certus برای وارد کردن کاوشگر هایی FPGA RTL استفاده می شود.
این کاوشگر ها امکان مشاهده سیگنال ها را فراهم می کنند.
از این کار برای اشکال زدایی بر هم کنش های سخت افزار، فرمور و نرم افزار، بر روی چند FPGA با قابلیت هایی مشابه با تحلیل گر منطقی استفاده می شود.
اینترنت اشیا بر پایه سیستم های جاسازی شده ساخته می شود.
برخی از سیستم های تعبیه شده می توانند نسبتاً ساده باشند.
در کنار آن ها تعداد فزاینده ای نیز تصمیم گیری انسانی را تحمل می کنند. حتی توانایی هایی را فراتر از آنچه انسان می تواند فراهم کند ارائه می دهند. به عنوان مثال ، برخی از سیستم های حمل و نقل هوایی انواع جدیدی از ویژگی های عملیاتی را ارایه می دهند. از جمله آنهایی که در هواپیماهای بدون سرنشین مورد استفاده قرار می گیرند .
آن ها می توانند داده های حسگر را یکپارچه کنند و بر اساس اطلاعات موجود سریعتر از یک انسان عمل کنند.