اینتل - لوگوFPGA SDK برای OpenCL
راهنمای کاربر

UG-OCL009
2017.05.08
آخرین به روز رسانی برای Intel® Quartus® Prime Design Suite: 17.0

ماساژور پای هوشمند RENPHO RF FM059HS WiFi - نماد 5مشترک شوید
گوشی هوشمند SAMSUNG SM A136UZKZAIO Galaxy A13 5G - نماد 12ارسال بازخورد

Intel® FPGA SDK for OpenCL™ Intel® Cyclone®V SoC Development Kit مرجع انتقال پلت فرم راهنمای پورت کردن

راهنمای انتقال پلت فرم مرجع کیت توسعه V SoC طراحی سخت‌افزار و نرم‌افزار پلتفرم مرجع کیت توسعه V SoC Intel Cyclone (c5soc) را برای استفاده با کیت توسعه نرم‌افزار اینتل (SDK) برای OpenCL شرح می‌دهد. Intel® FPGA SDK برای OpenCL™ Intel Cyclone®. قبل از شروع، اینتل قویاً توصیه می کند که با محتوای اسناد زیر آشنا شوید:

  1. راهنمای شروع کار Intel FPGA SDK برای OpenCLIntel Cyclone V SoC
  2. راهنمای کاربر Intel FPGA SDK for OpenCL Custom Toolkit Toolkit
  3. کتابچه راهنمای دستگاه Cyclone V، جلد 3: راهنمای فنی مرجع سیستم پردازشگر سخت، علاوه بر این، به کیت توسعه SoC Cyclone V و صفحه مجموعه طراحی جاسازی شده SoC Altera مراجعه کنید. webسایت برای اطلاعات بیشتر 1 2

توجه: اینتل فرض می کند که شما درک عمیقی از Intel FPGA SDK for OpenCL Custom Platform Toolkit راهنمای کاربر دارید. راهنمای انتقال پلت فرم مرجع کیت توسعه SoC Cyclone V استفاده از جعبه ابزار پلتفرم سفارشی SDK را برای اجرای یک پلت فرم سفارشی برای کیت توسعه SoC Cyclone V توضیح نمی دهد. این فقط تفاوت‌های بین پشتیبانی SDK در کیت توسعه SoC Cyclone V و یک SDK FPGA عمومی Intel برای پلتفرم سفارشی OpenCL را توضیح می‌دهد.

لینک های مرتبط

  • راهنمای شروع کار Intel FPGA SDK برای OpenCL Cyclone V SoC
  • راهنمای کاربر Intel FPGA SDK for OpenCL Custom Toolkit Toolkit
  • راهنمای دستگاه Cyclone V، جلد 3: مرجع فنی سیستم پردازشگر سخت
  • Cyclone V SoC Development Kit و SoC Embedded Design Suite در Altera webسایت
  1. OpenCL و لوگوی OpenCL علائم تجاری Apple Inc. هستند که با مجوز Khronos Group™ استفاده می شوند.
  2. Intel FPGA SDK برای OpenCL بر اساس مشخصات Khronos منتشر شده است و فرآیند تست انطباق Khronos را پشت سر گذاشته است. وضعیت انطباق فعلی را می توان در یافت www.khronos.org/conformance.

شرکت اینتل تمامی حقوق محفوظ است. کلمات و آرم های Intel، آرم اینتل، Altera، Arria، Cyclone، Enpirion، MAX، Nios، Quartus و Stratix علائم تجاری شرکت اینتل یا شرکت های تابعه آن در ایالات متحده و/یا سایر کشورها هستند. اینتل عملکرد FPGA و محصولات نیمه هادی خود را با مشخصات فعلی مطابق با ضمانت استاندارد اینتل تضمین می کند، اما این حق را برای خود محفوظ می دارد که در هر زمان و بدون اطلاع قبلی، هر محصول و خدماتی را تغییر دهد. اینتل هیچ مسئولیت یا مسئولیتی را که ناشی از کاربرد یا استفاده از هر گونه اطلاعات، محصول یا خدماتی است که در اینجا توضیح داده شده است، ندارد، مگر اینکه صراحتاً توسط اینتل به صورت کتبی با آن موافقت شده باشد. به مشتریان اینتل توصیه می شود قبل از تکیه بر اطلاعات منتشر شده و قبل از سفارش محصولات یا خدمات، آخرین نسخه مشخصات دستگاه را دریافت کنند.
*اسامی و برندهای دیگر ممکن است به عنوان دارایی دیگران ادعا شود.

1.1.1 Cyclone V SoC توسعه کیت مرجع پلت فرم پلت فرم
پلت فرم مرجع کیت توسعه SDK FPGA اینتل برای OpenCL Cyclone V SoC توسعه کیت شامل دو نوع برد است.

  • برد c5soc
    این برد پیش فرض دسترسی به دو بانک حافظه DDR را فراهم می کند. HPS DDR هم توسط FPGA و هم CPU قابل دسترسی است. FPGA DDR فقط توسط FPGA قابل دسترسی است.
  • برد c5soc_sharedonly
    این نوع برد فقط دارای اتصال HPS DDR است. FPGA DDR قابل دسترسی نیست. این نوع برد دارای کارایی منطقه ای بیشتری است زیرا سخت افزار کمتری برای پشتیبانی از یک بانک حافظه DDR لازم است. برد c5soc_sharedonly همچنین یک پلت فرم نمونه سازی خوب برای یک برد تولید نهایی با یک بانک حافظه DDR است.
    برای هدف قرار دادن این نوع برد هنگام کامپایل کردن هسته OpenCL، گزینه -board c5soc_sharedonly را در دستور aoc خود قرار دهید.
    برای اطلاعات بیشتر در مورد -برد گزینه دستور aoc، به راهنمای برنامه نویسی OpenCL Intel FPGA SDK مراجعه کنید.

لینک های مرتبط
کامپایل یک هسته برای یک برد FPGA خاص (–برد )
1.1.2 محتوای پلت فرم مرجع کیت توسعه SoC Cyclone V
پلتفرم مرجع کیت توسعه SoC Cyclone V از موارد زیر تشکیل شده است fileاس ها و دایرکتوری ها:

File یا دایرکتوری توضیحات
board_env.xml زبان نشانه گذاری توسعه پذیر (XML) file که c5soc را به Intel FPGA SDK برای OpenCL توصیف می کند.
linux_sd_card_image.tgz تصویر کارت فلش SD فشرده file که شامل همه چیزهایی است که یک کاربر SDK برای استفاده از کیت توسعه SoC Cyclone V با SDK نیاز دارد.
بازو32 دایرکتوری که شامل موارد زیر است:

1.1.3 ویژگی های مرتبط کیت توسعه SoC Cyclone V

فهرست زیر مؤلفه‌ها و ویژگی‌های Cyclone V SoC Development Kit را نشان می‌دهد که مربوط به Intel FPGA SDK برای OpenCL است:

  • CPU دو هسته ای ARM Cortex-A9 با لینوکس 32 بیتی.
  • گذرگاه رابط توسعه‌پذیر پیشرفته (AXI) بین HPS و فابریک هسته FPGA.
  • دو کنترلر حافظه DDR سخت شده که هر کدام به یک گیگا بایت (GB) DDR1 SDRAM متصل می شوند.
    - یک کنترلر DDR فقط برای هسته FPGA (یعنی FPGA DDR) قابل دسترسی است.
    - کنترلر DDR دیگر هم برای HPS و هم برای FPGA (یعنی HPS DDR) قابل دسترسی است. این کنترلر اشتراکی امکان اشتراک گذاری حافظه رایگان بین CPU و هسته FPGA را فراهم می کند.
  • CPU می تواند فابریک هسته FPGA را دوباره پیکربندی کند.

