بلند شدن و دویدن با مجموعه یکپارچه نرم افزاری Vitis

بلند شدن و دویدن با مجموعه یکپارچه نرم افزاری Vitis

مقدمه

از Verilog و VHDL متنفرید، شما تنها نیستید. بالاخره بعد از درخواست‌های فراوان توسعه دهندگان، شرکت Xilinx یک پلتفرم طراحی جدید برای کار و توسعه سیستم روی تراشه‌های FPGA‌ معرفی کرد.
شرکت Xilinx در جریان کنفرانس سالیانه توسعه دهندگان XDF2019 از پلتفرم جدید نرم افزاری خودش تحت عنوان Vitis رو نمایی کرد. پلتفرمی که پنج سال برای توسعه‌ آن زمان صرف شده و به طراحان اجازه می‌دهد به صورت مستقیم با استفاده از ابزارها و زبان‌های توسعه مرسوم همچون پایتون و ++C روی معماری‌ سخت افزاری تراشه‌های FPGA طراحی کنند.

در این آموزش از پایگاه دانش هگزالینکس سعی داریم نگاهی کوتاه به ابزار توسعه جدید Xilinx بیاندازیم و اولین پروژه خودمان را اجرا کنیم. اگر علاقمند به جزئیات این موضوع هستید، تا انتها با ما همراه باشید.

نصب Vitis

وقتی که کار با Vitis را آغاز می‌کنیم، اولین چیزی که توجه‌ ما را جلب می‌کند، جایگزین شدن SDSoC ، SDAccel و حتی SDK با مجموعه نرم افزاری Vitis‌ است. به عنوان یک ابزار یکپارچه، در واقع قرار است Vits برای توسعه یک سیستم نهفته دقیقاً مشابه SDK و یا شتاب دهی یک اپلیکیشن کاملا مشابه SDSoC‌ و SDAccel بکارگرفته شود.

با توجه به اینکه دقیقا به دنبال چه چیزی هستیم می‌توانیم بسته نصبی را به شکل‌های متفاوتی سفارشی کنیم.

توسعه اپلیکیشن‌های شتاب دهی نیازمند سیستم عامل لینوکس با حجم قابل توجهی از حافظه RAM‌ است. حداقل 32GB یا حتی 64GB حافظه نیاز است. از سوی دیگر، توسعه یک سیستم نهفته روی هر دو سیستم عامل لینوکس و ویندوز امکان پذیر است. البته بازهم حافظه مورد نیاز حداقل 32GB است.

هر دو نوع نصب به حدود 100GB فضا نیاز دارد. با نصب Vitis آخرین نسخه Vivado‌ یعنی نسخه 2019.2 نیز نصب می‌شود و نیازی به نصب آن به صورت جداگانه نداریم. برای اطلاعات بیشتر به اینجا مراجعه کنید.

صفحه نصب vitis
صفحه نصب vitis

ساخت اولین پروژه با Vitis

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

اولین تفاوت قابل توجه که نظر من را به خودش جلب کرد. فایلی بود که در زمان انتخاب گزینه export از Vivado خروجی می‌گرفتیم. در نسخه‌های قبلی، فایلی خروجی تحت عنوان Hardware Definition شناخته می‌شد. در حقیقت، فایل HDF، یک فایل فشرده شده است که حاوی فایل bit‌ و تعاریف و پیکره‌بندی‌های PS‌ و PL است.

محتوای فایل HDF
محتوای فایل HDF

در این نسخه از Vivado فایل دیگری که حاوی کل معماری است، خروجی می‌شود. فایل جدید یک فایل با فرمت XSA است که مخفف Xilinx Shell Architecture است. ما از این فایل برای ساخت پلتفرم در Vitis و همینطور ساخت لینوکس نهفته در Petalinux استفاده می‌کنیم.

نحوه خروجی گرفتن از فایل ساخته شده در Vivado با گذشته تفاوت چندانی نکرده است و کافی است از منوی مربوطه گزینه Export Hardware انتخاب شود. برای این مثال من از بورد Ultra96 V2 استفاده کردم. در حالی که فقط PS پیکره‌بندی شده و PL‌ کاملاً خالی است.

