سلام خدمت مهندسین گرام!
اولا از اینکه دوستان نسبت به این پروژه علاقه نشون میدهند و پیگیری میکنند خیلی خوشحال هستم. جای امیدواری است که این همکاری ها به کارهای بزرگتر و جالبتر ختم شود. و اما بعد...
در این چند روز تعطیلات عیدی فرصتی دست داد تا کمی به سر و وضع به هم ریخته ی این پروژه برسم و از لابلای پوشه ها و فایلهای درهم برهم و نصفه نیمه ای که برای این کار ایجاد شده بود، یک پروژه ی نسبتا تمیز از کار در بیاورم تا سایر دوستان هم بتوانند آنرا بررسی کنند و در صورت تمایل در بهبود و رفع مشکلات آن مشارکت داشته باشند.
قبل از هر چیزی مروری داشته باشیم بر وضعیت فعلی کار تا بدانیم کجای کار هستیم:
هدف:
ما داریم میکوشیم تا بورد پازج را Arduino-Compatible کنیم. با این کار میتوانیم محیط توسعه ی ساده و فراگیر آردوینو را روی یک پلتفرم قوی تر و با امکانات بسیار وسیعتر نسبت به یک بورد آردوینوی میکرویی اجرا کنیم؛ امکاناتی مثل خروجی تصویر VGA و HDMI، شتابدهنده گرافیکی، فرستنده FM، کنترل کننده ی PID با دقت بسیار بالا، انواع اینترفیس های ارتباطی و ... که همه ی اینها را یک هسته ی سافت-کور 32 بیتی به اسم f32c میچرخاند!
کجای کاریم؟
این پروژه مشتمل بر دو بخش است:
بخش اول: آماده سازی محیط Arduino-IDE و تعریف مشخصات سخت افزار مورد نظر (پازج-یک) برای آن است. اگر Arduino-IDE را روی سیستم خود نصب کرده باشید، فایلی به اسم boards.txt در مسیر
{ARDUINO}/hardware/arduino/boards.txt
(که {ARDUINO} نمایانگر مسیر نصب نرم افزار Arduino است) را ملاحظه خواهید کرد که حاوی تعاریف بوردهای ساخته شده توسط خود Arduino (مثل Uno، DUE، Leonardo و ...) می باشد. این فایل علاوه بر تعریف پارامترهای سخت افزاری بورد، مواردی مثل مسیر کامپایلر، linker-script، نحوه ی کامپایل کد، پروگرامر و ... (که همه ی اینها تحت عنوان Toolchain پلتفرم مورد نظر شناخته میشوند) را شامل میشود.
گام اول برای شناساندن سخت افزار به آردوینو ساختن فایلی با فرمت مشابه این برای بورد پازج است. خوشبختانه قسمت عمده ی این کار انجام شده و طی رایزنی هایی که با تیم FPGArduino به عمل آمد، هم اکنون بورد پازج-یک بطور رسمی توسط این پلتفرم پشتیبانی میشود. در حال حاضر با نصب پکیج FPGArduino توسط Board manager موجود در آردوینو (مطابق توضیحات مندرج در این پست) بورد پازج-یک (posedge-one) بعنوان یکی از بوردهای این پلتفرم برای محیط آردوینو قابل شناسایی و انتخاب است. برای مشاهده ی تعاریف بورد پازج و سایر بوردهای موجود در FPGArduino پس از نصب این پکیج میتوانید فایل موجود در مسیر زیر را مشاهده کنید:
C:\Users\{USER}\AppData\Local\Arduino15\packages\FPGArduino\hardware\f32c\1.0.0\tools\boards-manager
که {USER} نام کاربری شما در سیستم عامل ویندوز است. چنانچه ایده ای برای بهبود این قسمت از کار دارید میتوانید با ارسال یک pullRequest در صفحه ی مربوط به این پروژه در سایت Github این کار را انجام دهید.
قسمت دوم این پروژه مربوط به آماده سازی بستر سخت افزاری روی FPGA است که در ادبیات آردوینویی به آن Bootloader گفته میشود. Bootloader از دیدگاه ما FPGA ی ها، فایل .bit خروجی پروژه ای است که شامل هسته ی f32c و peripheral های دلخواهی است که به آن وصل کرده ایم. این فایل بایستی در پوشه ی
C:\Users\{USER}\AppData\Local\Arduino15\packages\FPGArduino\tools\bootloaders\1.0.0\posedge1
قرار داده شود تا با انتخاب گزینه ی Tools -> Burn Bootloader در آردوینو روی FPGA پروگرام شود. پس از پروگرام شدن (burn شدن) فایل بوت لودر روی FPGA، کاربر میتواند کد آردوینوی خود را روی پازج آپلود کند و از آن بعنوان یک بورد آردوینویی استفاده کند.
در حال حاضر بخش های اولیه ی این قسمت از پروژه راه اندازی شده است. مواردی مثل
- UART
- GPIO
- SRAM
- FM/RDS
- VGA Textmode
در حال حاضر توسط بوت لودر پشتیبانی میشوند که البته هنوز بطور کامل و صددرصد تست نشده اند و قطعا شامل ایراداتی هستند که نیاز به شناسایی و رفع دارند. لذا هر گونه همکاری در این قسمت شدیدا با آغوش باز مورد استقبال قرار خواهد گرفت! عزیزانی که تمایل به همراهی در این مسیر را دارند میتوانند با دانلود آخرین آپدیت این پروژه از این آدرس (و یا در صورتی که با سازوکار Git آشنایی دارند مستقیما با fetch کردن) نسبت به توسعه و رفع اشکالات آن اقدام کنند.
پروژه ی ISE مروبط به بورد پازج در مسیر
/rtl/proj/xilinx/posedge_one_bram
و
/rtl/proj/xilinx/posedge_one_bram_logix1
قرار گرفته است که اولی مخصوص بورد پازج (بدون هیچگونه بال اضافی) و دومی مخصوص بورد پازج در حالتی است که مگاوینگ logix1 روی آن قرار گرفته باشد (هر دو پروژه یکسان بوده و تنها تفاوت مختصری در Pinout آن ها وجود دارد.)
چنانچه تغییری در پروژه ی بوت لودر ایجاد کردید و مایل به تست آن بودید میتوانید فایل .bit آنرا مستقیما روی FPGA پروگرام کنید (از طریق Impact یا MiniSProg) و سپس در محیط آردوینو با انتخاب بورد پازج کد آردوینویی خود را روی آن آپلود کنید و نتیجه را مشاهده کنید. توجه داشته باشید که در این حالت نیازی به اجرای Burn Bootloader ندارید چرا که بوت لودر را بصورت دستی روی بورد ریخته اید.
مشتاقانه منتظر فیدبکها و اصلاحات پیشنهادی شما در این رابطه هستم. لطفا چنانچه هر گونه سوال و یا ابهامی در این رابطه داشتید در ادامه ی همین تاپیک مطرح فرمایید.