1.1.3.1 پلت فرم مرجع کیت توسعه SoC Cyclone V اهداف و تصمیمات طراحی اینتل اجرای پلت فرم مرجع کیت توسعه SoC Cyclone V را بر اساس چندین هدف و تصمیم طراحی قرار می دهد. اینتل توصیه می کند که هنگام پورت این پلتفرم مرجع به برد SoC FPGA خود، این اهداف و تصمیمات را در نظر بگیرید.
در زیر اهداف طراحی c5soc آمده است:

  1. بالاترین پهنای باند ممکن را بین هسته های FPGA و سیستم(های) حافظه DDR فراهم کنید.
  2. اطمینان حاصل کنید که محاسبات روی FPGA (یعنی هسته‌های OpenCL) با سایر وظایف CPU که ممکن است شامل سرویس‌دهی دستگاه‌های جانبی باشد، تداخل نداشته باشد.
  3. تا جایی که ممکن است منابع FPGA را برای محاسبات هسته به جای اجزای واسط بگذارید.

در زیر تصمیمات طراحی سطح بالا که پیامدهای مستقیم اهداف طراحی اینتل هستند، آمده است:

  1. پلتفرم مرجع فقط از کنترلرهای حافظه سخت DDR با گسترده ترین پیکربندی ممکن (256 بیت) استفاده می کند.
  2. FPGA مستقیماً با کنترلر حافظه HPS DDR بدون دخالت گذرگاه AXI و سوئیچ L3 در داخل HPS ارتباط برقرار می کند. ارتباط مستقیم بهترین پهنای باند ممکن را برای DDR فراهم می کند و محاسبات FPGA را از تداخل در ارتباطات بین CPU و پیرامون آن جلوگیری می کند.
  3. دسترسی مستقیم به حافظه پراکنده (SG-DMA) بخشی از منطق رابط FPGA نیست. به جای انتقال مقادیر زیاد داده بین سیستم های حافظه DDR، داده ها را در HPS DDR مشترک ذخیره کنید. دسترسی مستقیم به حافظه CPU توسط FPGA کارآمدتر از DMA است. منابع سخت افزاری (یعنی منطقه FPGA) را ذخیره می کند و درایور هسته لینوکس را ساده می کند.
    هشدار: انتقال حافظه بین سیستم مشترک HPS DDR و سیستم DDR که فقط برای FPGA قابل دسترسی است بسیار کند است. اگر شما انتخاب کنید
    حافظه را به این روش انتقال دهید، از آن فقط برای مقادیر بسیار کمی داده استفاده کنید.
  4. میزبان و دستگاه انتقال داده های غیر DMA را بین یکدیگر از طریق پل HPS-to-FPGA (H2F) انجام می دهند و تنها از یک پورت 32 بیتی استفاده می کنند. دلیل آن این است که بدون DMA، هسته لینوکس تنها می تواند یک درخواست خواندن یا نوشتن 32 بیتی صادر کند، بنابراین نیازی به اتصال گسترده تر نیست.
  5. میزبان سیگنال های کنترلی را از طریق یک پل سبک وزن H2F (LH2F) به دستگاه ارسال می کند.
    از آنجایی که سیگنال های کنترلی از میزبان به دستگاه سیگنال های با پهنای باند کم هستند، یک پل LH2F برای این کار ایده آل است.

1.2 انتقال پلت فرم مرجع به برد SoC FPGA شما
برای پورت پلت فرم مرجع کیت توسعه SoC Cyclone V به برد SoC FPGA خود، وظایف زیر را انجام دهید:

  1. یک حافظه DDR یا نسخه دو حافظه DDR پلتفرم مرجع c5soc را به عنوان نقطه شروع طراحی خود انتخاب کنید.
  2. مکان‌های پین را در ALTERAOCLSDKROOT/board/c5soc/ به‌روزرسانی کنید /top.qsf file، جایی که ALTERAOCLSDKROOT مسیری است به محل Intel FPGA SDK برای نصب OpenCL، و نام دایرکتوری نوع تابلو است. دایرکتوری c5soc_sharedonly برای نوع برد با یک سیستم حافظه DDR است. دایرکتوری c5soc برای نوع برد با دو سیستم حافظه DDR است.
  3.  تنظیمات DDR را برای بلوک‌های HPS و/یا FPGA SDRAM در ALTERAOCLSDKROOT/board/c5soc/ به‌روزرسانی کنید. /system.qsys file.
    4. همه اینتل FPGA SDK برای طرح های برد ترجیحی OpenCL باید به زمان بندی تضمین شده بسته شود. به این ترتیب، قرار دادن طرح باید زمان بندی تمیز باشد. برای پورت پارتیشن برد c5soc (acl_iface_partition.qxp) به برد SoC FPGA خود، وظایف زیر را انجام دهید:
    برای دستورالعمل های دقیق در مورد اصلاح و حفظ پارتیشن برد، به Quartus مراجعه کنید
    فصل اول گردآوری افزایشی برای طراحی سلسله مراتبی و تیمی از کتابچه راهنمای Quartus Prime Standard Edition.
    آ. acl_iface_partition.qxp را از پوشه ALTERAOCLSDKROOT/board/c5soc/c5soc حذف کنید.
    ب با تغییر دستور Tcl set_global_assignment -name LL_ENABLED OFF -section_id acl_iface_region به set_global_assignment -name LL_ENABLED ON -section_id acl_iface_region، منطقه LogicLock™ acl_iface_region را فعال کنید.
    ج یک هسته OpenCL برای برد خود کامپایل کنید.
    د در صورت لزوم، اندازه و مکان منطقه LogicLock را تنظیم کنید.
    ه. وقتی راضی هستید که محل قرارگیری طرح شما تمیز است، آن پارتیشن را به عنوان acl_iface_partition.qxp Quartus Prime Exported Partition صادر کنید. File.
    همانطور که در بخش ایجاد جریان زمان تضمین شده در راهنمای کاربر کیت ابزار SDK AIntel FPGA برای OpenCL، با وارد کردن این .qxp توضیح داده شد.  file در طراحی سطح بالا، شما نیاز به ارائه طرح تخته با جریان بسته شدن زمان بندی تضمینی را برآورده می کنید.
    برای عواملی که ممکن است بر کیفیت نتایج (QoR) پارتیشن صادر شده شما تأثیر بگذارد، به ملاحظات کیفیت کلی نتایج برای بخش پارتیشن تخته صادر شده در راهنمای کاربر Intel FPGA SDK for OpenCL Custom Toolkit Platform مراجعه کنید.
    f. منطقه acl_iface_region LogicLock را با برگرداندن دستور در مرحله 2 به set_global_assignment -name LL_ENABLED OFF section_id acl_iface_region غیرفعال کنید.
  4. اگر برد SoC FPGA شما از پین ها و حاشیه های مختلف بلوک HPS استفاده می کند، پیش بارگذاری و منبع درختی دستگاه (DTS) را بازسازی کنید. file. اگر تنظیمات کنترلر حافظه HPS DDR را تغییر دادید، پیش بارگیری را دوباره تولید کنید.
  5. تصویر کارت فلش SD را ایجاد کنید.
  6. پلتفرم سفارشی خود را ایجاد کنید که شامل تصویر کارت فلش SD است.
  7. ایجاد یک نسخه محیط زمان اجرا از پلتفرم سفارشی خود را برای استفاده با Intel FPGA Runtime Environment (RTE) برای OpenCL در نظر بگیرید. نسخه RTE پلتفرم سفارشی شما شامل دایرکتوری های سخت افزاری و تصویر کارت فلش SD نمی شود. این پلتفرم سفارشی روی سیستم SoC FPGA بارگذاری می‌شود تا به برنامه‌های میزبان اجازه اجرا را بدهد. در مقابل، نسخه SDK پلتفرم سفارشی برای SDK برای کامپایل هسته های OpenCL ضروری است.
    نکته: می‌توانید از نسخه SDK پلتفرم سفارشی خود برای RTE استفاده کنید. نجات دادن
    فضا، تصویر کارت فلش SD را از نسخه RTE پلتفرم سفارشی خود حذف کنید.
  8. پلتفرم سفارشی خود را تست کنید.
    برای اطلاعات بیشتر به بخش تست طراحی سخت‌افزار Intel FPGA SDK برای OpenCL Custom Toolkit Toolkit مراجعه کنید.