خروجی گرفتن با فایل XSA
خروجی گرفتن با فایل XSA

مشابه فایل HDF، فایل XSA نیز یک فایل فشرده شده است که اطلاعات مورد نیاز برای پیکره‌بندی سخت افزاری سیستم را در خود ذخیره کرده است.

محتویات فایل XSA برای یک پروژه ساده Ultra96
محتویات فایل XSA برای یک پروژه ساده Ultra96

همچون قبل که SDK از داخل Vivado قابل فراخوانی بود. اینجا هم بعد از Export کردن XSA، ما می‌توانیم Vitis‌ را از درون Vivado‌ اجرا کنیم. کافی است به منوی tools مراجعه کنیم و گزینه Launch Vitis را مشابه شکل زیر انتخاب کنیم.

فراخوانی vitis از داخل vivado

به محض فراخوانی Vitis از کاربر درخواست می‌شود تا یک workspace انتخاب کند.

انتخاب workspace
انتخاب workspace

بعد از انتخاب workspace ، محیط گرافیکی خوشامد گویی Vitis نمایش داده می‌شود و به ما اجازه می‌دهد که یک application project‌ یا platform project ایجاد کنیم.

صفحه خوشامد گویی vitis و انتخاب نوع پروژه
صفحه خوشامد گویی vitis و انتخاب نوع پروژه

دقیقاً اختلاف و وجه تمایز Vitis با SDK در اینجا مشخص می‌شود. در واقع Vitis‌ جریان توسعه را به دو عنصر تقسیم می‌کند. یک پلتفرم (platform) که متشکل است از Hardware Definition، BSP ، Domain و یک اپلیکیشن (application).

ارتباطات ابزارها در vitis
ارتباطات ابزارها در vitis

این یعنی اپلیکشن به سادگی و به سرعت می‌تواند به یک پلتفرم دیگر منتقل شود. در اینجا ما فقط یک اپلیکشن ساده baremetal رو با هم تست می‌کنیم. اولین کاری که باید بکنیم ساخت یک پلتفرم است.

پس روی گزینه Create Platform Project کلیک می‌کنیم تا ویزاردی مشابه شکل زیر نمایش داده شود.

ساخت پلتفرم
ساخت پلتفرم

در این مرحله با دو روش برای تولید پلتفرم روبرو می‌شویم.

  • فایل XSA ساخته شده در Viavdo را لود کنیم.
  • و یا از یکی از پلتفرم‌های آماده استفاده کنیم.

در این پروژه ما فایل XSA را که در پروژه Vivado ساخته‌ایم، لود می‌کنیم و از پلتفرم خودمان استفاده می‌کنیم. در ادامه با انتخاب‌هایی به صورت شکل زیر روبرو می‌شویم.

به صورت پیش فرض کامپوننت‌های بوت مورد نیاز همچون FSBL و PMU با توجه به MPSoC انتخابی نیز ساخته می‌شوند.

انتخاب سیستم عامل و پردازنده
انتخاب سیستم عامل و پردازنده

به این ترتیب ما یک پلتفرم Vitis برای فایل XSA خودمان تولید کردیم. همانطور که مشاهده می‌کنید برای طرح ما FSBL ،PMU و BSP به صورت اتوماتیک تولید شده است. در این مثال ما stdio را از PS_UART_0 به PS_UART_1 تغییر می‌دهیم چون بورد مورد استفاده ما ULTRA96‌ است.

برای این کار لازم است BSP را انتخاب کنیم و سپس تنظیمات BSP را ویرایش کنیم. توجه داشته باشیم که این کار را برای FSBL و PMU نیز باید تکرار کنیم تا امکان مشاهده خروجی پورت سریال فراهم شود.

توصیف سخت افزار
توصیف سخت افزار

بعد از تغییر تنظیمات BSP، در صورت تمایل به مشاهده جزئیات مربوط به Hardware Definition در برگه Hardware Specification در پایین صفحه پلتفرم کلیک کنید.

