مقدمه
مقالهای که مطالعه میفرمایید، نظر یک توسعه دهنده سیستمهای نهفته در رابطه با اولین تجربه کاریش با پتالینوکس بعد از سالها کارها با یاکتو است. در این مقاله از پایگاه دانش هگزالینکس، مزایای استفاده از پتالینوکس برای توسعه یک سیستم عامل روی تراشههای SoC شرکت Xilinx تشریح شده است.
اگر آشنایی شما با دنیای لینوکس و به ویژه لینوکس نهفته محدود است و در ابتدای راه فراگیری قرار دارید، احتمالاً بارها با نامهای متفاوتی همچون یاکتو (Yocto) و پتالینوکس (PetaLinux) روبرو شدهاید. پروژه یاکتو و ابزارهای پتالینوکس، دو روش محبوب برای توسعه سیستم عامل نهفته روی تراشههای SoC شرکت Xilinx هستند. برای آشنایی با شیوههای مختلف توسعه سیستم عامل روی تراشههای Xilinx کافی است به صفحه اصلی لینوکس در ویکی این شرکت مراجعه کنید. در ابتدای این صفحه نام چهار روش متفاوت را مشاهده میکنید که هر کدام مزایا و معایب خودشان را دارند، این چهار روش عبارتند از:
- PetaLinux Tools
- Yocto Project
- Xilinx Open Source Linux
- Commercial Linux
ما در این مطلب در مورد این روشها و جزئیات آنها صحبت نمیکنیم و تنها یک مقایسه ساده بین دو روش یاکتو و پتالینوکس از زبان یک مهندس طراح با سابقه ارائه میدهیم. اما پیش از ورود به بحث اصلی بهتر است ابتدا یک تعریف از سیستمهای نهفته ارائه کنیم.
سیستم نهفته چیست؟
ویکی پدیا سیستم نهفته (embedded system) را چنین تعریف میکند: یک سیستم کامپیوتری با عملکرد ویژه در سیستمهای الکترونیکی یا مکانیکی بزرگتر، که اغلب با محدودیت توان پردازشی روبرو هستند.
محیط توسعه و برنامه نویسی سیستمهای نهفته معمولاً با محیط آزمایش و استفاده از آن تفاوت دارد. کار توسعه دهندگان سیستمهای نهفته، نیز تفاوتهای فراوانی با کار توسعه دهندگان وب و کامپبوترهای رومیزی دارد. به طور معمول، ساخت یک خروجی کامل، به معنای تولید یک ایمیج کامل نرم افزاری برای تراشه هدف است. این ایمیج اغلب شامل کرنل، درایور، کتابخانهها و اپلیکیشنهای نرم افزاری (و گاهاً بوت لودر) است.
یاکتو چیست؟
فارغ از اینکه تراشه هدف ساخت چه شرکتی است و چه ویژگیهایی دارد، هر مهندس طراحی معمولاً با توجه به نیاز و تجربهاش از بین چندین بستر توسعه موجود در دنیای منبع باز امروزی، یکی را به عنوان محیط توسعه یک سیستم نهفته مبتنی بر لینوکس انتخاب میکند. از بین این بسترها میتوان به مواردی همچون Buildroot ، OpenWRT و Yocto اشاره کرد. بدون شک یکی از مهمترین و پر استفاده ترین بسترهایی که برای ساخت و توسعه یک سیستم نهفته استفاده میشود، یاکتو (Yocto) است.
پروژه یاکتو (Yocto Project) یک پروژه همکاری منبع باز در جوامع لینوکسی است که به توسعه دهندگان کمک میکند تا سیستمهای مبتنی بر لینوکس و کاملاً سفارشی ایجاد کنند. برای اطلاعات بیشتر در رابطه با یاکتو میتوانید به صفحه ویکی آن مراجعه کنید. پروژه یاکتو زیر ساخت اصلی ابزارهای پتالینوکس (PetaLinux) است. شرکت Xilinx متا-لایههای بی شماری را فراهم آورده است که به توسعه دهندگان اجازه میدهد تمام کامپوننتهای مورد نیاز را برای اجرای لینوکس روی تراشههای SoC شرکت Xilinx بسازند.
در ادامه سه تا از مهمترین مزایای پتالینوکس را نسبت به یاکتو که توسط یک طراح با سابقه به رشته تحریر درآمده است، مطالعه بفرمایید.
مزایای استفاده از پتالینوکس
وقتی اولین بار در مورد پتالینوکس شنیدم، اعتراف میکنم، نسبت به قابلیتهای آن خوش بین نبودم. من یک پیش زمینه کامل از نحوه توسعه سیستمهای لینوکس نهفته داشتم و پروژههای متعددی را انجام داده بودم. پروژههایی که متشکل از Yocto / Bitbake / OE خالص بوده و همینطور پروژههای که در راستای تجمیع لینوکس روی پلتفرمهای SoC متفاوت بوده است. پروژه یاکتو یک روش عالی برای توسعه یک توزیع لینوکس نهفته کاملاً سفارشی است. ساختن همه چیز، از سورس گرفته تا رابط کاربری فوق العاده گسترده، پروژه یاکتو به طراحان اجازه میدهد توزیع اختصاصی لینوکس خود را برای محصولات خود ایجاد کنند.
اما حقیقت این است که کار با پروژه یاکتو کمی سخت است. شیب منحنی یادگیری آن کاملاً زیاد است و تطبیق با آن اگر دردناک نباشد، بسیار سخت است. علاوه بر این، بدون داشتن یک کامپیوتر پرقدرت، ساخت یک ایمیج (Image) کامل میتواند ساعتهای زیادی (بسته به تعداد پکیجها) طول بکشد. وقتی بالاخره سعی کردم از پتالینوکس استفاده کنم، با خوشحالی متعجب بودم، به نظر میرسید بسیاری از مزایای یاکتو در کنار منحنی یادگیری و زمان ساخت سریعتر یکجا در اختیار من قرار گرفته بود.
برای یک لحظه، بیایید به عقب برگردیم و بررسی کنیم که پتالینوکس واقعاً چیست. در حالت کلی پتالینوکس مجموعهای از ابزارهای سفارشی است که به طور مستقیم با اتکا به پروژه یاکتو ساخته شده است تا با پلتفرمهای Xilinx به خوبی ادغام شود. بنابراین، به یک معنای کاملاً باورپذیر، پتالینوکس یک نسخه سفارشی شده از یاکتو است، در واقع Xilinx در مسیر توسعه چند گام اضافی برداشته و با ارائه یک مجموعه ابزار کمکی برای ساده کردن روند طراحی، شروع کار سفارشی سازی را فوق العاده آسان کرده است. بیش از این وارد جزئیات نمیشوم زیرا راهنماهای زیادی وجود دارند که این کار را میکنند، اما میخواهم لحظاتی را به برجسته کردن برخی از مزایای غیر قابل چشم پوشی که در هنگام استفاده از این ابزارها برای من پیش آمد، برای شما بازگو کنم.
در حالت کلی پتالینوکس مجموعه ای از ابزارهای سفارشی است که به طور مستقیم با اتکا به پروژه یاکتو ساخته شده است تا با پلتفرمهای Xilinx به خوبی ادغام شود.
ما پیش تر در پایگاه دانش هگزالینکس در مورد نحوه پیدایش پتالینوکس و فلسفه حضور Xilinx در جوامع منبع باز توضیحات کاملی ارائه کردیم. برای مشاهده ویدئو و اطلاعات تکمیلی در این رابطه به مقاله دلایل همکاری Xilinx با جوامع منبع باز مراجعه کنید.
۱- شروع آسان
یاکتو یک پروژه لایه لایه است، لایه لایه بودن پروژه یاکتو قابلیت سفارشی سازی آن را افزایش میدهد و باعث میشود، سفارشی سازیهای متفاوت به صورت مستقل از هم نگه داری شوند.
دستور العملها یا recipe ها هم، یکی دیگر از اجزا اساسی در محیط پروژه یاکتو هستند. هر کامپوننت نرم افزاری بعد از ساخته شدن نیاز به یکسری دستورالعمل برای تعریف کامپوننتهایش دارد. این دستورالعملها درون فایلهایی با پسوند bb قرار میگیرند و اصطلاحاً recipe نامیده میشوند. دستورالعملها با استفاده از پکیجها و با آگاهی از وابستگیهای بین آنها قابلیتهایی را به ایمیج اصلی اضافه میکنند و یا فرایند ساخت یک ایمیج را مدیریت میکنند.
همانطور که قبلاً هم اشاره کردم ، با پتالینوکس، ساختن یک ایمیج بسیار آسان است. شما به سادگی میتوانید ابزارهای پتالینوکس را نصب کنید و در کمتر از یک ساعت به طور بالقوه قادر به ساخت و بوت یک ایمیج هستید. به یاد داشته باشید، در زیر پوسته سخت پتالینوکس، هنوز از قلب تپنده یاکتو استفاده میشود ، بنابراین ما هنوز انعطاف پذیری زیادی برای انجام کارهای کاملاً سفارشی داریم. به عنوان مثال، به عنوان بخشی از فرآیند ایجاد پروژه، پتالینوکس برای شما یک لایه یاکتو (Yocto Layer) با دستورالعملهای بیت بیک (Bitbake recipes) میسازد. با وجود اینکه ابزارهای پتالینوکس، مکانیسمهایی را برای ایجاد دستور العملهای ساده ارائه میدهند، اما صادقانه بگویم هیچ محدودیتی برای طراحان حرفهای وجود ندارد و شما میتوانید هر نوع شخصی سازی را که تمایل به اجرای آن دارید، به راحتی اعمال کنید و یک کار کاملاً جدید ارائه دهید.
۲- زمان ساخت سریعتر
وقتی اولین ایمیج را با پتالینوکس ساختم، حسابی تعجب کردم. متوجه شدم که به جای صرف چند ساعت، کار ساخت سیستم عامل دقایقی بیشتر طول نمیکشد. من قصد مقایسه ندارم زیرا زمان ساخت میتواند براساس قدرت کامپیوتر و سرعت اتصال به اینترنت متفاوت باشد. اما بد نیست تجربه خودم را بیان کنم. شرکت ما دارای یک سرور ساخت بسیار سنگین است که ما از آن برای سنتز FPGA ، شبیه سازی، و غیره و همچنین برای ساخت اپلیکیشنهای نرم افزاری استفاده میکنیم. دانلود و ساخت یک یاکتو خالص از ایمیج “core-image-minimal” حداقل ۳۰ دقیقه طول میکشد، در حالی که یک ایمیج ساخته شده با پتالینوکس برای بورد ZCU104 تنها ۱۰ دقیقه طول کشید. اگرچه این مقایسه کاملاً نظیر به نظیر و عادلانه نیست، اما کاملاً قابل تأمل است. زیرا با وجود اینکه ”core-image-minimal” یک ایمیج کاملاً فشرده است، اما ساخت آن مدت زمان بیشتری طول کشید.
این ابزارها چگونه این کار را میکنند؟ من شگفت زده هستم و پاسخ دقیق آن را نمیدانم، اما احتمالاً باید از یک مکانیسم کش اشتراکی استفاده بکنند. برداشت من این است که Xilinx با کش کردن دستورالعملها بعد از هر بار اجرای فرایند ساخت، و همینطور دانلودهای پکیجهای مورد نیاز به صورت کامل درون بسته نصبی پتالینوکس باعث تسریع فرایند ساخت یک ایمیج میشود. به این ترتیب Xilinx به کاربرانش این امکان را میدهد تا با استفاده مجدد از کامپوننتهای معمول، فرایند ساخت را به میزان قابل توجهی تسریع کرده و فقط بازسازی آنچه در واقع متفاوت است را انجام دهند.
۳- خود اتکایی و ادغام آسان با گیت
شرکت Xilinx کلیه ملاحظات لازم برای ادغام با گیت را به پروژههای پتالینوکس اضافه کرده است. یک پروژه جدید به صورت خودکار با یک فایل gitignore راه اندازی میشود تا فرایند نادیده گرفتن هر چیزی که نباید نسخههای مختلف آن کنترل شود، در نظر گرفته شود. (مثل فایلهای موقتی که در طول ساخت پروژه در نظر گرفته میشوند.) علاوه بر این، از آنجا که بیشتر لایه های خارجی که یاکتو براساس آنها شکل گرفته است، در بسته نصبی پتالینوکس وجود دارند، پروژه ها بسیار خود مختار (خود اتکا) هستند و کل پروژه شما، اپلیکیشنها، درایورها، دیوایس تیریهای (device-tree) شخصی سازی شده و غیره، همه میتوانند در یک پروژه / مخزن واحد نگه داری شوند.
جمع بندی
در پایان، دلایل زیادی وجود دارد که شما باید از پتالینوکس استفاده کنید، و این مطلب کوتاه نمیتواند همه آنها را پوشش دهد. من با گفتن این جمله حتی کاربران یاکتو را هم تشویق به استفاده از پتالینوکس میکنم ، من به آنها پیشنهاد میکنم تا نگاهی عمیقتر به این ابزار بیندازید. ابزارهای پتالینوکس میتوانند در پایان کار زمان زیادی را برای شما صرفه جویی کنند و به شما اجازه میدهند زمان بیشتری را صرف نوشتن اپلیکیشنهای نرم افزاری کنید به جای اینکه این زمان را صرف فهمیدن شیوه کار با یاکتو بکنید.
9 در مورد “مزایای استفاده از پتالینوکس”
سلام
ممنون از مطالبتون
میخواستم بدونم میشه پتالینوکس را برای کینتکس ۷ (کاستوم دیزاین) بردهایی که خودمون طراحی کردیم هم ایجاد کرد ؟ رسورسهای حداقلی برای ایجاد یک سیستم عامل و مواردی این چنینی را از کجا باید مطالعه کرد. ممنون
سلام بر شما، امیدوارم پیروز و پر انرژی باشید.
بله برای کاستوم بوردها هم میشه از پتالینوکس استفاده کرد. در مورد منابع حداقلی مورد نیاز برای مایکروبلیز (در کینکس ۷ الزاما باید از مایکروبلیز استفاده کرد) به سند ug1144 مراجعه کنید.
سلام وقتتون بخیر.
من یه سوال داشتم در رابطه با این موضوع.
اینکه ما میتوانیم با Qt یک app برای FPGA بنویسیم و آن را روی مثلا یک LCD نمایش دهیم؟
به عنوان یک مثال ساده ، یک برنامه روی LCD متصل به برد با Qt بنویسیم که یک button ساده دارد که اگر روی آن touch کنیم یکی از LED های روی برد ، روشن یا خاموش میشود. تا اینکه شما یک پروژه پیشرفته پردازش تصویر را بخواهید توسط این مکانیزم (در صورت نیاز به این مکانیزم) یعنی استفاده از User command side ، پیاده سازی کنید.
در واقع شبیه به کاری که ما در TouchGFX برای میکروکنترولر های ARM انجام میدیدم؟
سلام ایوب عزیز
بخاطر تأخیری که در ارسال پاسخ شما داشتم پوزش میطلبم
متاسفانه من با TouchGFX در میکروکنترولر های ARM آشنایی ندارم. اما شما امکان نوشتن یک app برای FPGA با qt را ندارید، مگر اینکه از سیستم عامل روی تراشههای FPGA یا Zynq استفاده کنید.برای این کار باید از PetaLinux و یا Pynq Project استفاده کنید.
خواهش می کنم.
متشکرم از پاسختون.
سلام
بنده چند تا سوال درباره ی PetaLinux دارم لطفا راهنماییم کنید.
من چند تا قطعه کد به زبان سی دارم که دارای کتابخانه هم هستن
موقعی که میخواهم براشون اپلیکیشن بسازم دچار مشکل میشم و حتی فایل های Makefile و bb. هم تغییر دادم!
ولی در بخش petalinux-build ارور هایی دریافت میکنم.
(که به نظر خودم برای نشناختن کتابخانه ها این ارور رو میده من برای کد پیشفرض hello world مشکلی نداشتم و run شد).
1-سوال من اینه میتونم بدون استفاده از SDK/Vitis در همون محیط PetaLinux برنامه ها رو بسازم و اجرا کنم؟
2-و اینکه بورد من کاستوم هستش و آیا برای اینکار نیازی به BSP هستش ؟ و کلا BSP برای چه کاری و چه بخشی کاربرد داره؟؟
سلام و درود بر شما، خسته نباشید و خدا قوت. امیدوارم تو مسیری که انتخاب کردید، ثابت قدم باشید.
در مورد سوأل اولتون باید بگم که خیر در محیط پتالینوکس نمیتوانید برنامهای اجرا و تست کنید. بهترین گزینه برای تست برنامه همون چیزی هست که فرمودید یعنی SDK و یا Vitis . البته طبعتاً میتوانید برای تست از خود کامپایلر gcc در لینوکس هم استفاده کنید.
در مورد سوأل دومتون. سفارشی یا کاستوم بودن بورد مشکلی در مسیر ساخت BSP ایجاد نمیکنه. تعریف BSP به این صورت هست.
بسته پشتیبانی بورد یا Board Support Package (BSP) به مجموعهای از فایلها اطلاق میشود که داریورهای سطح پایین برای بخش های مختلف سخت افزاری را فراهم میآورند. با کمک BSP یک ارتباط پایدار و مطمئن بین نرم افزارهای سطح بالا و درایورهای سطح پایین ایجاد میشود. به بیان ساده BSP ها حاوی درایورها، کتابخانهها و به طور کلی هر چیزی که به نرم افزارهای شما امکان دسترسی به قابلیتهای سخت افزار را میدهد، میباشند. در بسیاری از موارد مسئولیت ایجاد یکBSP از صفر تا صد و یا دریافت کردن آن از کاربران دیگر به عهده کاربر است. ابزار Xilinx SDK از این منظر به کلی متفاوت است چرا که توانایی ایجاد خودکارBSP را دارا میباشد. این مزیتی عمده محسوب میشود و زمان زیادی را در فرایند توسعه نرم افزار شما صرفه جویی خواهد کرد.
در پتالینوکس BSP به صورت اتوماتیک همانند SDK برای شما ساخته میشه، اما اگر یک بلوک سخت افزاری سفارشی روی بوردتون داشته باشید و از بلوکهای Xilinx استفاده نکنید در این صورت باید خودتون برای اون درایور بنویسید.
سلام . ممنون بابت توضیح هاتون
لطفا اگر منبع مناسبی برای آموزش peta linux سراغ دارید بفرمایید تا استفاده کنیم.
باتشکر
حمید عزیز امیدوارم خوب و سرحال باشید،
متأسفانه من تاکنون هیچ آموزش کاملی که به زبان فارسی تهیه شده باشه ندیدم. تعدادی ویدئو رایگان در آپارات هست که شاید برای شروع بد نباشه. پیشنهاد میکنم برای شروع از اونها استفاده کنید.