لینک های مرتبط

  • تست طراحی سخت افزار
  • مجموعه افزایشی Quartus Prime برای طراحی سلسله مراتبی و تیمی
  • ایجاد جریان زمان بندی تضمینی
  • ملاحظات کیفیت کلی نتایج برای پارتیشن هیئت مدیره صادر شده

1.2.1 به روز رسانی پلت فرم مرجع پورت شده
در نسخه فعلی پلتفرم مرجع کیت توسعه SoC Cyclone V، بلوک HPS داخل پارتیشنی است که تمام منطق غیر هسته را تعریف می کند. با این حال، نمی توانید HPS را به عنوان بخشی از qxp. صادر کنید file. برای به‌روزرسانی یک پلتفرم سفارشی موجود که از نسخه قبلی c5soc تغییر داده‌اید، جریان حفظ QXP را پیاده‌سازی کنید، تصویر فلش کارت SD را به‌روزرسانی کنید تا آخرین محیط زمان اجرا را به دست آورید، و board_spec.xml را به‌روزرسانی کنید. file برای فعال کردن مهاجرت خودکار
Altera® SDK برای OpenCL نسخه 14.1 و فراتر از آن را بررسی می کند board_spec.xml file برای اطلاعات هیئت مدیره، و به روز رسانی خودکار را پیاده سازی می کند. زیرا شما آن را اصلاح می کنید
طراحی با اجرای جریان حفظ QXP، شما باید board_spec.xml را به روز کنید file به فرمت آن در نسخه فعلی. به روز رسانی file به SDK اجازه می دهد بین پلتفرم های سفارشی حفظ نشده و پلتفرم های سفارشی مبتنی بر QXP فعلی تمایز قائل شود. برای اطلاعات بیشتر به Automigration پلتفرم سفارشی برای سازگاری به جلو در Intel FPGA SDK برای OpenCL Custom Toolkit Toolkit Platform مراجعه کنید.

  1. برای پیاده سازی جریان حفظ QXP در طراحی سخت افزار Cyclone V SoC FPGA که از نسخه قبلی c5soc پورت شده است، مراحل زیر را برای ایجاد یک پارتیشن فرعی برای حذف HPS از qxp. انجام دهید. file:
    آ. قبل از ایجاد یک پارتیشن در اطراف منطق غیر هسته، یک پارتیشن در اطراف HPS در تنظیمات qsf. Quartus Prime ایجاد کنید. File.
    برای مثالampدر:
    # نمونه‌ای را که مجموعه نمونه‌ای_instance_assignment -name PARTITION_HIERARCHY PARTITION_HIERARCHY PARTITION_HIERARCHY - را مدل‌سازی می‌کند به‌صورت دستی به «system:the_system|system_acl_iface:acl_iface|system_acl_iface_hps_18261:hpsacl_iface_hps_0:hpsacl_iface_hps_0:hpsacl_iface_hps_0:hpsacl_iface_hps_0:hpsacl_iface_hps_0:hpsacl_XNUMX_XNUMX_XNUMX_XNUMX_XNUMX_XNUMX:hpsacl_iface| system_acl_iface_hps_XNUMX_hps_io_border:border" -section_id "system_acl_iface_hps_XNUMX_hps_io_border:border"
    # پارتیشن را از نوع HPS_PARTITION تنظیم کنید تا توسط بقیه Quartus به درستی پردازش شود
    set_global_assignment -name PARTITION_TYPE HPS_PARTITION -section_id "system_acl_iface_hps_0_hps_io_border:border"
    quartus_cdb top -c top
    –incremental_compilation_export=acl_iface_partition.qxp
    –incremental_compilation_export_partition_name=acl_iface_partition
    –incremental_compilation_export_post_synth=on
    –incremental_compilation_export_post_fit=on
    –incremental_compilation_export_routing=روشن
    –incremental_compilation_export_flatten=off
    پس از حذف HPS از پارتیشن، می توانید qxp. را وارد کنید file و طرح خود را گردآوری کنید.
  2. با انجام کارهای زیر، تصویر کارت فلش SD را با نسخه فعلی Intel FPGA RTE برای OpenCL به روز کنید:
    آ. را سوار کنید file جدول تخصیص (fat32) و توسعه یافته file پارتیشن های سیستم (ext3) در تصویر موجود به عنوان دستگاه های حلقه بک. برای دستورالعمل های دقیق، به مرحله 2 در ساخت تصویر کارت فلش SD مراجعه کنید.
    ب در پوشه /home/root/opencl_arm32_rte، آن را حذف کنید files از نسخه قبلی RTE.
    ج نسخه فعلی RTE را دانلود و در پوشه /home/root/opencl_arm32_rte باز کنید.
    د در /driver/version.h file از پلتفرم سفارشی خود، تکلیف ACL_DRIVER_VERSION را به روز کنید . (برای مثالample، 16.1.x، که در آن 16.1 نسخه SDK verson است، و x نسخه درایوری است که شما تنظیم کرده‌اید).
    ه. درایور را دوباره بسازید.
    f. پوشه(های) سخت افزاری پلتفرم سفارشی خود را حذف کنید. پلتفرم سفارشی را به همراه درایور به روز شده در دایرکتوری /home/root/opencl_arm_rte/board کپی کنید.
    g. Altera.icd را کپی کنید file از پوشه /home/root/opencl_arm32_rte و آن را به پوشه /etc/OpenCL/vendors اضافه کنید.
    ساعت تصویر جدید را جدا کرده و آزمایش کنید. برای دستورالعمل های دقیق، به مراحل 8 تا 11 در ساخت تصویر کارت فلش SD مراجعه کنید.

لینک های مرتبط

  • ایجاد تصویر کارت فلش SD در صفحه 14
    شما همچنین می توانید یک تصویر کارت فلش SD جدید ایجاد کنید.
  • مهاجرت خودکار پلتفرم سفارشی برای سازگاری به جلو

