برنامه نویسی جاسازی شده بخش مهمی از نحوه کار دستگاه های اینترنت اشیا است. برای تسلط بر این سیستم های حیاتی در تولید، احتمالاً باید C/C++ را بیاموزید و تجربه الکترونیکی عملی کسب کنید.
برنامه نویسی جاسازی شده سابقه طولانی در ساختن دستگاه ها برای انجام آنچه مردم نیاز دارند دارد. با این حال، تا حد زیادی تحت الشعاع برنامه نویسی کاربردی قرار دارد. زمانی که برنامه نویسان برنامه از زبان های شی گرا نسبتاً سطح بالایی مانند C++ یا جاوا یا محیط های توسعه برنامه های گرافیکی مانند MATLAB استفاده می کردند، برنامه نویسان تعبیه شده فقط از C در حال حرکت بودند. آنها همیشه از برنامه نویسان برنامه بیشتر بودند.
امروزه، حتی علاقهمندان میتوانند با استفاده از یک زبان آسان برنامهای را توسعه دهند و آن را با جهان به اشتراک بگذارند، در حالی که برنامهنویسان تعبیهشده باید دانش عمیقی از سختافزار و سیستمافزار و نحوه نوشتن برنامههایی داشته باشند که بتوانند در محیطهای اغلب با منابع بسیار محدود اجرا شوند. با ظهور اینترنت اشیا (IoT)، تعادل در نهایت می تواند تغییر کند. اکنون که بسیاری از ترموستاتها، توسترها، ساعتها و لامپهای جدید مجهز به پردازنده و اتصال هستند، بازار به برنامهنویسهای تعبیهشده بیشتری برای برنامهریزی این دستگاهها و ابزارهای سادهتری نیاز دارد تا به این برنامهنویسان اجازه دهد بدون فرو رفتن در سختافزار سطح پایین، کد بنویسند.
Techopedia تعریفی از برنامهنویسی تعبیه شده ارائه میکند: «نوع خاصی از برنامهنویسی که از ایجاد دستگاههای روبهروی مصرفکننده یا تجاری پشتیبانی میکند که بر روی سیستمعاملهای سنتی مانند رایانههای لپتاپ و دستگاههای تلفن همراه در مقیاس کامل کار نمیکنند». ایده برنامه نویسی تعبیه شده بخشی از چیزی است که باعث تکامل لوازم و تجهیزات دیجیتال در بازارهای فناوری اطلاعات امروزی می شود.
به عبارت سادهتر، برنامهنویسی جاسازی شده طراحی و نوشتن برنامههایی برای «رایانههای» کوچک است که در دستگاههایی غیر از رایانههای شخصی، لپتاپها یا تلفنهای هوشمند سنتی تعبیه شدهاند. این چیزی است که میکروکنترلرها را قادر میسازد تا دستگاههایی که قبلاً «گنگ» بودند را بیدار کنند – به عنوان مثال. ترموستاتها، سیستمهای روشنایی، پارکومترها، و غیره – و به آنها توانایی «استدلال» در مورد محیط خود را میدهند.
برنامه نویسی جاسازی شده و اینترنت اشیا از دیدگاه مهندسی، اینترنت اشیا شبکه ای از دستگاه های تعبیه شده و کنترل شده توسط ریزپردازنده را توصیف می کند که در آن شبکه به طور مستقیم یا غیر مستقیم به وب متصل می شود.
اینترنت اشیا به زودی در همه جا خواهد بود. بنابراین، دستگاه های جاسازی شده نیز به زودی در همه جا حاضر می شوند.
در اینجا نگاهی گذرا به برخی از راه هایی که اینترنت اشیا در حال تغییر صنایع است، آورده شده است:
برخی می گویند که هر سیستم پیچیده ای در جهان را می توان به دو حوزه مفهومی تقلیل داد: نرم افزار و سخت افزار. یک سیستم تعبیه شده، کم و بیش، تقاطع آن حوزه ها را نشان می دهد: سخت افزار و نرم افزار.
یک برد توسعه تعبیه شده معمولی به پنج “ماژول” تقسیم می شود: پردازنده، حافظه، دستگاه های ورودی، دستگاه های خروجی و کنترل کننده های اتوبوس.
پردازنده های جاسازی شده را می توان به دو دسته تقسیم کرد: ریزپردازنده های معمولی که از مدارهای مجتمع مجزا برای حافظه و تجهیزات جانبی استفاده می کنند و میکروکنترلرهایی که دارای تجهیزات جانبی روی تراشه هستند که مصرف انرژی، اندازه و هزینه را کاهش می دهند. چند نمونه از این موارد عبارتند از:
حافظه برای ذخیره داده هایی که در دستگاه استفاده می شود استفاده می شود. برخی از انواع حافظه های مورد استفاده در سیستم های تعبیه شده عبارتند از: رم غیر فرار (حافظه دسترسی تصادفی)، رم فرار، DRAM (حافظه دسترسی تصادفی پویا) و غیره.
دستگاههای ورودی مانند سنسورها، سوئیچها، فوتودیود، کوپلرهای نوری و غیره، دادههای دنیای خارج را برای پردازش یا صادر کردن از دستگاه ضبط میکنند.
دستگاههای خروجی، از جمله نمایشگرهای LCD (نمایشگر کریستال مایع) یا LED (دیود ساطع نور)، نمایشگرهای هفت بخش، زنگها و رلهها، به رویدادهای ورودی از خارج از میکروکنترلر پاسخ میدهند.
باس کنترلر یک وسیله ارتباطی است که داده ها را بین اجزای داخل یک سیستم تعبیه شده انتقال می دهد. پرکاربردترین کنترلرهای باس عبارتند از گذرگاه های سریال (I2C، SPI، SMBus و غیره)، RS232، RS485 و گذرگاه سریال جهانی (USB).
کاوش در نرم افزارهای جاسازی شده نرم افزار تعبیه شده که گاهی به آن سیستم عامل نیز می گویند، برای درایورهای دستگاه، سیستم عامل و برنامه ها و همچنین برای مدیریت خطا و رفع اشکال نوشته شده است.
درایور دستگاه قطعه ای از کد تعبیه شده است که برای یک قطعه سخت افزاری خاص نوشته شده است.
سیستمهای تعبیهشده دارای طیف وسیعی از سیستمهای عامل هستند، از جمله RTOS (سیستمهای عامل بلادرنگ)، سیستمهای تعبیهشده موبایل، مستقل و سیستمهای تعبیهشده شبکه. اکثر نرم افزارهای تعبیه شده اکنون به دو زبان C و C++ نوشته می شوند. تفاوت زیادی بین C و C++ از نظر نحو وجود ندارد. با این حال، C++ دارای برخی ویژگیهای اضافی مانند امنیت افزایش یافته و نزدیکی به برنامههای کاربردی دنیای واقعی است، در حالی که C قابل اعتمادتر است و با تعامل مستقیم با سختافزار، عملکرد بهتری دارد.
بهترین راه برای شروع نوشتن نرم افزاری که مستقیماً بر اشیاء فیزیکی تأثیر می گذارد، کاوش در پلتفرم های تعبیه شده مانند آردوینو، رزبری پای یا ذرات است. برای ایجاد یک محصول بادوام باید مراحل زیر را انجام دهید:
اینجا جایی است که بسیاری متوقف می شوند زیرا یادگیری این زبان ها دشوار است. با این حال، اگر می خواهید نرم افزار تعبیه شده بنویسید، باید C/C++ (و شاید در نهایت Rust) را یاد بگیرید.
حداقل تا حدی که بفهمید قانون ولتاژ، جریان، توان، مقاومت و اهم چیست.
برنامه نویسان تعبیه شده با دنیای فیزیکی تعامل دارند، بنابراین مواردی مانند آهن لحیم کاری، چند متر دیجیتال (DMM) و یک آداپتور دیباگر/JTAG سخت افزاری (مانند آداپتور ST-Link یا OLMEX) یا یک تحلیلگر منطقی به شما کمک می کند.
برای اجرای برنامه خود، به یک میکروکنترلر برای اجرای واقعی آن نیاز دارید، کامپایلری که کد میکروکنترلر و سایر ابزارها را برای بارگذاری برنامه روی سخت افزار شما کامپایل می کند. نمونه ای از ترکیب میکروکنترلرها با زنجیره ابزار، میکروکنترلرهای STM32 هستند که توسط arm-gcc همراه با زنجیره ابزار openOCD پشتیبانی می شوند.
قبل از اینکه بنشینید و خط اول کد خود را بنویسید، باید مشخصات (کاربر نهایی) را بدانید.
تجزیه و تحلیل و انتخاب اجزای (نرم افزار و سخت افزار) مورد نیاز برای ساخت محصول.
طراحی همیشه حیاتی ترین مرحله هر چرخه توسعه است. ویژگی برنامه نویسی تعبیه شده این است که شما باید قطعات سخت افزاری و نرم افزاری را به صورت جداگانه توسعه دهید و سپس آنها را یکپارچه کنید.
نمونه اولیه یک نسخه نمونه است که برای آزمایش مفهوم ایجاد شده است که با توجه به مشخصات با استفاده از ابزار سخت افزاری و نرم افزاری انتخاب شده ایجاد شده است.
اکنون که یک نمونه اولیه دارید، میتوانید موارد آزمایشی را اجرا کنید تا از پتانسیل برنامه استفاده کنید.
پس از آزمایش برنامه، نتیجه در یک محیط واقعی بررسی میشود تا Proof Of Concept – تکنیکی که برای تأیید یک ایده استفاده میشود، محقق شود.
در صورت نیاز، باید آماده ارائه پشتیبانی و ارتقاء برنامه با ویژگی های جدید باشید.
مقالات پیشنهادی: