در اطراف ما، جهان نامرئی و هوشمندی از رایانهها که اکثر ما هرگز آنها را به صورت فیزیکی نمیبینیم یا مستقیماً با آنها تعامل نداریم وجود دارد. این جهان، قلمرو سیستمهای توکار (Embedded Systems) است و در قلب بسیاری از پیشرفتهترین و پیچیدهترین این سیستمها، یک قدرت مرکزی نهفته است که از لینوکس توکار (Embedded Linux) قدرت گرفته است.
لینوکس توکار، اساساً یک سیستم عامل لینوکس است که برای کار در دستگاههای الکترونیکی خاص ساخته شده و برخلاف رایانههای همهمنظوره که کاربردهای عمومی دارند (مانند لپتاپ یا سرورها)، فقط برای یک یا چند هدف مشخص مهندسی و بهینهسازی شده است. اما این تعریف ساده، گویای عمق، پیچیدگی و اهمیت این فناوری نیست. برای درک واقعی آن، باید به ماهیت سیستمهای توکار و سپس انقلابی که لینوکس در این عرصه به پا کرد، بپردازیم.
یک سیستم توکار معمولی (مانند یک ترموستات ساده یا کنترل از راه دور) معمولاً بر پایه یک ریزکنترلگر (Microcontroller) ساخته میشود. این ریزکنترلگرها قطعاتی قدرتمند اما محدود هستند: پردازنده (CPU)، حافظه (RAM)، حافظهٔ برنامه (Flash) و واحدهای ورودی/خروجی (I/O) همگی روی یک تراشه جمع شدهاند. برنامه این سیستمها، که اغلب “فریمور” (Firmware) نامیده میشود، معمولاً یک حلقه بیپایان (Super Loop) ساده یا از یک سیستم عامل بلادرنگ (RTOS) استفاده میکند.
این معماری برای کارهایی با منابع سختافزاری بسیار محدود (حافظه و قدرت پردازش) و وظایف کاملاً مشخص و ثابت، عالی هستند اما با پیشرفت فناوری، انتظارات از دستگاههای الکترونیکی نیز متحول شد. دیگر یک صفحه نمایش ساده و چند دکمه کافی نبود. کاربران به رابطهای کاربری گرافیکی (GUI) پیشرفته، قابلیت اتصال به اینترنت (اتصال شبکه)، قابلیت بهروزرسانی نرمافزار، اجرای برنامههای پیچیده و تعامل با سایر دستگاهها عادت کردند. اینجاست که سیستمهای توکار معمولی به محدودیتهای خود رسیدند و نیاز به یک سیستم عامل کامل و قدرتمند احساس شد.
لینوکس با قابلیتهای بالای خود بهترین گزینه برای برآورد کردن نیازهای کاربر بود اما آنچه این گزینه را برای مهندسان جذاب میکرد مزایای زیر بودند.
قدرت بالا و وجود هرآنچه نیاز است: لینوکس یک سیستم عامل کامل با مدیریت حافظه پیشرفته، زمانبندی چندوظیفگی واقعی، پشته شبکه ( Protocol stack) قوی، درایورهای سختافزاری گسترده و پشتیبانی از هزاران کتابخانه و برنامه کاربردی است.
انعطافپذیری و سفارشیسازی: هسته لینوکس (Linux Kernel) و فضای کاربری (User Space) آن ماژولار و قابل تنظیم هستند به طوری که میتوان تنها مؤلفههای مورد نیاز برای یک دستگاه خاص را انتخاب، کامپایل و مونتاژ کرد.
متنباز (Open Source) و جامعه عظیم: مدل متنباز بودن لینوکس به این معنی است که هیچ هزینهٔ لیسانسی برای استفاده از آن وجود ندارد. همچنین، یک جامعه جهانی از توسعهدهندگان به طور مستمر آن را بهبود میبخشند، امنیتش را افزایش میدهند و برای سختافزارهای جدید بهینه میکنند.
پشتیبانی سختافزاری بینظیر: لینوکس از معماریهای پردازنده مختلف (ARM, MIPS, x86, RISC-V و …) و هزاران قطعه جانبی (Peripheral) پشتیبانی میکند.
ثبات و قابلیت اطمینان: لینوکس به دلیل پایداری و عملکرد قابل اعتمادش در محیطهای بحرانی (Critical section) شناخته شده است.
یک سیستم لینوکس توکار معمولاً از چهار لایه اصلی تشکیل شده است:
1. لایه سختافزار (Hardware Layer): پردازنده (SoC)، حافظه، فلش، و تمامی قطعات جانبی (مانند درایورهای نمایشگر، وایفای، بلوتوث، سنسورها و …) در این لایه قرار دارند.
2. لایه هسته (Bootloader & Kernel Layer):
بوتلودر (Bootloader): اولین نرمافزاری که پس از روشن شدن دستگاه اجرا میشود. وظیفه آن مقداردهی اولیه سختافزار و بارگذاری هسته لینوکس در حافظه است (مانند U-Boot).
هسته لینوکس (Linux Kernel): قلب سیستم. مدیریت سختافزار، حافظه، پردازشها، شبکه و امنیت را بر عهده دارد. برای سیستم توکار، هسته به دقت پیکربندی و کامپایل میشود تا تنها شامل درایورها و ویژگیهای مورد نیاز باشد.
3. لایه فضای کاربر (User Space Layer):
کتابخانههای سیستمی (System Libraries): مانند کتابخانه C (glibc, musl و …) که رابط بین برنامههای کاربردی و هسته را فراهم میکنند.
ابزارهای سیستمی (System Tools): مجموعهای از برنامههای ضروری برای مدیریت سیستم (اغلب از پروژه BusyBox که یک نسخه فشرده از ابزارهای یونیکس است).
چارچوبها و میدلورها (Frameworks & Middleware): نرمافزارهایی که عملکردهای پیچیده را ارائه میدهند، مانند چارچوبهای رابط کاربری گرافیکی (Qt, GTK+)، پایگاههای داده سبک (SQLite) یا پروتکلهای ارتباطی (DBus).
4.لایه برنامه کاربردی (Application Layer): این لایه شامل نرمافزار اختصاصی و خاصی است که عملکرد اصلی دستگاه را تعریف میکند. برای مثال، برنامه کنترل یک دوربین امنیتی، رابط کاربری یک سیستم اطلاعات-سرگرمی خودرو، یا منطق کنترل یک دستگاه صنعتی.
باتوجه به این پیجیدگی ابزارهایی مانند Buildroot یا Yocto Project برای مدیریت این پیچیدگیها ایجاد شدهاند که به توسعهدهندگان اجازه میدهند با تعریف پیکربندی، به راحتی یک سیستم عامل لینوکس کاملاً سفارشی، یکپارچه و بهینهشده برای پلتفرم سختافزاری خاص خود بسازند.
کاربردهای لینوکس توکار تقریباً در همه صنایع نفوذ کرده و “هوشمندی” را به دستگاههای که هر روز از آنها استفاده میکنیم تزریق کرده است.
سیستم اطلاعات-سرگرمی (Infotainment Systems): این صفحههای لمسی بزرگ در داشبورد خودروها که نقشهخوانی، پخش موسیقی، تماس تلفنی و کنترل آب و هوا را انجام میدهند، اغلب توسط لینوکس توکار قدرت میگیرند (مانند سیستم AGL – Automotive Grade Linux).
دستگاههای تشخیصی (Diagnostic Tools): اغلب دستگاه های مدرنی که برای عیبیابی الکترونیکی خودرو استفاده میشوند از لینوکس استفاده میکنند.
این یکی از داغترین حوزههای امروزی است. لینوکس توکار بستری برای اجرای مدلهای هوش مصنوعی بر روی دستگاههای لبه (Edge) مانند دوربینهای نظارتی هوشمند، رباتها و دستیاران صوتی فراهم میکند و امکان پردازش دادهها به صورت بلادرنگ و بدون اتکا به ابر را ایجاد مینماید.
اگرچه لینوکس توکار قدرتمند است، اما چالشهای خود را نیز دارد:
همانطور که تا اینجای مطلب متوجه شدید لینوکس توکار به یک ستون فقرات نامرئی برای دنیای مدرن تبدیل شده است. این فناوری، موتوری است که نوآوری در صنایع مختلف را با ارائه یک پلتفرم نرمافزاری قدرتمند، انعطافپذیر و مقرونبهصرفه ممکن ساخته است. از خانههای هوشمند و خودروهای خودران تا کارخانههای خودکار و شهرهای هوشمند، لینوکس توکار است که در پسزمینه در حال کار است و به دستگاهها “هوش” میبخشد. با گسترش بیشتر اینترنت اشیاء و هوش مصنوعی در لبه، نقش و نفوذ این سیستم عامل تنها در حال افزایش خواهد بود و آیندهای را شکل خواهد داد که در آن تقریباً هر وسیلهای به یک سیستم کامپیوتری متصل و هوشمند تبدیل شده است. اینکه چطور باید این ابزار قدرتمند استفاده کنیم موضوعی است که در ادامه به آن میپردازیم.
تصور کنید میخواهید یک دستگاه هوشمند جدید، مثلاً یک دستیار صوتی طراحی کنید. قلب این دستگاه یک پردازنده (SoC – System on Chip) است. اما SoC به تنهایی فقط یک تراشه کوچک است. برای زنده کردن آن به یک مدار کامل شامل حافظه (RAM و Flash)، منابع تغذیه، کریستال کلاک، درایورهای شبکه، درایورهای نمایشگر و صدها قطعه دیگر نیاز دارید.
طراحی این مدار از صفر، کاری پیچیده، پرهزینه و زمانبر که نیازمند تخصص بسیار بالایی در مهندسی سختافزارهای دیجیتال، آنالوگ و RF است و اینجاست که بردهای آماده به عنوان راهی برای آسان کردن مسیر توسعه محصول وارد بازار شدند. شرکتهای سازنده این بردها، تیمهای متخصصی دارند که بهترین روشهای طراحی (Best Practices) را برای هر SoC میدانند.
مسائلی مانند یکپارچگی سیگنال (Signal Integrity)، مدیریت توان (Power Integrity)، و طراحی لایههای PCB که برای عملکرد پایدار SoC حیاتی هستند، توسط آنها حل شده است. یکی از بزرگترین چالشها در لینوکس توکار، نوشتن و یکپارچهسازی درایورهای سختافزاری (Drivers) در هسته لینوکس است. بردهای آماده معروف، معمولاً همراه با یک BSP (Board Support Package) عرضه میشوند. BSP شامل یک نسخه از هسته لینوکس، درایورها، تنظیمات Device Tree و گاهی یک فایل سیستم ریشهای (Root Filesystem) است که برای همان برد خاص بهینه و تست شده است. این BSP نقطه شروع کاملاً مناسبی برای توسعه شماست. مهمتر از همه وقتی بر روی یک برد استاندارد و شناخته شده توسعه میدهید، مطمئن هستید که سختافزار به درستی کار میکند. بنابراین، اگر مشکلی پیش بیاید، میدانید که منشأ آن در نرمافزار یا پیکربندی شماست، نه یک اشکال سختافزاری اساسی.
بردهای آماده در چندین شکل و برای اهداف مختلف وجود دارند:
1. بردهای توسعه (Evaluation Boards / Developer Kits): هدف این بردها آموزش، نمونهسازی اولیه (Prototyping) و ارزیابی قابلیتهای یک SoC خاص است. این بردها معمولاً بزرگ هستند و همه پتانسیلهای SoC را در اختیار شما میگذارند. از مثالهای معروف میتوان به بردهای Raspberry Pi که شناختهشدهترین نمونه در این حوزه که یک جامعه عظیم پشتیبان دارد اشاره کرد.
2. بردهای سیستم روی ماژول System on Module (SOM) یا Computer on Module (COM): هدف این دسته از بردها استفاده در محصول نهایی برای کاهش پیچیدگی و تسریع فرآیند طراحی است. SOM قلب سختافزاری سیستم (پردازنده، حافظه، فلش، مبدلهای توان و clock) را در یک ماژول فشرده جمع میکند. شما یک برد پایه (Carrier Board یا Baseboard) سادهتر طراحی میکنید که تنها شامل کانکتورها، درگاهها و مدارات جانبی مورد نیاز محصولتان است (مانند درگاه اترنت، USB، خروجی صدا و …). سپس SOM را روی برد پایه خود نصب میکنید. از مزایای کلیدی SOM میتوان به این موارد اشاره کرد:
تسریع راهاندازی، تولید و ارتقا: قابلیت ارتقا طراحی برد پایه بسیار سادهتر و کمریسکتر از طراحی کل سیستم است و میتوانید بدون تغییر در طراحی برد پایه، SOM خود را به یک مدل قویتر ارتقا دهید.
کاهش هزینههای تأییدیههای regulatoy: از آنجایی بخش پیچیده سختافزار (SOM) از قبل تأییدیههای لازم (مانند FCC, CE) را گرفته است، فرآیند دریافت مجوز برای محصول نهایی شما سریعتر و ارزانتر خواهد بود.
3. بردهای سفارشی (Custom Boards): زمانی که طراحی شما محدودیتهای فیزیکی، هزینه یا عملکردی خاصی دارد که با بردهای آماده برطرف نمیشود. اینجا شرکت یا تیم توسعهدهنده، کل برد را از صفر و متناسب با نیاز دقیق محصول خود طراحی میکند. این راهحل، بیشترین کنترل و بهینهسازی را فراهم میکند اما پرریسکترین، پرهزینهترین و طولانیترین مسیر است. معمولاً شرکتهای بزرگ با تیمهای سختافزاری قوی این راه را انتخاب میکنند.
شرکتهای زیادی در این حوزه فعال هستند که هر کدام نقاط قوت و استراتژی پشتیبانی خاص خود را دارند و بیشترشان را میشناسید اما در اینجا قصد دارم شما را با شرکت ARMSOM آشنا کنم. این شرکت ماموریت خود را تجهیز جامعه متنباز با سختافزارهای عالی، فرمورهای قدرتمند و مستندات گسترده معرفی کرده و بردهایی مقرون به صرفه با درجه کیفی بالا عرضه میکند که برای هرکدام مستندات و آموزش کاملی منتشر کرده است. این شرکت در هر سه حوزه ای که معرفی شد فعال است و محصولات متنوعی به بازار عرضه کرده اما بردی که در این آموزش از آن استفاده میکنیم برد ARMSOM CM1 است که دارای پردازنده قدرتمند Rockchip با استاندارد صنعتی است.
مشخصات این برد به این شرح است:
Category | Specification | Category | Specification |
---|---|---|---|
SOC |
|
CPU |
|
GPU |
|
Memory |
|
Storage |
|
Video Output |
|
40-PIN & 44-PIN |
|
Buttons |
|
Power Supply |
|
OS Support |
|
Dimensions |
|
Operating Temperature |
|
همچنین این برد دارای یک برد راه انداز است که تصویر آن را در زیر مشاهده میکنید.
قابلیتهای این برد به شرح زیر است:
Category | Specification | Category |
Specification |
---|---|---|---|
40-PIN & 44-PIN Female Header |
|
40-PIN Header |
|
USB Interfaces |
|
Networking |
|
Audio |
|
12-PIN Header |
|
Power Supply |
|
OS Support |
|
Dimensions |
|
Operating Temperature |
|
همانطور که مشاهده میکنید این برد قابلیتهای زیادی دارد و دارای اکثر خروجی و ورودیهایی است که در پروژه های مختلف به آنها نیاز داریم. همچنین با پشتیبانی از استانداردهای صنعتی و قیمت مناسب این برد یکی از بهترین گزینه ها برای پروژه های صنعتی و حوزه پزشکی است. مهمتر از آن شرکت ARMSOM تمامی مستندات لازم را در اختیار طراح قرارداده تا بتواند به سادگی از این برد استفاده کند. بجز مواردی که ذکر شد شما میتوانید از بردهایی ماژولاری (HAT) که برای رسپری پای ساخته شده استفاده کنید که کار توسعه را ساده تر میکند. در پست بعد قصد دارم اولین مرحله از راه اندازی برد را باهم انجام دهیم.
وبسایت: http://Embedex.ir
همیشه درحال آموزش، عاشق الکترونیک و برنامه نویسی
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.