1.3 پشتیبانی نرم افزاری برای حافظه مشترک
حافظه فیزیکی مشترک بین FPGA و CPU حافظه ترجیحی برای هسته های OpenCL است که روی SoC FPGA اجرا می شوند. از آنجایی که FPGA به حافظه فیزیکی مشترک دسترسی دارد، برخلاف حافظه مجازی مشترک، به جداول صفحه CPU که آدرس های مجازی کاربر را به آدرس های صفحه فیزیکی ترسیم می کند، دسترسی ندارد.
با توجه به سخت افزار، هسته های OpenCL از طریق اتصال مستقیم به کنترلر حافظه سخت HPS DDR به حافظه فیزیکی مشترک دسترسی دارند. با توجه به نرم افزار، پشتیبانی از حافظه فیزیکی مشترک شامل ملاحظات زیر است:

  1. پیاده سازی نرم افزارهای معمولی برای تخصیص حافظه روی CPU (مثلاًample، تابع malloc() نمی تواند یک منطقه حافظه را که FPGA ممکن است استفاده کند اختصاص دهد.
    حافظه ای که تابع malloc() تخصیص می دهد در فضای آدرس حافظه مجازی به هم پیوسته است، اما بعید است که صفحات فیزیکی زیربنایی از نظر فیزیکی به هم پیوسته باشند. به این ترتیب، میزبان باید بتواند مناطق حافظه فیزیکی به هم پیوسته را اختصاص دهد. با این حال، این توانایی در برنامه های کاربردی فضای کاربر در لینوکس وجود ندارد. بنابراین، درایور هسته لینوکس باید تخصیص را انجام دهد.
  2. درایور هسته لینوکس OpenCL SoC FPGA شامل تابع mmap() برای تخصیص حافظه فیزیکی مشترک و نگاشت آن در فضای کاربر است. تابع mmap() از فراخوانی استاندارد هسته لینوکس dma_alloc_coherent() برای درخواست مناطق حافظه فیزیکی به هم پیوسته برای اشتراک گذاری با یک دستگاه استفاده می کند.
  3. در هسته پیش‌فرض لینوکس، dma_alloc_coherent () حافظه‌های فیزیکی به هم پیوسته را با اندازه بیش از 0.5 مگابایت (مگابایت) اختصاص نمی‌دهد. برای اینکه به dma_alloc_coherent() اجازه دهید مقادیر زیادی از حافظه فیزیکی به هم پیوسته را اختصاص دهد، ویژگی تخصیص دهنده حافظه پیوسته (CMA) هسته لینوکس را فعال کنید و سپس هسته لینوکس را دوباره کامپایل کنید.
    برای پلتفرم مرجع کیت توسعه SoC Cyclone V، CMA 512 مگابایت از 1 گیگابایت حافظه فیزیکی را مدیریت می کند. بسته به مقدار حافظه مشترکی که برنامه نیاز دارد، ممکن است این مقدار را افزایش یا کاهش دهید. فراخوانی dma_alloc_coherent () ممکن است نتواند 512 مگابایت کامل حافظه فیزیکی به هم پیوسته را اختصاص دهد. با این حال، به طور معمول می تواند تقریباً 450 مگابایت حافظه به دست آورد.
  4. CPU می تواند حافظه ای را که dma_alloc_coherent() فراخوانی می کند، ذخیره کند. به طور خاص، عملیات نوشتن از برنامه میزبان برای هسته های OpenCL قابل مشاهده نیست. تابع mmap() در درایور هسته لینوکس OpenCL SoC FPGA همچنین شامل فراخوانی به تابع pgprot_noncached() یا remap_pf_range() می باشد تا به طور صریح کش را برای این ناحیه از حافظه غیرفعال کند.
  5. پس از اینکه تابع dma_alloc_coherent () حافظه فیزیکی به هم پیوسته را تخصیص داد، تابع mmap() آدرس مجازی را به ابتدای محدوده باز می گرداند، که دامنه آدرس حافظه ای است که شما تخصیص می دهید. برنامه میزبان برای دسترسی به حافظه به این آدرس مجازی نیاز دارد. از سوی دیگر، هسته های OpenCL به آدرس های فیزیکی نیاز دارند. درایور هسته لینوکس نگاشت آدرس مجازی به فیزیکی را پیگیری می کند. شما می توانید آدرس های فیزیکی را که mmap() برمی گرداند به آدرس های فیزیکی واقعی با افزودن یک پرس و جو به درایور نگاشت کنید.
    فراخوانی ()aocl_mmd_shared_mem_alloc() MMD برنامه نویسی برنامه کاربردی (API) پرس و جوهای زیر را شامل می شود:
    آ. تابع mmap() که حافظه را تخصیص می دهد و آدرس مجازی را برمی گرداند.
    ب پرس و جو اضافی که آدرس مجازی برگشتی را به آدرس فیزیکی نگاشت می کند.
    سپس فراخوانی AOCl_mmd_shared_mem_alloc() MMD API دو آدرس را برمی گرداند.
    -آدرس برگشتی واقعی آدرس مجازی است و آدرس فیزیکی به device_ptr_out می رود.
    توجه: درایور فقط می‌تواند آدرس‌های مجازی را که تابع mmap() به آدرس‌های فیزیکی باز می‌گرداند، نگاشت کند. اگر آدرس فیزیکی هر نشانگر مجازی دیگری را درخواست کنید، درایور مقدار NULL را برمی‌گرداند.

هشدار: Intel FPGA SDK برای کتابخانه های زمان اجرا OpenCL فرض می کند که حافظه مشترک اولین حافظه لیست شده در board_spec.xml است. file. به عبارت دیگر، آدرس فیزیکی که درایور هسته لینوکس به دست می آورد، به آدرس Avalon® تبدیل می شود که هسته OpenCL به HPS SDRAM ارسال می کند.
با توجه به کتابخانه زمان اجرا، از فراخوانی ()clCreateBuffer برای تخصیص حافظه مشترک به عنوان بافر دستگاه به روش زیر استفاده کنید:

  • برای نوع برد دو DDR با حافظه مشترک و غیر اشتراکی، clCreateBuffer() حافظه مشترک را در صورتی که پرچم CL_MEM_USE_HOST_PTR را مشخص کنید، اختصاص می دهد. استفاده از پرچم های دیگر باعث می شود ()clCreateBuffer به حافظه غیر اشتراکی بافر اختصاص دهد.
  • برای نوع برد یک DDR که فقط حافظه مشترک دارد، clCreateBuffer() حافظه مشترک را صرف نظر از اینکه کدام پرچم را مشخص می کنید اختصاص می دهد.
    در حال حاضر، پشتیبانی 32 بیتی لینوکس در CPU ARM بر میزان پشتیبانی از حافظه مشترک در کتابخانه‌های زمان اجرا SDK نظارت می‌کند. به عبارت دیگر، کتابخانه‌های زمان اجرا در محیط‌های دیگر کامپایل می‌شوند (مثلاًample، x86_64 لینوکس یا ویندوز 64 بیتی) از حافظه مشترک پشتیبانی نمی کنند.
    C5soc حافظه ناهمگن را برای تشخیص حافظه مشترک و غیر اشتراکی به دلایل زیر پیاده سازی نکرد:
    1. تاریخچه - پشتیبانی از حافظه ناهمگون زمانی که در ابتدا پشتیبانی از حافظه مشترک ایجاد شد، در دسترس نبود.
    2. رابط یکنواخت – از آنجایی که OpenCL یک استاندارد باز است، اینتل بین فروشندگان پلتفرم محاسباتی ناهمگن سازگاری دارد. بنابراین، برای تخصیص و استفاده از حافظه اشتراکی، از رابطی مشابه معماری های دیگر فروشندگان برد استفاده می شود.

1.4 پیکربندی مجدد FPGA
برای SoC FPGA ها، CPU می تواند بدون ایجاد وقفه در عملکرد CPU، فابریک هسته FPGA را دوباره پیکربندی کند. بلوک سخت افزاری FPGA Manager که بر روی HPS قرار دارد و FPGA هسته پیکربندی مجدد را انجام می دهد. هسته لینوکس شامل درایوری است که دسترسی آسان به FPGA Manager را امکان پذیر می کند.

  • به view وضعیت هسته FPGA، دستور status cat /sys/class/fpga/fpga0/ را فراخوانی کنید.
    ابزار برنامه کاربردی Intel FPGA SDK برای OpenCL موجود با پلتفرم مرجع کیت توسعه SoC Cyclone V از این رابط برای برنامه ریزی FPGA استفاده می کند. هنگام برنامه ریزی مجدد یک هسته FPGA با یک CPU در حال اجرا، ابزار برنامه همه وظایف زیر را انجام می دهد:
    1. قبل از برنامه ریزی مجدد، همه پل های ارتباطی بین FPGA و HPS، هر دو پل H2F و LH2F را غیرفعال کنید.
    پس از اتمام برنامه ریزی مجدد، این پل ها را دوباره فعال کنید.
    توجه: سیستم OpenCL از پل FPGA-to-HPS (F2H) استفاده نمی کند. برای اطلاعات بیشتر به بخش رابط های HPS-FPGA در کتاب راهنمای دستگاه Cyclone V، جلد 3: راهنمای فنی مرجع سیستم پردازشگر سخت مراجعه کنید.
    2. مطمئن شوید که پیوند بین FPGA و کنترلر HPS DDR در طول برنامه ریزی مجدد غیرفعال است.
    3. مطمئن شوید که وقفه های FPGA در FPGA در حین برنامه ریزی مجدد غیرفعال هستند.
    همچنین به راننده اطلاع دهید تا هرگونه وقفه FPGA را در حین برنامه ریزی مجدد رد کند.

برای جزئیات بیشتر در مورد اجرای واقعی، با کد منبع ابزار برنامه مشورت کنید.

هشدار: پیکربندی کنترلر HPS DDR را زمانی که CPU در حال کار است تغییر ندهید.
انجام این کار ممکن است باعث یک خطای سیستم مرگبار شود زیرا ممکن است پیکربندی کنترلر DDR را هنگامی که تراکنش های حافظه برجسته از CPU وجود دارد تغییر دهید. این بدان معناست که وقتی CPU در حال اجرا است، نمی‌توانید هسته FPGA را با تصویری که از HPS DDR در پیکربندی متفاوتی استفاده می‌کند، دوباره برنامه‌ریزی کنید.
به یاد داشته باشید که سیستم OpenCL و طراحی مرجع طلایی سخت افزار موجود با مجموعه طراحی داخلی FPGA (EDS) اینتل، HPS DDR را در یک حالت 256 بیتی قرار می دهد.
بخش‌های سیستم CPU مانند پیش‌بینی‌کننده شاخه یا پیش‌فرض‌کننده جدول صفحه ممکن است دستورات DDR را صادر کنند، حتی زمانی که به نظر می‌رسد چیزی روی CPU در حال اجرا نیست.
بنابراین، زمان بوت تنها زمان امن برای تنظیم پیکربندی کنترلر HPS DDR است.
این همچنین به این معنی است که U-boot باید یک باینری خام داشته باشد file (.rbf) تصویر برای بارگیری در حافظه. در غیر این صورت، ممکن است HPS DDR را با پورت های استفاده نشده در FPGA فعال کرده و سپس پیکربندی پورت را تغییر دهید. به همین دلیل، درایور هسته OpenCL Linux دیگر منطق لازم برای تنظیم پیکربندی کنترلر HPS DDR را ندارد.
بسته SW3 دوگانه در خط (DIP) کیت توسعه SoC Cylone V شکل مورد انتظار تصویر .rbf را کنترل می کند (یعنی اینکه آیا file فشرده و/یا رمزگذاری شده است). C5soc، و طراحی مرجع سخت افزار طلایی موجود با SoC EDS، شامل تصاویر فشرده اما رمزگذاری نشده .rbf است. تنظیمات سوئیچ DIP SW3 که در راهنمای شروع به کار Intel FPGA SDK برای OpenCL Cyclone V SoC توضیح داده شده است با پیکربندی تصویر .rbf مطابقت دارد.

لینک های مرتبط

  • رابط های HPS-FPGA
  • پیکربندی سوئیچ های SW3

1.4.1 جزئیات معماری سیستم FPGA
پشتیبانی از پلتفرم مرجع کیت توسعه SoC Cyclone V بر اساس پلتفرم مرجع Stratix® V (s5_ref) است که با Intel FPGA SDK برای OpenCL در دسترس است.
سازماندهی کلی سیستم c5soc Qsys و درایور هسته بسیار شبیه به s5_ref است.
اجزای اصلی FPGA زیر در c5soc و s5_ref یکسان هستند:

  • مسدود کردن VERSION_ID
  • مکانیسم استراحت
  • تقسیم کننده بانک حافظه
  • رابط اسنوپ کش
  • ساعت هسته
  • بلوک های دسترسی ثبت (CRA) را کنترل کنید

1.5 ساختن تصویر کارت فلش SD
از آنجایی که Cyclone V SoC FPGA یک سیستم کامل روی یک تراشه است، شما مسئول ارائه تعریف کامل سیستم هستید. اینتل توصیه می کند که آن را در قالب یک تصویر فلش کارت SD تحویل دهید. Intel FPGA SDK برای کاربر OpenCL می تواند به سادگی تصویر را روی فلش کارت micro SD بنویسد و برد SoC FPGA برای استفاده آماده است.
تغییر تصویر کارت فلش SD موجود در صفحه 13
اینتل توصیه می کند که به سادگی تصویر موجود را با پلتفرم مرجع کیت توسعه SoC Cyclone V تغییر دهید. شما همچنین می توانید یک تصویر کارت فلش SD جدید ایجاد کنید.
ایجاد تصویر کارت فلش SD در صفحه 14
شما همچنین می توانید یک تصویر کارت فلش SD جدید ایجاد کنید.

1.5.1 تغییر تصویر کارت فلش SD موجود
اینتل توصیه می کند که به سادگی تصویر موجود با Cyclone V SoC را تغییر دهید
پلت فرم مرجع کیت توسعه. شما همچنین می توانید یک تصویر کارت فلش SD جدید ایجاد کنید.
تصویر c5soc linux_sd_card_image.tgz file در دایرکتوری ALTERAOCLSDKROOT/board/c5soc موجود است، جایی که ALTERAOCLSDKROOT به مسیر Intel FPGA SDK برای دایرکتوری نصب OpenCL اشاره می کند.

توجه: برای تغییر تصویر کارت فلش SD، باید امتیازات روت یا sudo داشته باشید.

  1. برای از حالت فشرده خارج کردن $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz file، دستور tar xvfzlinux_sd_card_image.tgz را اجرا کنید.
  2. کامپایل hello_world OpenCL exampطراحی با استفاده از پشتیبانی پلت فرم سفارشی شما. rbf. را تغییر نام دهید file که Intel FPGA SDK برای OpenCL Offline Compiler به صورت opencl.rbf ایجاد می کند و آن را روی پارتیشن fat32 در تصویر کارت فلش SD قرار می دهد.
    می توانید hello_world ex را دانلود کنیدampطراحی از OpenCL Design Exampصفحه les در Altera webسایت
  3. rbf را قرار دهید file به پارتیشن fat32 تصویر فلش کارت.
    توجه: پارتیشن fat32 باید شامل هر دو zImage باشد file و rbf file. بدون .rbf file، هنگام وارد کردن درایور یک خطای مرگبار رخ می دهد.
  4. پس از ایجاد تصویر کارت SD، با فراخوانی دستور زیر، آن را روی یک کارت micro SD بنویسید: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
  5. برای تست تصویر کارت فلش SD، کارهای زیر را انجام دهید:
    آ. فلش کارت micro SD را در برد SoC FPGA قرار دهید.
    ب برد را روشن کنید
    ج دستور aocl diagnose utility را فراخوانی کنید.

1.5.2 ایجاد تصویر کارت فلش SD
شما همچنین می توانید یک تصویر کارت فلش SD جدید ایجاد کنید. دستورالعمل های عمومی در مورد ساخت یک تصویر کارت فلش SD جدید و بازسازی تصویر کارت فلش SD موجود در صفحه GSRD v14.0.2 - کارت SD RocketBoards.org موجود است. webسایت
مراحل زیر روند ایجاد تصویر linux_sd_card_image.tgz از تصویر کارت فلش SD طراحی مرجع سیستم طلایی (GSRD) را شرح می دهد:
توجه:
برای ایجاد تصویر از تصویر c5soc، تمام وظایف قابل اجرا ذکر شده در این روش را انجام دهید.

  1. تصویر کارت فلش SD GSRD نسخه 14.0 را از Rocketboards.org دانلود و باز کنید.
  2. را سوار کنید file جدول تخصیص (fat32) و توسعه یافته file پارتیشن بندی سیستم (ext3) در این تصویر به عنوان دستگاه های حلقه بک. برای نصب پارتیشن مراحل زیر را انجام دهید:
    آ. شروع بایت پارتیشن درون تصویر را با فراخوانی /sbin/fdisk -lu image_ تعیین کنید.file فرمان
    برای مثالample، پارتیشن شماره 1 از نوع W95 FAT دارای افست بلوکی 2121728 است. با 512 بایت در هر بلوک، افست بایت 512 بایت x 2121728 = 1086324736 بایت است.
    ب یک دستگاه حلقه آزاد را شناسایی کنید (مثلاًample، /dev/loop0) با تایپ دستور losttup -f.
    ج با فرض اینکه /dev/loop0 دستگاه حلقه آزاد است، تصویر کارت فلش خود را با فراخوانی losttup /dev/loop0 image_ به دستگاه بلوک حلقه اختصاص دهید.file -0 دستور 1086324736.
    د دستگاه حلقه را با فراخوانی دستور mount /dev/loop0 /media/disk1 سوار کنید.
    درون تصویر file، /media/disk1 اکنون یک پارتیشن fat32 نصب شده است.
    ه. مراحل a تا d را برای پارتیشن ext3 تکرار کنید.
  3. نسخه Cyclone V SoC FPGA محیط اجرای Intel FPGA برای بسته OpenCL را از مرکز دانلود در Altera دانلود کنید. webسایت
    آ. روی دکمه دانلود در کنار نسخه نرم افزار Quartus Prime کلیک کنید.
    ب نسخه انتشار، سیستم عامل و روش دانلود را مشخص کنید.
    ج روی تب Additional Software کلیک کنید و برای دانلود Intel FPGA انتخاب کنید
    محیط زمان اجرا برای OpenCL Linux Cyclone V SoC TGZ.
    د بعد از دانلود aocl-rte- .arm32.tgz file، آن را از بسته بندی خارج کنید
    دایرکتوری که مالک آن هستید
  4. aocl-rte- بسته بندی نشده را قرار دهید دایرکتوری arm32. در پوشه /home/root/opencl_arm32_rte در پارتیشن ext3 تصویر file.
  5. پوشه(های) سخت افزاری پلتفرم سفارشی خود را حذف کنید و سپس پلتفرم سفارشی را در زیر شاخه برد /home/root/ opencl_arm32_rte قرار دهید.
  6. init_opencl.sh را ایجاد کنید file در فهرست /home/root با محتوای زیر: صادرات ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte صادرات AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/ صادرات PATH=$ALTERAOCLSDKROOT/bin:$PATH صادرات LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
    کاربر SDK دستور source ./init_opencl.sh را برای بارگیری متغیرهای محیطی و درایور هسته Linux OpenCL اجرا می کند.
  7. اگر نیاز به آپدیت پیش بارگیری دارید، DTS files یا هسته لینوکس، به کامپایلر arm-linux-gnueabihf-gcc از SoC EDS نیاز دارید. دستورالعمل های ذکر شده در راهنمای کاربر Intel SoC FPGA Embedded Design Suite را برای دریافت نرم افزار، کامپایل مجدد و به روز رسانی مربوطه دنبال کنید. fileروی پارتیشن fat32 نصب شده است.
    توجه: اگر پلتفرم سفارشی شما کاربردهای پین متفاوتی با موارد موجود در c5soc داشته باشد، به احتمال زیاد نیاز به آپدیت پیش بارگذاری وجود دارد.
    به یاد داشته باشید: اگر هسته لینوکس را دوباره کامپایل می کنید، درایور هسته لینوکس را با همان منبع هسته لینوکس دوباره کامپایل کنید. fileس اگر بین درایور هسته لینوکس و هسته لینوکس عدم تطابق وجود داشته باشد، درایور بارگیری نمی شود. همچنین باید CMA را فعال کنید.
    برای اطلاعات بیشتر به کامپایل مجدد هسته لینوکس مراجعه کنید.
  8. کامپایل hello_world OpenCL exampطراحی با استفاده از پشتیبانی پلت فرم سفارشی شما. rbf. را تغییر نام دهید file که Intel FPGA SDK برای OpenCL Offline Compiler به صورت opencl.rbf ایجاد می کند و آن را روی پارتیشن fat32 در تصویر کارت فلش SD قرار می دهد.
    می توانید hello_world ex را دانلود کنیدampطراحی از OpenCL Design Exampصفحه les در Altera webسایت
    9. پس از ذخیره تمام موارد لازم fileروی تصویر فلش کارت، دستورات زیر را فراخوانی کنید:
    آ. همگام سازی
    ب /media/disk1 را unmount کنید
    ج باز کردن جایی که نام دایرکتوری است که برای نصب پارتیشن ext3 در 3 در صفحه 3 استفاده می کنید (مثلاًample، /media/disk2).
    د losttup -d /dev/loop0
    ه. losttup -d /dev/loop1
  9. تصویر فلش کارت SD را با فراخوانی دستور زیر فشرده کنید: tar cvfz .tgz linux_sd_card_image
  10. را تحویل دهید tgz file داخل دایرکتوری ریشه پلتفرم سفارشی شما.
  11. برای تست تصویر کارت فلش SD، کارهای زیر را انجام دهید:
    آ. تصویر فشرده نشده به دست آمده را روی فلش کارت micro SD بنویسید.
    ب فلش کارت micro SD را در برد SoC FPGA قرار دهید.
    ج برد را روشن کنید
    د دستور aocl diagnose utility را فراخوانی کنید.

لینک های مرتبط

  • راهنمای کاربر اینتل SoC FPGA Embedded Design Suite
  • OpenCL Design Exampصفحه les در Altera webسایت
  • کامپایل مجدد هسته لینوکس در صفحه 16
    برای فعال کردن CMA، ابتدا باید هسته لینوکس را دوباره کامپایل کنید.
  • استعلام نام دستگاه برد FPGA شما (تشخیص)

1.6 کامپایل هسته لینوکس برای Cyclone V SoC FPGA
قبل از اجرای برنامه های OpenCL بر روی برد Cyclone V SoC FPGA، باید منبع هسته لینوکس را کامپایل کنید و درایور هسته Linux OpenCL را کامپایل و نصب کنید.

  1. کامپایل مجدد هسته لینوکس در صفحه 16
    برای فعال کردن CMA، ابتدا باید هسته لینوکس را دوباره کامپایل کنید.
  2. کامپایل و نصب درایور هسته لینوکس OpenCL در صفحه 17 درایور هسته لینوکس OpenCL را در برابر منبع هسته کامپایل شده کامپایل کنید.

1.6.1 کامپایل مجدد هسته لینوکس
برای فعال کردن CMA، ابتدا باید هسته لینوکس را دوباره کامپایل کنید.

  1. روی پیوند GSRD v14.0 – Compiling Linux در صفحه منابع RocketBoards.org کلیک کنید. webسایتی برای دسترسی به دستورالعمل های دانلود و بازسازی کد منبع هسته لینوکس.
    برای استفاده با ™ Intel FPGA SDK برای OpenCL، socfpga-3.13-rel14.0 را به عنوان .
  2. توجه: فرآیند ساخت، arch/arm/configs/socfpga_defconfig را ایجاد می‌کند. file. این file تنظیمات پیکربندی پیش فرض socfpga را مشخص می کند.
    خطوط زیر را به پایین arch/arm/configs/socfpga_defconfig اضافه کنید file.
    CONFIG_MEMORY_ISOLATION=y
    CONFIG_CMA=y
    CONFIG_DMA_CMA=y
    CONFIG_CMA_DEBUG=y
    CONFIG_CMA_SIZE_MBYTES=512
    CONFIG_CMA_SIZE_SEL_MBYTES=y
    CONFIG_CMA_ALIGNMENT=8
    CONFIG_CMA_AREAS=7
    مقدار پیکربندی CONFIG_CMA_SIZE_MBYTES حد بالایی را برای تعداد کل حافظه های فیزیکی به هم پیوسته موجود تعیین می کند. اگر به حافظه بیشتری نیاز دارید، می توانید این مقدار را افزایش دهید.
  3. توجه: مجموع حافظه فیزیکی موجود برای پردازنده ARM روی برد SoC FPGA 1 گیگابایت است. اینتل توصیه نمی کند که مدیر CMA را نزدیک به 1 گیگابایت تنظیم کنید.
  4. دستور make mrproper را اجرا کنید تا پیکربندی فعلی پاک شود.
  5. دستور make ARCH=arm socfpga_deconfig را اجرا کنید.
    ARCH=arm نشان می دهد که می خواهید معماری ARM را پیکربندی کنید.
    socfpga_defconfig نشان می دهد که می خواهید از پیکربندی پیش فرض socfpga استفاده کنید.
  6. دستور export CROSS_COMPILE=arm-linux-gnueabihf- را اجرا کنید.
    این دستور متغیر محیطی CROSS_COMPILE را برای تعیین پیشوند زنجیره ابزار مورد نظر تنظیم می کند.
  7. دستور make ARCH=arm zImage را اجرا کنید. تصویر حاصل در arch/arm/boot/zImage موجود است file.
  8. zImage را قرار دهید file به پارتیشن fat32 تصویر فلش کارت. برای دستورالعمل های دقیق، به راهنمای کاربر GSRD ویژه Cyclone V SoC FPGA در Rocketboards.org مراجعه کنید.
  9. توجه: برای درج صحیح درایور هسته لینوکس OpenCL، ابتدا یک SDKgenerated.rbf بارگیری کنید. file روی FPGA
    برای ایجاد .rbf file، یک طراحی SDK را کامپایل کنیدampبا پلتفرم مرجع کیت توسعه SoC Cyclone V به عنوان پلتفرم سفارشی مورد نظر.
    9. rbf را قرار دهید file به پارتیشن fat32 تصویر فلش کارت.
    توجه: پارتیشن fat32 باید دارای هر دو zImage باشد file و rbf file. بدون .rbf file، هنگام وارد کردن درایور یک خطای مرگبار رخ می دهد.
  10. کارت micro SD برنامه ریزی شده را که حاوی تصویر کارت SD است که قبلاً تغییر داده یا ایجاد کرده اید را در کیت توسعه SoC Cyclone V قرار دهید و سپس برد SoC FPGA را روشن کنید.
  11. با اجرای دستور uname -r نسخه هسته لینوکس نصب شده را تأیید کنید.
  12. برای تأیید اینکه CMA را با موفقیت در هسته فعال کرده اید، با روشن شدن برد SoC FPGA، دستور grep init_cma /proc/kallsyms را اجرا کنید.
    اگر خروجی خالی نباشد، CMA فعال می شود.
  13. برای استفاده از هسته لینوکس دوباره کامپایل شده با SDK، درایور هسته لینوکس را کامپایل و نصب کنید.

لینک های مرتبط

  • راهنمای کاربر طراحی مرجع سیستم طلایی (GSRD).
  • ساخت تصویر کارت فلش SD در صفحه 13
    از آنجایی که Cyclone V SoC FPGA یک سیستم کامل روی یک تراشه است، شما مسئول ارائه تعریف کامل سیستم هستید.

1.6.2 کامپایل و نصب درایور هسته لینوکس OpenCL
درایور هسته OpenCL Linux را در مقابل منبع هسته کامپایل شده کامپایل کنید.

منبع درایور در نسخه Cyclone V SoC FPGA محیط اجرای اینتل FPGA برای OpenCL موجود است. علاوه بر این، مطمئن شوید که یک Intel FPGA SDK برای .rbf تولید شده توسط OpenCL بارگیری کرده اید. file به FPGA برای جلوگیری از نصب نادرست ماژول هسته لینوکس.

  1. نسخه Cyclone V SoC FPGA محیط اجرای Intel FPGA برای بسته OpenCL را از مرکز دانلود در Altera دانلود کنید. webسایت
    آ. روی دکمه دانلود در کنار نسخه نرم افزار Quartus Prime کلیک کنید.
    ب نسخه انتشار، سیستم عامل و روش دانلود را مشخص کنید.
    ج روی تب Additional Software کلیک کنید و برای دانلود Intel FPGA انتخاب کنید
    محیط زمان اجرا برای OpenCL Linux Cyclone V SoC TGZ.
    د بعد از دانلود aocl-rte- .arm32.tgz file، آن را از بسته بندی خارج کنید
    دایرکتوری که مالک آن هستید
    منبع درایور در aocl-rte- است دایرکتوری درایور .arm32/board/c5soc/.
  2. برای کامپایل مجدد درایور هسته لینوکس OpenCL، مقدار KDIR را در Make درایور تنظیم کنیدfile به دایرکتوری حاوی منبع هسته لینوکس files.
  3. دستور export CROSS_COMPILE=arm-linux-gnueabihf- را برای نشان دادن پیشوند زنجیره ابزار خود اجرا کنید.
  4. دستور make clean را اجرا کنید.
  5. برای ایجاد aclsoc_drv.ko دستور make را اجرا کنید file.
  6. دایرکتوری opencl_arm32_rte را به برد Cyclone V SoC FPGA منتقل کنید.
    اجرای scp -r root@your-ipaddress: دستور محیط اجرا را در پوشه/home/root قرار می دهد.
  7. اسکریپت init_opencl.sh را که هنگام ساختن کارت SD ایجاد کردید، اجرا کنید.
  8.  دستور aocl diagnose utility را فراخوانی کنید. پس از اجرای موفقیت آمیز init_opencl.sh، ابزار تشخیص یک نتیجه مثبت را برمی گرداند.

1.7 مسائل شناخته شده
در حال حاضر، محدودیت‌های خاصی در استفاده از Intel FPGA SDK برای OpenCL با پلتفرم مرجع کیت توسعه SoC Cyclone V وجود دارد.

  1. شما نمی توانید نام فروشنده و تابلو را که توسط رشته های CL_DEVICE_VENDOR و CL_DEVICE_NAME فراخوانی clGetDeviceInfo() گزارش شده است لغو کنید.
  2. اگر میزبان حافظه ثابت را در سیستم DDR مشترک (یعنی HPS DDR) اختصاص دهد و پس از اجرای هسته، حافظه ثابت را تغییر دهد، ممکن است داده های موجود در حافظه قدیمی شوند. این مشکل به این دلیل به وجود می آید که هسته FPGA نمی تواند تراکنش های CPU به HPS DDR را جاسوسی کند.
    برای جلوگیری از دسترسی اجرای هسته بعدی به داده های قدیمی، یکی از راه حل های زیر را اجرا کنید:
    • حافظه ثابت را پس از مقداردهی اولیه تغییر ندهید.
    • اگر به چندین مجموعه داده __constant نیاز دارید، چندین بافر حافظه ثابت ایجاد کنید.
    • در صورت وجود، حافظه ثابت را در FPGA DDR روی برد شتاب دهنده خود اختصاص دهید.
  3. ابزار SDK در ARM فقط از دستورات برنامه و تشخیص ابزار پشتیبانی می کند.
    دستورات فلش، نصب و حذف نصب به دلایل زیر برای کیت توسعه SoC Cyclone V قابل اجرا نیستند:
    آ. ابزار نصب باید درایور هسته لینوکس aclsoc_drv را کامپایل کرده و آن را در SoC FPGA فعال کند. ماشین توسعه باید کامپایل را انجام دهد. با این حال، از قبل حاوی منابع هسته لینوکس برای SoC FPGA است. منابع هسته لینوکس برای ماشین توسعه با منابع SoC FPGA متفاوت است. مکان منابع هسته لینوکس برای SoC FPGA احتمالاً برای کاربر SDK ناشناخته است. به طور مشابه، ابزار حذف برای کیت توسعه SoC Cyclone V نیز در دسترس نیست.
    همچنین، تحویل aclsoc_drv به برد SoC چالش برانگیز است زیرا توزیع پیش‌فرض کیت توسعه SoC Cyclone V شامل هسته لینوکس نیست. files یا کامپایلر GNU Compiler Collection (GCC).
    ب ابزار فلش نیاز به قرار دادن یک .rbf دارد file طراحی OpenCL روی پارتیشن FAT32 کارت فلش micro SD. در حال حاضر، هنگامی که کاربر SDK برد را روشن می کند، این پارتیشن نصب نمی شود. بنابراین بهترین راه برای به روز رسانی پارتیشن استفاده از فلش کارت خوان و دستگاه توسعه است.
  4. هنگام جابجایی بین Intel FPGA SDK برای OpenCL Offline Compiler قابل اجرا files (aocx.) که با انواع مختلف برد مطابقت دارند (یعنی c5soc و c5soc_sharedonly)، باید از ابزار برنامه SDK برای بارگیری aocx. استفاده کنید. file برای نوع تخته جدید برای اولین بار. اگر به سادگی برنامه میزبان را با استفاده از یک نوع برد جدید اجرا کنید، اما FPGA حاوی تصویر یک نوع برد دیگر باشد، ممکن است یک خطای مرگبار رخ دهد.
  5. qxp file تخصیص پارتیشن رابط را شامل نمی شود زیرا نرم افزار Quartus Prime به طور مداوم الزامات زمان بندی این پارتیشن را برآورده می کند.
  6. وقتی برد را روشن می کنید، آدرس کنترل دسترسی رسانه (MAC) آن روی یک عدد تصادفی تنظیم می شود. اگر خط مشی LAN شما این رفتار را مجاز نمی داند، آدرس MAC را با انجام کارهای زیر تنظیم کنید:
    آ. در طول روشن شدن U-Boot، هر کلیدی را فشار دهید تا وارد خط فرمان U-Boot شوید.
    ب setenv ethaddr 00:07:ed:00:00:03 را در خط فرمان تایپ کنید.
    شما می توانید هر آدرس MAC را انتخاب کنید.
    ج دستور saveenv را تایپ کنید.
    د برد را مجدد راه اندازی کنید.

1.8 تاریخچه ویرایش سند
جدول 1.
تاریخچه ویرایش سند Intel FPGA SDK برای OpenCL Cyclone V SoC
راهنمای انتقال پلت فرم مرجع کیت توسعه

تاریخ نسخه تغییرات
مه-17 2017.05.08 • انتشار تعمیر و نگهداری.
اکتبر 2016 2016.10.31 • Altera SDK برای OpenCL به Intel FPGA SDK برای OpenCL تغییر نام داد.
• کامپایلر آفلاین Altera به Intel FPGA SDK برای کامپایلر آفلاین OpenCL تغییر نام داد.
مه-16 2016.05.02 • دستورالعمل های اصلاح شده در ساخت و اصلاح تصویر کارت فلش SD.
• دستورالعمل های اصلاح شده در مورد کامپایل مجدد هسته لینوکس و درایور هسته لینوکس OpenCL.
نوامبر-15 2015.11.02 • انتشار تعمیر و نگهداری و تغییر نمونه های Quartus II به Quartus Prime.
مه-15 15.0.0 • در پیکربندی مجدد FPGA، دستورالعمل برنامه ریزی مجدد هسته FPGA را حذف کرد
با یک . تصویر rbf با فراخوانی گربه fileنام>. rbf
> دستور /dev/ fpga0 زیرا این روش توصیه نمی شود.
دسامبر -14 14.1.0 •نام سند را به Altera Cyclone V SoC Development Kit Reference Platform Porting Guide تغییر نام داد.
• ابزار برنامه ریزی مجدد به برنامه aocl به روز شدfileدستور نام>.aocx utility.
•به روز رسانی ابزار تشخیصی به تشخیص aocl و aocl diagnost دستور utility
•روش را در بخش Porting the Reference Platform to Your SoC Board به‌روزرسانی کرد تا شامل دستورالعمل‌هایی در مورد انتقال و اصلاح پارتیشن برد c5soc برای ایجاد یک پارتیشن تمیز زمان‌بندی برای جریان بسته شدن زمان‌بندی تضمین شده باشد.
•موضوع به روز رسانی پلتفرم مرجع پورت شده را برای تشریح مراحل انجام وظایف زیر درج کرد:
1. به استثنای بلوک سیستم پردازنده سخت (HPS) در پارتیشن برد
2.به روز رسانی تصویر کارت فلش SD
• به روز رسانی Build an SD Flash Card Image بخش. توصیه می شود از نسخه 14.0 تصویر Golden System Reference Design (GSRD) به عنوان نقطه شروع به جای تصویر موجود با SoC Embedded Design Suite (EDS) استفاده کنید.
•بخش کامپایل مجدد هسته لینوکس و درایور کرنل لینوکس OpenCL را به روز کرد:
1.دستورالعملی برای تنظیم متغیر CROSS COMPILE اضافه شد.
2. دستوری را که اجرا می کنید تغییر داد تا تأیید شود که CMA با موفقیت فعال شده است.
جولای-14 14.0.0 •انتشار اولیه.

اسناد / منابع

Intel FPGA SDK برای OpenCL [pdfراهنمای کاربر
FPGA SDK برای OpenCL، FPGA SDK، SDK برای OpenCL، SDK

مراجع

نظر بدهید

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی مشخص شده اند *