با آماده شدن پلتفرم اکنون آماده ساخت اولین اپلیکیشن نرم افزاری هستیم. برای این کار، گزینه new application از منوی فایل را انتخاب می‌کنیم. توجه کنیم که ما هنوز system project نداریم و در اینجا یک application project می‌سازیم.

ساخت اپلیکیشن جدید
ساخت اپلیکیشن جدید

یک system project در برگیرنده چندین application project است که همگی روی یک پلتفرم به صورت همزمان قابل اجرا هستند. مثلا اپلیکیشن‌هایی رو در نظر بگیرید که به صورت مجزا روی هسته‌های A53 یا R5 اجرا می‌شوند.

بعد از انتخاب نام مناسب برای application project ، باید پلتفرم را انتخاب کنیم. همانطور که در شکل زیر می‌بینید، نام پلتفرم Ultra 96 که با هم ساختیم در لیست انتخاب‌ها قابل مشاهده است. این پلتفرم را انتخاب می‌کنیم.

انتخاب پلتفرم
انتخاب پلتفرم

با انتخاب پلتفرم نوبت به انتخاب domain‌ و language می‌رسد، به صورت پیش فرض گزینه standalone_domin و زبان برنامه نویسی C را انتخاب می‌کنیم.

انتخاب domain و language
انتخاب domain و language

بعد از انتخاب domain و language ، در ادامه از ما خواسته می‌شود تا از بین اپلیکیشن‌های موجود در صورت تمایل یکی را انتخاب کنیم. در این پروژه ما گزینه Hello World را انتخاب می‌کنیم.

انتخاب برنامه نمونه hello world
انتخاب برنامه نمونه hello world

در انتهای کار شما هر دو پروژه‌ای را که تحت عنوان application project و system project ساخته‌اید، در پنجره Explorer مشاهده می‌کنید.

تنظیمات system project
تنظیمات system project

در بخش system project ، شما قادرید application project را که تصمیم داریم روی هسته اول از APU اجرا کنیم، مشاهده کنید.

بعد از Build کردن این پروژه به سادگی می‌توان با دانلود فایل ELF خروجی نتیجه کار را روی بورد Ultra96 مشاهده کرد.

برای انجام این کار کافیست، گزینه Debug Configuration Options انتخاب کنیم. دقیقا مشابه کاری که قبلا در محیط SDK انجام می‌دادیم. به این ترتیب لیست تنظیمات و گزینه‌های مختلف برای ما نمایش داده می‌شود.

انتخاب تنظیمات دیباگ
انتخاب تنظیمات دیباگ

برای این مثال، با وجود اینکه امکان دیباگ ساده به صورت یک application تنها وجود دارد، گزینه دیگری را انتخاب می‌کنم و کار را با انتخاب System Project Debugger ادامه می‌دهم.

این کار باعث می‌شود تا دیباگ کل سیستم در صورت اجرای همزمان چندین اپلیکیشن برای ما امکان پذیر باشد. تنها تغییری که در این بخش روی تنظیمات پیش فرض انجام می‌دهیم غیر فعال کردن گزینه استفاده از FSBL در زمان راه اندازی اولیه است.

دیباگ اپلیکیشن
دیباگ اپلیکیشن

روی گزینه Debug کلیک می‌کنیم و دانلود اپلیکیشن آغاز می‌شود. بلافاصله Debug Perspective فعال می‌شود و ابزار آماده اجرای اپلیکیشن می‌شود.

دانلود اپلیکیشن برای اجرا
دانلود اپلیکیشن برای اجرا

با اجرای برنامه پیغامی مشابه شکل زیر را در پنجره ترمینال به شما نمایش داده می‌شود.

خروجی اولین برنامه vitis
خروجی اولین برنامه vitis

این تازه شروع کار بود، امیدوارم برای پروژه‌های پیچیده‌تر و بررسی سایر جنبه‌های vitis همچنان با ما همراه باشید.


منبع: hackster.io  نوشته Adam Taylor


دیدگاه‌ خود را بنویسید

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

اسکرول به بالا