FPGA SDK ສໍາລັບ OpenCL
ຄູ່ມືຜູ້ໃຊ້
UG-OCL009
2017.05.08
ອັບເດດຫຼ້າສຸດສໍາລັບ Intel® Quartus® Prime Design Suite: 17.0
ຈອງ
ສົ່ງຄຳຕິຊົມ
Intel® FPGA SDK ສໍາລັບ OpenCL™ Intel® Cyclone®V SoC Development Kit Reference Platform Porting Guide
V SoC Development Kit Reference Platform Porting Guide ອະທິບາຍການອອກແບບຮາດແວ ແລະຊອບແວຂອງ Intel Cyclone V SoC Development Kit Reference Platform (c5soc) ເພື່ອໃຊ້ກັບ Intel Software Development Kit (SDK) ສໍາລັບ OpenCL The Intel ® FPGA SDK ສໍາລັບ OpenCL™ Intel Cyclone ® . ກ່ອນທີ່ທ່ານຈະເລີ່ມຕົ້ນ, Intel ແນະນໍາໃຫ້ທ່ານຄຸ້ນເຄີຍກັບເນື້ອໃນຂອງເອກະສານຕໍ່ໄປນີ້:
- Intel FPGA SDK ສໍາລັບ OpenCLIntel Cyclone V SoC ຄູ່ມືການເລີ່ມຕົ້ນ
- Intel FPGA SDK ສໍາລັບ OpenCL Custom Platform Toolkit ຄູ່ມືຜູ້ໃຊ້
- Cyclone V Device Handbook, ເຫຼັ້ມ 3: ຄູ່ມືການອ້າງອິງດ້ານວິຊາການລະບົບ Hard Processor ນອກຈາກນັ້ນ, ໃຫ້ອ້າງອີງເຖິງ Cyclone V SoC Development Kit ແລະ SoC Embedded Design Suite page ຂອງ Altera webເວັບໄຊສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ. 1 2
ເອົາໃຈໃສ່: Intel ສົມມຸດວ່າທ່ານມີຄວາມເຂົ້າໃຈຢ່າງເລິກເຊິ່ງກ່ຽວກັບ Intel FPGA SDK ສໍາລັບຄູ່ມືຜູ້ໃຊ້ OpenCL Custom Platform Toolkit. Cyclone V SoC Development Kit Reference Platform Porting Guide ບໍ່ໄດ້ອະທິບາຍການນຳໃຊ້ເຄື່ອງມືຂອງ SDK's Custom Platform Toolkit ເພື່ອປະຕິບັດ Custom Platform ສໍາລັບ Cyclone V SoC Development Kit. ມັນພຽງແຕ່ອະທິບາຍຄວາມແຕກຕ່າງລະຫວ່າງການສະຫນັບສະຫນູນ SDK ໃນ Cyclone V SoC Development Kit ແລະ Intel FPGA SDK ທົ່ວໄປສໍາລັບ OpenCL Custom Platform.
ການເຊື່ອມຕໍ່ທີ່ກ່ຽວຂ້ອງ
- Intel FPGA SDK ສໍາລັບ OpenCL Cyclone V SoC ຄູ່ມືການເລີ່ມຕົ້ນ
- Intel FPGA SDK ສໍາລັບ OpenCL Custom Platform Toolkit ຄູ່ມືຜູ້ໃຊ້
- Cyclone V Device Handbook, ເຫຼັ້ມທີ 3: ຄູ່ມືການອ້າງອີງທາງເທັກນິກຂອງລະບົບປະມວນຜົນແຂງ
- ຊຸດພັດທະນາ Cyclone V SoC ແລະໜ້າ SoC Embedded Design Suite ໃນ Altera webເວັບໄຊ
- OpenCL ແລະໂລໂກ້ OpenCL ແມ່ນເຄື່ອງໝາຍການຄ້າທີ່ Apple Inc. ນຳໃຊ້ໂດຍການອະນຸຍາດຈາກ Khronos Group™.
- Intel FPGA SDK ສໍາລັບ OpenCL ແມ່ນອີງໃສ່ການເຜີຍແຜ່ Khronos Specification, ແລະໄດ້ຜ່ານຂະບວນການທົດສອບຄວາມສອດຄ່ອງຂອງ Khronos. ສະຖານະການສອດຄ່ອງໃນປະຈຸບັນສາມາດພົບໄດ້ທີ່ www.khronos.org/conformance.
ບໍລິສັດ Intel. ສະຫງວນລິຂະສິດທັງໝົດ. Intel, the Intel, the Intel logo, Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus ແລະ Stratix ຄໍາແລະໂລໂກ້ແມ່ນເຄື່ອງຫມາຍການຄ້າຂອງ Intel Corporation ຫຼືບໍລິສັດຍ່ອຍໃນສະຫະລັດແລະ / ຫຼືປະເທດອື່ນໆ. Intel ຮັບປະກັນປະສິດທິພາບຂອງຜະລິດຕະພັນ FPGA ແລະ semiconductor ຂອງຕົນຕໍ່ກັບຂໍ້ມູນຈໍາເພາະໃນປະຈຸບັນຕາມການຮັບປະກັນມາດຕະຖານຂອງ Intel, ແຕ່ສະຫງວນສິດທີ່ຈະປ່ຽນແປງຜະລິດຕະພັນແລະການບໍລິການໄດ້ທຸກເວລາໂດຍບໍ່ມີການແຈ້ງການ. Intel ຖືວ່າບໍ່ມີຄວາມຮັບຜິດຊອບ ຫຼືຄວາມຮັບຜິດຊອບທີ່ເກີດຂຶ້ນຈາກແອັບພລິເຄຊັນ ຫຼືການນຳໃຊ້ຂໍ້ມູນ, ຜະລິດຕະພັນ, ຫຼືບໍລິການໃດໜຶ່ງທີ່ອະທິບາຍໄວ້ໃນນີ້ ຍົກເວັ້ນຕາມທີ່ໄດ້ຕົກລົງຢ່າງຈະແຈ້ງໃນລາຍລັກອັກສອນໂດຍ Intel. ລູກຄ້າ Intel ໄດ້ຖືກແນະນໍາໃຫ້ໄດ້ຮັບສະບັບຫລ້າສຸດຂອງຂໍ້ມູນຈໍາເພາະຂອງອຸປະກອນກ່ອນທີ່ຈະອີງໃສ່ຂໍ້ມູນໃດໆທີ່ຈັດພີມມາແລະກ່ອນທີ່ຈະວາງຄໍາສັ່ງສໍາລັບຜະລິດຕະພັນຫຼືການບໍລິການ.
*ຊື່ ແລະຍີ່ຫໍ້ອື່ນໆອາດຈະຖືກອ້າງວ່າເປັນຊັບສິນຂອງຄົນອື່ນ.
1.1.1 Cyclone V SoC Development Kit Reference Board Variants
Intel FPGA SDK ສໍາລັບ OpenCL Cyclone V SoC Development Kit Reference Platform ປະກອບມີສອງຕົວແປ.
- ກະດານ c5soc
ກະດານເລີ່ມຕົ້ນນີ້ສະຫນອງການເຂົ້າເຖິງສອງທະນາຄານຫນ່ວຍຄວາມຈໍາ DDR. HPS DDR ແມ່ນສາມາດເຂົ້າເຖິງໄດ້ໂດຍທັງ FPGA ແລະ CPU. FPGA DDR ແມ່ນສາມາດເຂົ້າເຖິງໄດ້ໂດຍ FPGA ເທົ່ານັ້ນ. - c5soc_sharedonly ກະດານ
ຕົວປ່ຽນແປງກະດານນີ້ມີພຽງແຕ່ການເຊື່ອມຕໍ່ HPS DDR. FPGA DDR ບໍ່ສາມາດເຂົ້າເຖິງໄດ້. ຕົວປ່ຽນແປງຂອງກະດານນີ້ແມ່ນມີປະສິດທິພາບຫຼາຍກວ່າເກົ່າເພາະວ່າຮາດແວຫນ້ອຍແມ່ນມີຄວາມຈໍາເປັນເພື່ອສະຫນັບສະຫນູນທະນາຄານຫນ່ວຍຄວາມຈໍາ DDR ຫນຶ່ງ. ກະດານ c5soc_sharedonly ຍັງເປັນແພລະຕະຟອມການສ້າງຕົວແບບທີ່ດີສໍາລັບກະດານການຜະລິດສຸດທ້າຍທີ່ມີທະນາຄານຫນ່ວຍຄວາມຈໍາ DDR ດຽວ.
ເພື່ອແນໃສ່ຕົວແປຂອງກະດານນີ້ເມື່ອລວບລວມແກ່ນ OpenCL ຂອງທ່ານ, ປະກອບມີທາງເລືອກ -board c5soc_sharedonly ໃນຄໍາສັ່ງ aoc ຂອງທ່ານ.
ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບ -board ທາງເລືອກຂອງຄໍາສັ່ງ aoc, ອ້າງເຖິງ Intel FPGA SDK ສໍາລັບ OpenCL Programming Guide.
ການເຊື່ອມຕໍ່ທີ່ກ່ຽວຂ້ອງ
ການລວບລວມ Kernel ສໍາລັບຄະນະກໍາມະການ FPGA ສະເພາະ (–board )
1.1.2 ເນື້ອໃນເອກະສານອ້າງອີງຊຸດການພັດທະນາ Cyclone V SoC
ແພລະຕະຟອມອ້າງອີງຊຸດການພັດທະນາ Cyclone V SoC ປະກອບດ້ວຍດັ່ງຕໍ່ໄປນີ້ files ແລະລາຍຊື່:
File ຫຼື Directory | ລາຍລະອຽດ |
board_env.xml | eXtensible Markup Language (XML) file ທີ່ອະທິບາຍ c5soc ກັບ Intel FPGA SDK ສໍາລັບ OpenCL. |
linux_sd_card_image.tgz | ບີບອັດຮູບພາບ SD flash card file ທີ່ບັນຈຸທຸກຢ່າງທີ່ຜູ້ໃຊ້ SDK ຕ້ອງການໃຊ້ Cyclone V SoC Development Kit ກັບ SDK. |
ແຂນ32 | ໄດເລກະທໍລີທີ່ປະກອບດ້ວຍຕໍ່ໄປນີ້: |
1.1.3 ລັກສະນະທີ່ກ່ຽວຂ້ອງຂອງຊຸດພັດທະນາ Cyclone V SoC
ບັນຊີລາຍຊື່ຕໍ່ໄປນີ້ຊີ້ໃຫ້ເຫັນອົງປະກອບຂອງ Cyclone V SoC Development Kit ແລະຄຸນສົມບັດທີ່ກ່ຽວຂ້ອງກັບ Intel FPGA SDK ສໍາລັບ OpenCL:
- CPU Dual-core ARM Cortex-A9 ແລ່ນ Linux 32-bit.
- Advanced eXtensible Interface (AXI) bus ລະຫວ່າງ HPS ແລະ FPGA core fabric.
- ສອງຕົວຄວບຄຸມຄວາມຊົງຈຳ DDR ແຂງ, ແຕ່ລະອັນເຊື່ອມຕໍ່ຫາ 1 GB DDR3 SDRAM.
— ຫນຶ່ງຕົວຄວບຄຸມ DDR ແມ່ນສາມາດເຂົ້າເຖິງກັບຫຼັກ FPGA ເທົ່ານັ້ນ (ນັ້ນແມ່ນ, FPGA DDR).
— ຕົວຄວບຄຸມ DDR ອື່ນໆແມ່ນສາມາດເຂົ້າເຖິງໄດ້ທັງ HPS ແລະ FPGA (ນັ້ນຄື HPS DDR). ຕົວຄວບຄຸມທີ່ໃຊ້ຮ່ວມກັນນີ້ອະນຸຍາດໃຫ້ແບ່ງປັນຄວາມຊົງຈໍາໄດ້ຟຣີລະຫວ່າງ CPU ແລະຫຼັກ FPGA. - CPU ສາມາດປັບຄ່າ FPGA core fabric ໄດ້.
1.1.3.1 Cyclone V SoC Development Kit Reference Platform Design Goals and Decisions Intel ອີງໃສ່ການປະຕິບັດຂອງ Cyclone V SoC Development Kit Reference Platform ກ່ຽວກັບເປົ້າໝາຍການອອກແບບຫຼາຍອັນ ແລະການຕັດສິນໃຈ. Intel ແນະນໍາໃຫ້ທ່ານພິຈາລະນາເປົ້າຫມາຍແລະການຕັດສິນໃຈເຫຼົ່ານີ້ເມື່ອທ່ານເອົາແພລະຕະຟອມອ້າງອີງນີ້ໄປຫາກະດານ SoC FPGA ຂອງທ່ານ.
ຂ້າງລຸ່ມນີ້ແມ່ນເປົ້າຫມາຍການອອກແບບ c5soc:
- ໃຫ້ແບນວິດສູງສຸດທີ່ເປັນໄປໄດ້ລະຫວ່າງແກ່ນໃນ FPGA ແລະລະບົບຄວາມຊົງຈໍາ DDR.
- ໃຫ້ແນ່ໃຈວ່າການຄໍານວນໃນ FPGA (ນັ້ນແມ່ນ, OpenCL kernels) ບໍ່ແຊກແຊງກັບວຽກງານ CPU ອື່ນໆທີ່ອາດຈະລວມທັງການບໍລິການ peripherals.
- ປ່ອຍຊັບພະຍາກອນ FPGA ໃຫ້ຫຼາຍເທົ່າທີ່ເປັນໄປໄດ້ສໍາລັບການຄໍານວນ kernel ແທນທີ່ຈະເປັນອົງປະກອບການໂຕ້ຕອບ.
ຂ້າງລຸ່ມນີ້ແມ່ນການຕັດສິນໃຈອອກແບບລະດັບສູງທີ່ເປັນຜົນສະທ້ອນໂດຍກົງຂອງເປົ້າຫມາຍການອອກແບບຂອງ Intel:
- ເວທີການອ້າງອິງພຽງແຕ່ໃຊ້ຕົວຄວບຄຸມຄວາມຊົງຈໍາ DDR ຍາກທີ່ມີການຕັ້ງຄ່າທີ່ກວ້າງຂວາງທີ່ສຸດ (256 ບິດ).
- FPGA ຕິດຕໍ່ສື່ສານກັບຕົວຄວບຄຸມຫນ່ວຍຄວາມຈໍາ HPS DDR ໂດຍກົງ, ໂດຍບໍ່ມີການກ່ຽວຂ້ອງກັບລົດເມ AXI ແລະສະຫຼັບ L3 ພາຍໃນ HPS. ການສື່ສານໂດຍກົງໃຫ້ແບນວິດທີ່ດີທີ່ສຸດທີ່ເປັນໄປໄດ້ກັບ DDR, ແລະຮັກສາການຄິດໄລ່ FPGA ຈາກການແຊກແຊງການສື່ສານລະຫວ່າງ CPU ແລະອຸປະກອນຂ້າງຄຽງ.
- ການເຂົ້າເຖິງຄວາມຊົງຈໍາໂດຍກົງກະແຈກກະຈາຍ (SG-DMA) ບໍ່ແມ່ນສ່ວນຫນຶ່ງຂອງເຫດຜົນຂອງການໂຕ້ຕອບ FPGA. ແທນທີ່ຈະໂອນຂໍ້ມູນຈໍານວນຫຼວງຫຼາຍລະຫວ່າງລະບົບຄວາມຊົງຈໍາ DDR, ເກັບຮັກສາຂໍ້ມູນໄວ້ໃນ HPS DDR ທີ່ແບ່ງປັນ. ການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາ CPU ໂດຍກົງໂດຍ FPGA ແມ່ນມີປະສິດທິພາບຫຼາຍກ່ວາ DMA. ມັນຊ່ວຍປະຢັດຊັບພະຍາກອນຂອງຮາດແວ (ນັ້ນແມ່ນ, ພື້ນທີ່ FPGA) ແລະເຮັດໃຫ້ໄດເວີ Linux kernel ງ່າຍຂຶ້ນ.
ຄຳເຕືອນ: ການໂອນຄວາມຈໍາລະຫວ່າງລະບົບ HPS DDR ທີ່ໃຊ້ຮ່ວມກັນແລະລະບົບ DDR ທີ່ສາມາດເຂົ້າເຖິງໄດ້ພຽງແຕ່ FPGA ແມ່ນຊ້າຫຼາຍ. ຖ້າທ່ານເລືອກທີ່ຈະ
ການຖ່າຍໂອນຄວາມຊົງຈໍາໃນລັກສະນະນີ້, ໃຊ້ມັນສໍາລັບການຈໍານວນຂະຫນາດນ້ອຍຫຼາຍຂອງຂໍ້ມູນເທົ່ານັ້ນ. - ເຈົ້າພາບແລະອຸປະກອນປະຕິບັດການໂອນຂໍ້ມູນທີ່ບໍ່ແມ່ນ DMA ລະຫວ່າງກັນແລະກັນຜ່ານຂົວ HPS-to-FPGA (H2F), ໂດຍໃຊ້ພຽງແຕ່ພອດ 32 ບິດດຽວ. ເຫດຜົນແມ່ນ, ໂດຍບໍ່ມີ DMA, Linux kernel ສາມາດອອກຄໍາຮ້ອງຂໍການອ່ານຫຼືຂຽນ 32-bit ດຽວ, ດັ່ງນັ້ນມັນບໍ່ຈໍາເປັນທີ່ຈະມີການເຊື່ອມຕໍ່ທີ່ກວ້າງກວ່າ.
- ເຈົ້າພາບສົ່ງສັນຍານການຄວບຄຸມໄປຫາອຸປະກອນໂດຍຜ່ານຂົວ H2F (LH2F) ທີ່ມີນ້ໍາຫນັກເບົາ.
ເນື່ອງຈາກວ່າສັນຍານການຄວບຄຸມຈາກແມ່ຂ່າຍໄປຫາອຸປະກອນແມ່ນສັນຍານແບນວິດຕ່ໍາ, ຂົວ LH2F ແມ່ນເຫມາະສົມສໍາລັບວຽກງານ.
1.2 Porting the Reference Platform to your SoC FPGA Board
ເພື່ອເອົາແພລະຕະຟອມອ້າງອີງຊຸດການພັດທະນາ Cyclone V SoC ໄປຫາກະດານ SoC FPGA ຂອງທ່ານ, ປະຕິບັດວຽກງານດັ່ງຕໍ່ໄປນີ້:
- ເລືອກຫນ່ວຍຄວາມຈໍາ DDR ອັນດຽວຫຼືສອງລຸ້ນຄວາມຊົງຈໍາ DDR ຂອງເວທີການອ້າງອິງ c5soc ເປັນຈຸດເລີ່ມຕົ້ນຂອງການອອກແບບຂອງທ່ານ.
- ອັບເດດສະຖານທີ່ PIN ໃນ ALTERAOCLSDKROOT/board/c5soc/ /top.qsf file, ບ່ອນທີ່ ALTERAOCLSDKROOT ແມ່ນເສັ້ນທາງໄປຫາສະຖານທີ່ຂອງ Intel FPGA SDK ສໍາລັບການຕິດຕັ້ງ OpenCL, ແລະ ແມ່ນຊື່ໄດເລກະທໍລີຂອງຕົວແປຂອງກະດານ. ໄດເລກະທໍລີ c5soc_sharedonly ແມ່ນສໍາລັບຕົວແປຂອງກະດານທີ່ມີລະບົບຄວາມຈໍາ DDR ດຽວ. ໄດເລກະທໍລີ c5soc ແມ່ນສໍາລັບຕົວແປຂອງກະດານທີ່ມີສອງລະບົບຄວາມຈໍາ DDR.
- ອັບເດດການຕັ້ງຄ່າ DDR ສໍາລັບຕັນ HPS ແລະ/ຫຼື FPGA SDRAM ໃນ ALTERAOCLSDKROOT/board/c5soc/ /system.qsys file.
4. Intel FPGA SDK ທັງໝົດສຳລັບການອອກແບບກະດານທີ່ຕ້ອງການຂອງ OpenCL ຕ້ອງບັນລຸການປິດເວລາທີ່ຮັບປະກັນ. ດັ່ງນັ້ນ, ການຈັດວາງຂອງການອອກແບບຕ້ອງໃຊ້ເວລາທີ່ສະອາດ. ເພື່ອເອົາພາທິຊັນກະດານ c5soc (acl_iface_partition.qxp) ໄປໃສ່ກະດານ SoC FPGA ຂອງທ່ານ, ປະຕິບັດວຽກງານຕໍ່ໄປນີ້:
ສໍາລັບຄໍາແນະນໍາລະອຽດກ່ຽວກັບການປັບປຸງແກ້ໄຂແລະປົກປັກຮັກສາການແບ່ງປັນຄະນະກໍາມະ, ເບິ່ງ Quartus
ການລວບລວມຂໍ້ມູນ Prime Incremental ສໍາລັບບົດອອກແບບຕາມລຳດັບ ແລະເປັນທີມຂອງ Quartus Prime Standard Edition Handbook.
ກ. ເອົາ acl_iface_partition.qxp ອອກຈາກໄດເລກະທໍລີ ALTERAOCLSDKROOT/board/c5soc/c5soc.
ຂ. ເປີດໃຊ້ acl_iface_region LogicLock™ ພາກພື້ນໂດຍການປ່ຽນຄໍາສັ່ງ 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
ຄ. ລວບລວມ kernel OpenCL ສໍາລັບກະດານຂອງທ່ານ.
ງ. ຖ້າຈໍາເປັນ, ປັບຂະຫນາດແລະສະຖານທີ່ຂອງພາກພື້ນ LogicLock.
e. ເມື່ອທ່ານພໍໃຈທີ່ການຈັດວາງຂອງການອອກແບບຂອງທ່ານແມ່ນເວລາສະອາດ, ສົ່ງອອກພາທິຊັນນັ້ນເປັນ acl_iface_partition.qxp Quartus Prime Exported Partition File.
ດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນພາກການກໍານົດເວລາການຮັບປະກັນຂອງ AIntel FPGA SDK ສໍາລັບຄູ່ມືຜູ້ໃຊ້ OpenCL Custom Platform Toolkit, ໂດຍການນໍາເຂົ້າ .qxp ນີ້. file ເຂົ້າໄປໃນການອອກແບບລະດັບສູງສຸດ, ທ່ານປະຕິບັດຕາມຄວາມຕ້ອງການຂອງການສະຫນອງການອອກແບບກະດານທີ່ມີການຮັບປະກັນການໄຫຼປິດເວລາ.
ສໍາລັບປັດໃຈທີ່ອາດຈະສົ່ງຜົນກະທົບຕໍ່ຄຸນນະພາບຂອງຜົນໄດ້ຮັບ (QoR) ຂອງພາທິຊັນທີ່ສົ່ງອອກຂອງທ່ານ, ອ້າງອີງເຖິງຄຸນນະພາບທົ່ວໄປຂອງຜົນການພິຈາລະນາສໍາລັບພາກສ່ວນພາທິຊັນກະດານສົ່ງອອກໃນ Intel FPGA SDK ສໍາລັບຄູ່ມືຜູ້ໃຊ້ OpenCL Custom Platform Toolkit.
f. ປິດໃຊ້ງານພາກພື້ນ LogicLock acl_iface_region ໂດຍການກັບຄືນຄໍາສັ່ງໃນຂັ້ນຕອນ 2 ກັບໄປ set_global_assignment -name LL_ENABLED OFF section_id acl_iface_region. - ຖ້າ SoC FPGA board ຂອງທ່ານໃຊ້ pins ແລະ peripheries ທີ່ແຕກຕ່າງກັນຂອງ HPS block, regenerate the preloader and the device tree source (DTS) file. ຖ້າທ່ານປ່ຽນການຕັ້ງຄ່າຕົວຄວບຄຸມຄວາມຈຳ HPS DDR, ໃຫ້ສ້າງຕົວໂຫຼດລ່ວງໜ້າຄືນໃໝ່.
- ສ້າງຮູບພາບ SD flash card.
- ສ້າງເວທີທີ່ກໍາຫນົດເອງຂອງທ່ານ, ເຊິ່ງປະກອບມີຮູບພາບ SD flash card.
- ພິຈາລະນາສ້າງເວີຊັ່ນສະພາບແວດລ້ອມເວລາແລ່ນຂອງແພລດຟອມແບບກຳນົດເອງຂອງທ່ານເພື່ອໃຊ້ກັບ Intel FPGA Runtime Environment (RTE) ສໍາລັບ OpenCL. ເວີຊັ່ນ RTE ຂອງ Custom Platform ຂອງທ່ານບໍ່ລວມເອົາໄດເລກະທໍລີຮາດແວ ແລະຮູບພາບ SD flash card. ແພລດຟອມແບບກຳນົດເອງນີ້ໂຫລດໃສ່ລະບົບ SoC FPGA ເພື່ອໃຫ້ແອັບພລິເຄຊັນເປັນເຈົ້າພາບເຮັດວຽກ. ໃນທາງກົງກັນຂ້າມ, ເວີຊັນ SDK ຂອງ Custom Platform ແມ່ນມີຄວາມຈໍາເປັນສໍາລັບ SDK ເພື່ອລວບລວມ OpenCL kernels.
ເຄັດລັບ: ທ່ານອາດຈະນໍາໃຊ້ສະບັບ SDK ຂອງເວທີທີ່ກໍານົດເອງຂອງທ່ານສໍາລັບ RTE ໄດ້. ບັນທຶກ
ຊ່ອງຫວ່າງ, ເອົາຮູບພາບ SD flash card ອອກຈາກເວີຊັນ RTE ຂອງ Custom Platform ຂອງທ່ານ. - ທົດສອບເວທີທີ່ກໍາຫນົດເອງຂອງທ່ານ.
ເບິ່ງພາກການທົດສອບການອອກແບບຮາດແວຂອງ Intel FPGA SDK ສໍາລັບຄູ່ມືຜູ້ໃຊ້ OpenCL Custom Platform Toolkit ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
ການເຊື່ອມຕໍ່ທີ່ກ່ຽວຂ້ອງ
- ການທົດສອບການອອກແບບຮາດແວ
- Quartus Prime Incremental Compilation ສໍາລັບການອອກແບບແບບລໍາດັບຊັ້ນ ແລະທີມງານ
- ການສ້າງກະແສການຮັບປະກັນເວລາ
- ຄຸນນະພາບທົ່ວໄປຂອງການພິຈາລະນາຜົນໄດ້ຮັບສໍາລັບການແບ່ງສ່ວນຄະນະກໍາມະການສົ່ງອອກ
1.2.1 ການປັບປຸງແພລະຕະຟອມອ້າງອີງ Ported
ໃນສະບັບປະຈຸບັນຂອງ Cyclone V SoC Development Kit Reference Platform, HPS block ຢູ່ໃນສ່ວນທີ່ກໍານົດເຫດຜົນທີ່ບໍ່ແມ່ນເຫດຜົນທັງຫມົດ. ຢ່າງໃດກໍຕາມ, ທ່ານບໍ່ສາມາດສົ່ງອອກ HPS ເປັນສ່ວນຫນຶ່ງຂອງ .qxp file. ເພື່ອອັບເດດ Custom Platform ທີ່ມີຢູ່ແລ້ວທີ່ທ່ານດັດແປງຈາກ c5soc ເວີຊັນກ່ອນໜ້ານີ້, ປະຕິບັດຂັ້ນຕອນການເກັບຮັກສາ QXP, ອັບເດດຮູບພາບ SD flash card ເພື່ອໃຫ້ໄດ້ສະພາບແວດລ້ອມ runtime ຫຼ້າສຸດ, ແລະອັບເດດ board_spec.xml file ເພື່ອເປີດໃຊ້ອັດຕະໂນມັດ.
Altera® SDK ສໍາລັບ OpenCL ເວີຊັ່ນ 14.1 ແລະນອກເໜືອໄປກວ່ານັ້ນຈະກວດສອບ board_spec.xml file ສໍາລັບຂໍ້ມູນກະດານ, ແລະປະຕິບັດການປັບປຸງອັດຕະໂນມັດ. ເນື່ອງຈາກວ່າທ່ານປັບປຸງແກ້ໄຂ
ການອອກແບບໂດຍການປະຕິບັດການໄຫຼຂອງການຮັກສາໄວ້ QXP, ທ່ານຕ້ອງປັບປຸງ board_spec.xml file ກັບຮູບແບບຂອງມັນຢູ່ໃນສະບັບປະຈຸບັນ. ການປັບປຸງ file ອະນຸຍາດໃຫ້ SDK ແຍກແຍະລະຫວ່າງແພລດຟອມແບບກຳນົດເອງທີ່ບໍ່ໄດ້ຮັກສາໄວ້ ແລະແພລດຟອມກຳນົດເອງທີ່ອີງໃສ່ QXP ໃນປະຈຸບັນ. ອ້າງອີງເຖິງ Custom Platform Automigration ສໍາລັບ Forward Compatibility ໃນ Intel FPGA SDK ສໍາລັບ OpenCL Custom Platform Toolkit ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
- ເພື່ອປະຕິບັດກະແສການເກັບຮັກສາ QXP ໃນການອອກແບບຮາດແວ Cyclone V SoC FPGA ທີ່ ported ຈາກ c5soc ຮຸ່ນກ່ອນ, ໃຫ້ເຮັດຂັ້ນຕອນຕໍ່ໄປນີ້ເພື່ອສ້າງ subpartition ເພື່ອຍົກເວັ້ນ HPS ຈາກ .qxp. file:
ກ. ກ່ອນທີ່ຈະສ້າງພາທິຊັນຮອບໆຕາມເຫດຜົນ, ສ້າງພາທິຊັນຮອບ HPS ໃນການຕັ້ງຄ່າ .qsf Quartus Prime File.
ຕົວຢ່າງample:
# ຈັດແບ່ງຕົວຢ່າງດ້ວຍຕົນເອງທີ່ສ້າງແບບຈໍາລອງຂອງ HPS-dedicated I/O set_instance_assignment -name PARTITION_HIERARCHY borde_18261 -to “system:the_system|system_acl_iface:acl_iface|system_acl_iface_hps_0:hps_0|system_acl_0_sface_0|system_acl_hp:iface_0 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 ເທິງ -c ເທິງ
–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=on
–incremental_compilation_export_flatten=ປິດ
ຫຼັງຈາກທີ່ທ່ານຍົກເວັ້ນ HPS ອອກຈາກພາທິຊັນ, ທ່ານອາດຈະນໍາເຂົ້າ .qxp file ແລະລວບລວມການອອກແບບຂອງເຈົ້າ. - ອັບເດດຮູບພາບ SD flash card ດ້ວຍ Intel FPGA RTE ລຸ້ນປັດຈຸບັນສໍາລັບ OpenCL ໂດຍປະຕິບັດວຽກງານດັ່ງຕໍ່ໄປນີ້:
ກ. ພູ file ຕາຕະລາງການຈັດສັນ (fat32) ແລະຂະຫຍາຍ file ລະບົບ (ext3) ການແບ່ງປັນໃນຮູບພາບທີ່ມີຢູ່ແລ້ວເປັນອຸປະກອນ loop-back. ສໍາລັບຄໍາແນະນໍາລະອຽດ, ເບິ່ງຂັ້ນຕອນທີ 2 ໃນການກໍ່ສ້າງຮູບພາບບັດ SD.
ຂ. ໃນ /home/root/opencl_arm32_rte directory, ເອົາອອກ files ຈາກລຸ້ນກ່ອນໜ້າຂອງ RTE.
ຄ. ດາວໂຫຼດ ແລະ ປົດລ໋ອກເວີຊັ່ນປັດຈຸບັນຂອງ RTE ເຂົ້າໄປໃນລະບົບ /home/root/opencl_arm32_rte.
ງ. ໃນ /driver/version.h file ຂອງເວທີທີ່ກໍາຫນົດເອງຂອງທ່ານ, ປັບປຸງການມອບຫມາຍ ACL_DRIVER_VERSION ເປັນ . (ສໍາລັບ example, 16.1.x, ເຊິ່ງ 16.1 ແມ່ນ SDK verison, ແລະ x ແມ່ນເວີຊັນໄດເວີທີ່ທ່ານຕັ້ງ).
e. ກໍ່ສ້າງໃຫມ່ຄົນຂັບ.
f. ລຶບໂຟນເດີຮາດແວຂອງແພລດຟອມແບບກຳນົດເອງຂອງທ່ານ. ສຳເນົາແພລະຕະຟອມແບບກຳນົດເອງ, ພ້ອມກັບໄດເວີທີ່ອັບເດດແລ້ວ, ໄປໃສ່ໄດເລກະທໍລີ /home/root/opencl_arm_rte/board.
g. ສຳເນົາ Altera.icd file ຈາກໄດເລກະທໍລີ /home/root/opencl_arm32_rte ແລະເພີ່ມມັນໃສ່ໄດເລກະທໍລີ /etc/OpenCL/vendors.
h. ຖອນການຕິດຕັ້ງແລະທົດສອບຮູບພາບໃຫມ່. ສໍາລັບຄໍາແນະນໍາລະອຽດ, ເບິ່ງຂັ້ນຕອນທີ 8 ຫາ 11 ໃນການກໍ່ສ້າງຮູບພາບ SD ບັດ Flash.
ການເຊື່ອມຕໍ່ທີ່ກ່ຽວຂ້ອງ
- ການສ້າງຮູບພາບ SD Flash Card ໃນໜ້າທີ 14
ນອກນັ້ນທ່ານຍັງມີທາງເລືອກໃນການສ້າງຮູບພາບບັດ flash SD ໃຫມ່. - Custom Platform Automigration ສໍາລັບ Forward Compatibility
1.3 ຊອບແວສະຫນັບສະຫນູນສໍາລັບຄວາມຈໍາທີ່ໃຊ້ຮ່ວມກັນ
ໜ່ວຍຄວາມຈຳທາງກາຍະພາບທີ່ໃຊ້ຮ່ວມກັນລະຫວ່າງ FPGA ແລະ CPU ເປັນໜ່ວຍຄວາມຈຳທີ່ຕ້ອງການສຳລັບແກ່ນ OpenCL ທີ່ແລ່ນຢູ່ໃນ SoC FPGAs. ເນື່ອງຈາກວ່າ FPGA ເຂົ້າເຖິງຄວາມຊົງຈໍາທາງກາຍະພາບທີ່ໃຊ້ຮ່ວມກັນ, ກົງກັນຂ້າມກັບຫນ່ວຍຄວາມຈໍາ virtual ທີ່ໃຊ້ຮ່ວມກັນ, ມັນບໍ່ມີການເຂົ້າເຖິງຕາຕະລາງຫນ້າຂອງ CPU ທີ່ສ້າງແຜນທີ່ຜູ້ໃຊ້ virtual ກັບທີ່ຢູ່ຫນ້າທາງດ້ານຮ່າງກາຍ.
ກ່ຽວກັບຮາດແວ, OpenCL kernels ເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາທາງດ້ານຮ່າງກາຍຮ່ວມກັນໂດຍຜ່ານການເຊື່ອມຕໍ່ໂດຍກົງກັບ HPS DDR hard memory controller. ກ່ຽວກັບຊອບແວ, ການສະຫນັບສະຫນູນສໍາລັບຄວາມຊົງຈໍາທາງດ້ານຮ່າງກາຍທີ່ແບ່ງປັນກ່ຽວກັບການພິຈາລະນາດັ່ງຕໍ່ໄປນີ້:
- ການປະຕິບັດຊອບແວທົ່ວໄປສໍາລັບການຈັດສັນຫນ່ວຍຄວາມຈໍາໃນ CPU (ສໍາລັບ example, ຟັງຊັນ malloc() ບໍ່ສາມາດຈັດສັນພື້ນທີ່ຄວາມຊົງຈໍາທີ່ FPGA ອາດຈະໃຊ້.
ໜ່ວຍຄວາມຈຳທີ່ຟັງຊັນ malloc() ຈັດສັນແມ່ນຕິດກັນຢູ່ໃນພື້ນທີ່ທີ່ຢູ່ໜ່ວຍຄວາມຈຳສະເໝືອນ, ແຕ່ໜ້າທາງກາຍຍະພາບທີ່ຕິດພັນກັນນັ້ນບໍ່ໜ້າຈະຕິດກັນ. ດັ່ງນັ້ນ, ເຈົ້າພາບຕ້ອງສາມາດຈັດສັນພື້ນທີ່ຄວາມຊົງຈໍາທີ່ຕິດຕໍ່ກັນໄດ້. ຢ່າງໃດກໍຕາມ, ຄວາມສາມາດນີ້ບໍ່ມີຢູ່ໃນຄໍາຮ້ອງສະຫມັກພື້ນທີ່ຜູ້ໃຊ້ໃນ Linux. ດັ່ງນັ້ນ, ໄດເວີ kernel Linux ຕ້ອງປະຕິບັດການຈັດສັນ. - OpenCL SoC FPGA Linux kernel driver ປະກອບມີຟັງຊັນ mmap() ເພື່ອຈັດສັນຄວາມຊົງຈໍາທາງກາຍະພາບທີ່ໃຊ້ຮ່ວມກັນແລະແຜນທີ່ມັນເຂົ້າໄປໃນພື້ນທີ່ຂອງຜູ້ໃຊ້. ຟັງຊັນ mmap() ໃຊ້ມາດຕະຖານ Linux kernel call dma_alloc_coherent() ເພື່ອຮ້ອງຂໍພື້ນທີ່ຄວາມຊົງຈຳທີ່ຕິດກັນທາງຮ່າງກາຍເພື່ອແບ່ງປັນກັບອຸປະກອນ.
- ໃນ Linux kernel ເລີ່ມຕົ້ນ, dma_alloc_coherent() ບໍ່ໄດ້ຈັດສັນຫນ່ວຍຄວາມຈໍາທີ່ຕິດກັນທາງດ້ານຮ່າງກາຍຫຼາຍກ່ວາ 0.5 megabytes (MB) ໃນຂະຫນາດ. ເພື່ອອະນຸຍາດໃຫ້ dma_alloc_coherent() ຈັດສັນຄວາມຊົງຈໍາທີ່ຕິດກັນເປັນຈໍານວນຫຼວງຫຼາຍ, ເປີດໃຊ້ຄຸນສົມບັດການຈັດສັນຫນ່ວຍຄວາມຈໍາທີ່ຕິດກັນ (CMA) ຂອງ Linux kernel ແລະຈາກນັ້ນລວບລວມ kernel Linux ຄືນໃໝ່.
ສໍາລັບ Cyclone V SoC Development Kit Reference Platform, CMA ຄຸ້ມຄອງ 512 MB ຈາກ 1 GB ຂອງຫນ່ວຍຄວາມຈໍາທາງດ້ານຮ່າງກາຍ. ທ່ານອາດຈະເພີ່ມຫຼືຫຼຸດຜ່ອນຄ່ານີ້, ຂຶ້ນກັບຈໍານວນຂອງຫນ່ວຍຄວາມຈໍາທີ່ແບ່ງປັນທີ່ຄໍາຮ້ອງສະຫມັກຕ້ອງການ. ການໂທ dma_alloc_coherent() ອາດຈະບໍ່ສາມາດຈັດສັນ 512 MB ຂອງໜ່ວຍຄວາມຈຳທີ່ຕິດຕໍ່ກັນໄດ້ເຕັມທີ່; ຢ່າງໃດກໍຕາມ, ມັນສາມາດໄດ້ຮັບປະມານ 450 MB ຂອງຫນ່ວຍຄວາມຈໍາເປັນປົກກະຕິ. - CPU ສາມາດ cache ຄວາມຊົງຈໍາທີ່ dma_alloc_coherent() ໂທຫາຈັດສັນ. ໂດຍສະເພາະ, ການປະຕິບັດການຂຽນຈາກແອັບພລິເຄຊັນໂຮດແມ່ນບໍ່ເຫັນກັບແກ່ນ OpenCL. ຟັງຊັນ mmap() ໃນ Driver kernel OpenCL SoC FPGA Linux ຍັງປະກອບດ້ວຍການໂທຫາ pgprot_noncached() ຫຼື remap_pf_range() ຟັງຊັນເພື່ອປິດການເກັບຂໍ້ມູນສໍາລັບພາກພື້ນຂອງຫນ່ວຍຄວາມຈໍານີ້ຢ່າງຊັດເຈນ.
- ຫຼັງຈາກຟັງຊັນ dma_alloc_coherent() ຈັດສັນຄວາມຊົງຈໍາທີ່ຕິດກັນທາງຮ່າງກາຍ, ຟັງຊັນ mmap() ສົ່ງຄືນທີ່ຢູ່ virtual ໄປຫາຈຸດເລີ່ມຕົ້ນຂອງໄລຍະ, ຊຶ່ງເປັນຂອບເຂດທີ່ຢູ່ຂອງຫນ່ວຍຄວາມຈໍາທີ່ທ່ານຈັດສັນ. ແອັບພລິເຄຊັນເປັນເຈົ້າພາບຕ້ອງການທີ່ຢູ່ virtual ເພື່ອເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາ. ໃນທາງກົງກັນຂ້າມ, ແກ່ນ OpenCL ຕ້ອງການທີ່ຢູ່ທາງດ້ານຮ່າງກາຍ. ໄດເວີ kernel Linux ຕິດຕາມການສ້າງແຜນທີ່ທີ່ຢູ່ virtual-to-physical. ທ່ານສາມາດສ້າງແຜນທີ່ທີ່ຢູ່ທາງດ້ານຮ່າງກາຍທີ່ mmap() ກັບຄືນໄປບ່ອນທີ່ຢູ່ທາງດ້ານຮ່າງກາຍຕົວຈິງໂດຍການເພີ່ມການສອບຖາມກັບຄົນຂັບ.
aocl_mmd_shared_mem_alloc() MMD application programming interface (API) call ລວມເອົາການສອບຖາມຕໍ່ໄປນີ້:
ກ. ຟັງຊັນ mmap() ທີ່ຈັດສັນໜ່ວຍຄວາມຈຳ ແລະສົ່ງຄືນທີ່ຢູ່ virtual.
ຂ. ການສອບຖາມເພີ່ມເຕີມທີ່ແຜນທີ່ທີ່ຢູ່ virtual ທີ່ສົ່ງກັບໄປຫາທີ່ຢູ່ທາງດ້ານຮ່າງກາຍ.
ການໂທ aocl_mmd_shared_mem_alloc() MMD API ຈາກນັ້ນສົ່ງຄືນສອງທີ່ຢູ່
— ທີ່ຢູ່ກັບຄືນມາທີ່ແທ້ຈິງແມ່ນທີ່ຢູ່ virtual, ແລະທີ່ຢູ່ຕົວຈິງໄປທີ່ device_ptr_out.
ໝາຍເຫດ: ໄດເວີພຽງແຕ່ສາມາດສ້າງແຜນທີ່ທີ່ຢູ່ virtual ທີ່ຟັງຊັນ mmap() ກັບໄປຫາທີ່ຢູ່ຕົວຈິງ. ຖ້າທ່ານຮ້ອງຂໍໃຫ້ມີທີ່ຢູ່ທາງດ້ານຮ່າງກາຍຂອງຕົວຊີ້ virtual ອື່ນໆ, ໄດເວີຈະສົ່ງຄືນຄ່າ NULL.
ຄຳເຕືອນ: Intel FPGA SDK ສໍາລັບ OpenCL runtime libraries ສົມມຸດວ່າຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ຮ່ວມກັນເປັນຫນ່ວຍຄວາມຈໍາທໍາອິດທີ່ລະບຸໄວ້ໃນ board_spec.xml file. ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ທີ່ຢູ່ທາງດ້ານຮ່າງກາຍທີ່ driver kernel Linux ໄດ້ຮັບຈະກາຍເປັນທີ່ຢູ່ Avalon® ທີ່ kernel OpenCL ຜ່ານໄປຫາ HPS SDRAM.
ກ່ຽວກັບຫ້ອງສະຫມຸດ runtime, ໃຊ້ການໂທ clCreateBuffer() ເພື່ອຈັດສັນຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ຮ່ວມກັນເປັນ buffer ອຸປະກອນໃນລັກສະນະດັ່ງຕໍ່ໄປນີ້:
- ສຳລັບຕົວແປຂອງກະດານ DDR ສອງອັນທີ່ມີທັງໜ່ວຍຄວາມຈຳທີ່ແບ່ງປັນ ແລະ ບໍ່ໄດ້ແບ່ງປັນ, clCreateBuffer() ຈັດສັນໜ່ວຍຄວາມຈຳທີ່ໃຊ້ຮ່ວມກັນຫາກເຈົ້າລະບຸທຸງ CL_MEM_USE_HOST_PTR. ການນໍາໃຊ້ທຸງອື່ນໆເຮັດໃຫ້ clCreateBuffer() ຈັດສັນ buffer ໃນຫນ່ວຍຄວາມຈໍາທີ່ບໍ່ແບ່ງປັນ.
- ສໍາລັບຕົວແປກະດານ DDR ທີ່ມີຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ຮ່ວມກັນເທົ່ານັ້ນ, clCreateBuffer() ຈະຈັດສັນຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ຮ່ວມກັນໂດຍບໍ່ຄໍານຶງເຖິງທຸງໃດທີ່ທ່ານລະບຸ.
ໃນປັດຈຸບັນ, ການສະຫນັບສະຫນູນ Linux 32-bit ໃນ ARM CPU ປົກຄອງຂອບເຂດຂອງການສະຫນັບສະຫນູນຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ຮ່ວມກັນໃນຫ້ອງສະຫມຸດເວລາແລ່ນ SDK. ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ຫ້ອງສະຫມຸດ runtime ລວບລວມກັບສະພາບແວດລ້ອມອື່ນໆ (ສໍາລັບ example, x86_64 Linux ຫຼື 64-bit Windows) ບໍ່ຮອງຮັບຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ຮ່ວມກັນ.
C5soc ບໍ່ໄດ້ປະຕິບັດຄວາມຊົງຈໍາທີ່ແຕກຕ່າງກັນເພື່ອຈໍາແນກລະຫວ່າງຄວາມຊົງຈໍາທີ່ແບ່ງປັນແລະບໍ່ແບ່ງປັນສໍາລັບເຫດຜົນຕໍ່ໄປນີ້:
1. ປະຫວັດຄວາມເປັນມາ—ການຮອງຮັບຄວາມຊົງຈຳທີ່ຫຼາກຫຼາຍບໍ່ສາມາດໃຊ້ໄດ້ເມື່ອການຮອງຮັບໜ່ວຍຄວາມຈຳທີ່ໃຊ້ຮ່ວມກັນໄດ້ຖືກສ້າງຂຶ້ນໃນເບື້ອງຕົ້ນ.
2. ການໂຕ້ຕອບແບບເອກະພາບ—ເນື່ອງຈາກວ່າ OpenCL ເປັນມາດຕະຖານເປີດ, Intel ຮັກສາຄວາມສອດຄ່ອງລະຫວ່າງຜູ້ຂາຍແພລະຕະຟອມຄອມພິວເຕີ້ທີ່ຫຼາກຫຼາຍຊະນິດ. ດັ່ງນັ້ນ, ການໂຕ້ຕອບດຽວກັນກັບສະຖາປັດຕະຍະກໍາຂອງຜູ້ຂາຍກະດານອື່ນໆແມ່ນຖືກນໍາໃຊ້ເພື່ອຈັດສັນແລະນໍາໃຊ້ຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ຮ່ວມກັນ.
1.4 ການປັບຄ່າ FPGA
ສໍາລັບ SoC FPGAs, CPU ສາມາດ configure FPGA core fabric ໂດຍບໍ່ມີການຂັດຂວາງການເຮັດວຽກຂອງ CPU. ຕັນຮາດແວ FPGA Manager ທີ່ straddles HPS ແລະ FPGA ຫຼັກປະຕິບັດການປັບຄ່າ. Linux kernel ປະກອບມີໄດເວີທີ່ຊ່ວຍໃຫ້ເຂົ້າເຖິງ FPGA Manager ໄດ້ງ່າຍ.
- ເຖິງ view ສະຖານະຂອງຫຼັກ FPGA, ເອີ້ນຄໍາສັ່ງສະຖານະ cat /sys/class/fpga/fpga0/.
Intel FPGA SDK ສໍາລັບຜົນປະໂຫຍດໂຄງການ OpenCL ທີ່ມີຢູ່ກັບ Cyclone V SoC Development Kit Reference Platform ໃຊ້ສ່ວນຕິດຕໍ່ນີ້ເພື່ອດໍາເນີນໂຄງການ FPGA. ເມື່ອ reprogramming ຫຼັກ FPGA ກັບ CPU ແລ່ນ, ປະໂຫຍດຂອງໂຄງການປະຕິບັດວຽກງານດັ່ງຕໍ່ໄປນີ້ທັງຫມົດ:
1. ກ່ອນທີ່ຈະ reprogramming, ປິດການທໍາງານຂົວການສື່ສານທັງຫມົດລະຫວ່າງ FPGA ແລະ HPS, ທັງ H2F ແລະ LH2F ຂົວ.
ເປີດການນຳໃຊ້ຂົວເຫຼົ່ານີ້ຄືນໃໝ່ ຫຼັງຈາກການຂຽນໂປຣແກຣມໃໝ່ສຳເລັດ.
ເອົາໃຈໃສ່: ລະບົບ OpenCL ບໍ່ໄດ້ໃຊ້ຂົວ FPGA-to-HPS (F2H). ອ້າງອີງໃສ່ສ່ວນ HPS-FPGA Interfaces ໃນປື້ມຄູ່ມືອຸປະກອນ Cyclone V, ເຫຼັ້ມ 3: ຄູ່ມືການອ້າງອິງດ້ານວິຊາການລະບົບ Hard Processor ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
2. ໃຫ້ແນ່ໃຈວ່າການເຊື່ອມຕໍ່ລະຫວ່າງ FPGA ແລະຕົວຄວບຄຸມ HPS DDR ຖືກປິດໃຊ້ງານໃນລະຫວ່າງການຂຽນຄືນໃຫມ່.
3. ໃຫ້ແນ່ໃຈວ່າ FPGA ຂັດຂວາງຢູ່ໃນ FPGA ຖືກປິດການໃຊ້ງານໃນລະຫວ່າງ reprogramming.
ນອກຈາກນີ້, ແຈ້ງໃຫ້ຜູ້ຂັບຂີ່ປະຕິເສດການຂັດຂວາງໃດໆຈາກ FPGA ໃນລະຫວ່າງການຂຽນຄືນໃຫມ່.
ປຶກສາຫາລືກັບລະຫັດແຫຼ່ງຂອງຜົນປະໂຫຍດຂອງໂຄງການສໍາລັບລາຍລະອຽດກ່ຽວກັບການຈັດຕັ້ງປະຕິບັດຕົວຈິງ.
ຄຳເຕືອນ: ຢ່າປ່ຽນການຕັ້ງຄ່າຕົວຄວບຄຸມ HPS DDR ເມື່ອ CPU ເຮັດວຽກ.
ການເຮັດດັ່ງນັ້ນອາດຈະເຮັດໃຫ້ເກີດຄວາມຜິດພາດຂອງລະບົບທີ່ຮ້າຍແຮງເພາະວ່າທ່ານອາດຈະປ່ຽນການຕັ້ງຄ່າຕົວຄວບຄຸມ DDR ເມື່ອມີທຸລະກໍາຫນ່ວຍຄວາມຈໍາທີ່ຍັງຄ້າງຄາຈາກ CPU. ນີ້ຫມາຍຄວາມວ່າໃນເວລາທີ່ CPU ກໍາລັງເຮັດວຽກ, ທ່ານອາດຈະບໍ່ reprogram ຫຼັກ FPGA ກັບຮູບພາບທີ່ໃຊ້ HPS DDR ໃນການຕັ້ງຄ່າທີ່ແຕກຕ່າງກັນ.
ຈື່ໄວ້ວ່າລະບົບ OpenCL, ແລະການອອກແບບການອ້າງອີງຮາດແວ Golden ທີ່ມີກັບ Intel SoC FPGA Embedded Design Suite (EDS), ກໍານົດ HPS DDR ເຂົ້າໄປໃນໂຫມດ 256-bit ດຽວ.
ພາກສ່ວນຂອງລະບົບ CPU ເຊັ່ນ: ຕົວຄາດຄະເນສາຂາ ຫຼື prefetcher ຕາຕະລາງຫນ້າອາດຈະອອກຄໍາສັ່ງ DDR ເຖິງແມ່ນວ່າໃນເວລາທີ່ປະກົດວ່າບໍ່ມີຫຍັງເຮັດວຽກຢູ່ໃນ CPU.
ດັ່ງນັ້ນ, ເວລາບູດແມ່ນເວລາດຽວທີ່ປອດໄພທີ່ຈະກໍານົດການຕັ້ງຄ່າຕົວຄວບຄຸມ HPS DDR.
ນີ້ຍັງຫມາຍຄວາມວ່າ U-boot ຕ້ອງມີ binary ດິບ file (.rbf) ຮູບພາບທີ່ຈະໂຫລດເຂົ້າໄປໃນຫນ່ວຍຄວາມຈໍາ. ຖ້າບໍ່ດັ່ງນັ້ນ, ທ່ານອາດຈະເປີດໃຊ້ HPS DDR ດ້ວຍພອດທີ່ບໍ່ໄດ້ໃຊ້ໃນ FPGA ແລະຫຼັງຈາກນັ້ນອາດຈະມີການປ່ຽນແປງການຕັ້ງຄ່າພອດຫຼັງຈາກນັ້ນ. ດ້ວຍເຫດຜົນນີ້, Driver kernel OpenCL Linux ບໍ່ປະກອບມີເຫດຜົນທີ່ຈໍາເປັນເພື່ອກໍານົດການຕັ້ງຄ່າຕົວຄວບຄຸມ HPS DDR.
ຊຸດ SW3 dual in-line (DIP) switches on Cylone V SoC Development Kit ຄວບຄຸມຮູບແບບທີ່ຄາດໄວ້ຂອງຮູບ .rbf (ນັ້ນແມ່ນ, ບໍ່ວ່າຈະເປັນ. file ຖືກບີບອັດແລະ/ຫຼືເຂົ້າລະຫັດ). C5soc, ແລະການອອກແບບການອ້າງອີງຮາດແວ Golden ທີ່ມີຢູ່ໃນ SoC EDS, ລວມມີຮູບພາບ .rbf ທີ່ຖືກບີບອັດແຕ່ບໍ່ໄດ້ເຂົ້າລະຫັດ. ການຕັ້ງຄ່າສະວິດ SW3 DIP ທີ່ອະທິບາຍໄວ້ໃນ Intel FPGA SDK ສໍາລັບຄູ່ມືການເລີ່ມຕົ້ນ OpenCL Cyclone V SoC ກົງກັບການຕັ້ງຄ່າຮູບພາບ .rbf ນີ້.
ການເຊື່ອມຕໍ່ທີ່ກ່ຽວຂ້ອງ
- ການໂຕ້ຕອບ HPS-FPGA
- ການຕັ້ງຄ່າ SW3 Switches
1.4.1 ລາຍລະອຽດສະຖາປັດຕະຍະກຳລະບົບ FPGA
ການສະຫນັບສະຫນູນສໍາລັບ Cyclone V SoC Development Kit Reference Platform ແມ່ນອີງໃສ່ Stratix® V Reference Platform (s5_ref), ທີ່ມີຢູ່ໃນ Intel FPGA SDK ສໍາລັບ OpenCL.
ການຈັດຕັ້ງໂດຍລວມຂອງລະບົບ c5soc Qsys ແລະ kernel driver ແມ່ນຄ້າຍຄືກັນກັບໃນ s5_ref.
ອົງປະກອບຫຼັກ FPGA ຕໍ່ໄປນີ້ແມ່ນຄືກັນໃນທັງ c5soc ແລະ s5_ref:
- VERSION_ID ບລັອກ
- ກົນໄກການພັກຜ່ອນ
- ຕົວແບ່ງທະນາຄານຄວາມຊົງຈໍາ
- ການໂຕ້ຕອບ cache snoop
- ໂມງແກ່ນ
- ຄວບຄຸມການເຂົ້າເຖິງການລົງທະບຽນ (CRA) ຕັນ
1.5 ການສ້າງຮູບພາບ SD Flash Card
ເນື່ອງຈາກວ່າ Cyclone V SoC FPGA ເປັນລະບົບເຕັມຮູບແບບໃນຊິບ, ທ່ານຮັບຜິດຊອບໃນການສະຫນອງຄໍານິຍາມຢ່າງເຕັມທີ່ຂອງລະບົບ. Intel ແນະນໍາໃຫ້ທ່ານສົ່ງມັນໃນຮູບແບບຂອງຮູບພາບ SD flash card. Intel FPGA SDK ສໍາລັບຜູ້ໃຊ້ OpenCL ພຽງແຕ່ສາມາດຂຽນຮູບພາບໃສ່ micro SD flash card ແລະ SoC FPGA board ແມ່ນກຽມພ້ອມສໍາລັບການນໍາໃຊ້.
ການດັດແກ້ຮູບພາບ SD Flash Card ທີ່ມີຢູ່ແລ້ວໃນໜ້າ 13
Intel ແນະນໍາໃຫ້ທ່ານພຽງແຕ່ດັດແປງຮູບພາບທີ່ມີຢູ່ໃນ Cyclone V SoC Development Kit Reference Platform. ນອກນັ້ນທ່ານຍັງມີທາງເລືອກໃນການສ້າງຮູບພາບບັດ flash SD ໃຫມ່.
ການສ້າງຮູບພາບ SD Flash Card ໃນໜ້າທີ 14
ນອກນັ້ນທ່ານຍັງມີທາງເລືອກໃນການສ້າງຮູບພາບບັດ flash SD ໃຫມ່.
1.5.1 ການແກ້ໄຂຮູບພາບບັດ SD Flash ທີ່ມີຢູ່ແລ້ວ
Intel ແນະນໍາໃຫ້ທ່ານພຽງແຕ່ດັດແປງຮູບພາບທີ່ມີ Cyclone V SoC
ແພລະຕະຟອມອ້າງອີງຊຸດການພັດທະນາ. ນອກນັ້ນທ່ານຍັງມີທາງເລືອກໃນການສ້າງຮູບພາບບັດ flash SD ໃຫມ່.
ຮູບພາບ c5soc linux_sd_card_image.tgz file ແມ່ນມີຢູ່ໃນໄດເລກະທໍລີ ALTERAOCLSDKROOT/board/c5soc, ບ່ອນທີ່ ALTERAOCLSDKROOT ຊີ້ໄປຫາເສັ້ນທາງຂອງ Intel FPGA SDK ສໍາລັບໄດເລກະທໍລີການຕິດຕັ້ງຂອງ OpenCL.
ເອົາໃຈໃສ່: ເພື່ອປັບປຸງແກ້ໄຂຮູບພາບບັດ SD, ທ່ານຈະຕ້ອງມີສິດທິໃນການ root ຫຼື sudo.
- ເພື່ອ decompress $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz file, ດໍາເນີນການຄໍາສັ່ງ tar xvfzlinux_sd_card_image.tgz.
- ລວບລວມ hello_world OpenCL example ການອອກແບບການນໍາໃຊ້ສະຫນັບສະຫນູນເວທີ Custom ຂອງທ່ານ. ປ່ຽນຊື່ .rbf file ວ່າ Intel FPGA SDK ສໍາລັບ OpenCL Offline Compiler ສ້າງເປັນ opencl.rbf, ແລະວາງມັນໃສ່ໃນການແບ່ງປັນ fat32 ພາຍໃນຮູບພາບ SD flash.
ທ່ານສາມາດດາວໂຫລດ hello_world example ການອອກແບບຈາກ OpenCL Design Examples page on the Altera webເວັບໄຊ. - ວາງ .rbf file ເຂົ້າໄປໃນການແບ່ງປັນ fat32 ຂອງຮູບພາບບັດ flash.
ເອົາໃຈໃສ່: ການແບ່ງປັນ fat32 ຕ້ອງມີທັງ zImage file ແລະ .rbf file. ໂດຍບໍ່ມີການ .rbf file, ຄວາມຜິດພາດຮ້າຍແຮງຈະເກີດຂຶ້ນໃນເວລາທີ່ທ່ານໃສ່ໄດເວີ. - ຫຼັງຈາກທີ່ທ່ານສ້າງຮູບພາບບັດ SD, ຂຽນມັນໃສ່ບັດ micro SD ໂດຍການເອີ້ນຄໍາສັ່ງດັ່ງຕໍ່ໄປນີ້: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
- ເພື່ອທົດສອບຮູບພາບ SD flash card ຂອງທ່ານ, ປະຕິບັດຫນ້າວຽກຕໍ່ໄປນີ້:
ກ. ໃສ່ບັດ micro SD ເຂົ້າໄປໃນກະດານ SoC FPGA.
ຂ. ພະລັງງານຂຶ້ນກະດານ.
ຄ. ເອີ້ນຄຳສັ່ງ aocl diagnose utility command.
1.5.2 ການສ້າງຮູບພາບ SD Flash Card
ນອກນັ້ນທ່ານຍັງມີທາງເລືອກໃນການສ້າງຮູບພາບບັດ flash SD ໃຫມ່. ຄໍາແນະນໍາທົ່ວໄປກ່ຽວກັບການສ້າງຮູບພາບ SD flash card ໃຫມ່ແລະການສ້າງຮູບພາບ SD flash card ທີ່ມີຢູ່ແລ້ວແມ່ນມີຢູ່ໃນ GSRD v14.0.2 – ຫນ້າ SD ບັດຂອງ RocketBoards.org webເວັບໄຊ.
ຂັ້ນຕອນຂ້າງລຸ່ມນີ້ອະທິບາຍຂັ້ນຕອນການສ້າງຮູບພາບ linux_sd_card_image.tgz ຈາກ Golden System Reference Design (GSRD) SD flash card image:
ໝາຍເຫດ:
ເພື່ອສ້າງຮູບພາບຈາກຮູບພາບ c5soc, ປະຕິບັດຫນ້າວຽກທັງຫມົດທີ່ໄດ້ລະບຸໄວ້ໃນຂັ້ນຕອນນີ້.
- ດາວນ໌ໂຫລດແລະ unpack GSRD SD flash card ຮູບພາບເວີຊັນ 14.0 ຈາກ Rocketboards.org.
- ພູ file ຕາຕະລາງການຈັດສັນ (fat32) ແລະຂະຫຍາຍ file ລະບົບ (ext3) ແບ່ງສ່ວນໃນຮູບນີ້ເປັນອຸປະກອນ loop-back. ເພື່ອຕິດຕັ້ງພາທິຊັນ, ປະຕິບັດຂັ້ນຕອນຕໍ່ໄປນີ້:
ກ. ກໍານົດການເລີ່ມຕົ້ນ byte ຂອງການແບ່ງປັນພາຍໃນຮູບພາບໂດຍການເອີ້ນ /sbin/fdisk -lu image_file ຄໍາສັ່ງ.
ຕົວຢ່າງample, ຈໍານວນພາທິຊັນ 1 ຂອງປະເພດ W95 FAT ມີການຊົດເຊີຍບລັອກຂອງ 2121728. ດ້ວຍ 512 ໄບຕ໌ຕໍ່ບລັອກ, ການຊົດເຊີຍ byte ແມ່ນ 512 bytes x 2121728 = 1086324736 bytes.
ຂ. ກໍານົດອຸປະກອນ loop ຟຣີ (ສໍາລັບ example, /dev/loop0) ໂດຍການພິມຄໍາສັ່ງ losetup -f.
ຄ. ສົມມຸດວ່າ /dev/loop0 ເປັນອຸປະກອນ loop ຟຣີ, ກໍານົດຮູບພາບ flash card ຂອງທ່ານໃຫ້ກັບອຸປະກອນ loop block ໂດຍການເອີ້ນ losetup /dev/loop0 image_file -0 1086324736 ຄໍາສັ່ງ.
ງ. ເຊື່ອມຕໍ່ອຸປະກອນ loop ໂດຍການເອີ້ນຄໍາສັ່ງ mount /dev/loop0 /media/disk1.
ພາຍໃນຮູບ file, /media/disk1 ດຽວນີ້ເປັນພາທິຊັນ fat32 ທີ່ຕິດຕັ້ງແລ້ວ.
e. ເຮັດຊ້ໍາຂັ້ນຕອນ a ຫາ d ສໍາລັບ ext3 partition. - ດາວໂຫລດ Cyclone V SoC FPGA ລຸ້ນ Intel FPGA Runtime Environment ສໍາລັບ OpenCL package ຈາກສູນດາວໂຫຼດໃນ Altera webເວັບໄຊ.
ກ. ຄລິກປຸ່ມດາວໂຫຼດຢູ່ຂ້າງສະບັບຊອບແວ Quartus Prime.
ຂ. ລະບຸລຸ້ນລຸ້ນ, ລະບົບປະຕິບັດການ ແລະວິທີການດາວໂຫຼດ.
ຄ. ຄລິກແຖບຊອບແວເພີ່ມເຕີມ, ແລະເລືອກເພື່ອດາວໂຫລດ Intel FPGA
Runtime Environment ສໍາລັບ OpenCL Linux Cyclone V SoC TGZ.
ງ. ຫຼັງຈາກທີ່ທ່ານດາວໂຫລດ aocl-rte- .arm32.tgz file, unpack ມັນກັບ
ໄດເລກະທໍລີທີ່ທ່ານເປັນເຈົ້າຂອງ. - ວາງ aocl-rte- unpacked. ໄດເຣັກທໍຣີ .arm32 ເຂົ້າໄປໃນລະບົບ /home/root/opencl_arm32_rte ຢູ່ໃນສ່ວນ ext3 ຂອງຮູບພາບ. file.
- ລົບໂຟນເດີຮາດແວຂອງ Custom Platform ຂອງທ່ານ, ແລະຫຼັງຈາກນັ້ນວາງ Custom Platform ເຂົ້າໄປໃນໄດເລກະທໍລີຍ່ອຍຂອງກະດານຂອງ /home/root/ opencl_arm32_rte.
- ສ້າງ 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 ແລ່ນຄໍາສັ່ງ ./init_opencl.sh ແຫຼ່ງເພື່ອໂຫລດຕົວແປສະພາບແວດລ້ອມແລະໄດເວີ OpenCL Linux kernel. - ຖ້າທ່ານຕ້ອງການປັບປຸງ preloader, DTS files, ຫຼື Linux kernel, ທ່ານຕ້ອງການ arm-linux-gnueabihf-gcc compiler ຈາກ SoC EDS. ປະຕິບັດຕາມຄໍາແນະນໍາທີ່ລະບຸໄວ້ໃນຄູ່ມືຜູ້ໃຊ້ Intel SoC FPGA Embedded Design Suite ເພື່ອໃຫ້ໄດ້ຮັບຊອບແວ, ລວບລວມພວກມັນຄືນໃຫມ່, ແລະປັບປຸງສິ່ງທີ່ກ່ຽວຂ້ອງ. files ໃນພາທິຊັນ fat32 ທີ່ຕິດຕັ້ງ.
ເອົາໃຈໃສ່: ມັນເປັນໄປໄດ້ທີ່ສຸດທີ່ທ່ານຈໍາເປັນຕ້ອງໄດ້ປັບປຸງ preloader ຖ້າເວທີ Custom ຂອງທ່ານມີການນໍາໃຊ້ pin ທີ່ແຕກຕ່າງກັນກ່ວາທີ່ຢູ່ໃນ c5soc.
ຈືຂໍ້ມູນການ: ຖ້າທ່ານລວບລວມ Linux kernel, recompile Linux kernel driver ດ້ວຍແຫຼ່ງ Linux kernel ດຽວກັນ. files. ຖ້າມີຄວາມບໍ່ກົງກັນລະຫວ່າງໄດເວີ Linux kernel ແລະ Linux kernel, ໄດເວີຈະບໍ່ໂຫລດ. ນອກຈາກນັ້ນ, ທ່ານຕ້ອງເປີດໃຊ້ CMA.
ເບິ່ງການລວບລວມຂໍ້ມູນ Linux Kernel ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ. - ລວບລວມ hello_world OpenCL example ການອອກແບບການນໍາໃຊ້ສະຫນັບສະຫນູນເວທີ Custom ຂອງທ່ານ. ປ່ຽນຊື່ .rbf file ວ່າ Intel FPGA SDK ສໍາລັບ OpenCL Offline Compiler ສ້າງເປັນ opencl.rbf, ແລະວາງມັນໃສ່ໃນການແບ່ງປັນ fat32 ພາຍໃນຮູບພາບ SD flash.
ທ່ານສາມາດດາວໂຫລດ hello_world example ການອອກແບບຈາກ OpenCL Design Examples page on the Altera webເວັບໄຊ.
9. ຫຼັງຈາກທີ່ທ່ານເກັບຮັກສາທັງຫມົດທີ່ຈໍາເປັນ files ໃສ່ຮູບພາບ flash card, ເອີ້ນຄໍາສັ່ງຕໍ່ໄປນີ້:
ກ. ຊິງຄ໌
ຂ. unmount /media/disk1
ຄ. ຖອນການເຊື່ອມຕໍ່ ຢູ່ໃສ ແມ່ນຊື່ໄດເລກະທໍລີທີ່ທ່ານໃຊ້ສໍາລັບການຕິດຕັ້ງ ext3 partition ໃນ 3 ໃນຫນ້າ 3 (ສໍາລັບ ext2.ample, /media/disk2).
ງ. losetup -d /dev/loop0
e. losetup -d /dev/loop1 - ບີບອັດຮູບພາບ SD flash card ໂດຍການເອີ້ນຄໍາສັ່ງຕໍ່ໄປນີ້: tar cvfz .tgz linux_sd_card_image
- ຈັດສົ່ງ .tgz file ພາຍໃນໄດເລກະທໍລີຮາກຂອງ Custom Platform ຂອງທ່ານ.
- ເພື່ອທົດສອບຮູບພາບ SD flash card ຂອງທ່ານ, ປະຕິບັດຫນ້າວຽກຕໍ່ໄປນີ້:
ກ. ຂຽນຮູບພາບທີ່ບໍ່ຖືກບີບອັດລົງໃສ່ micro SD flash card.
ຂ. ໃສ່ບັດ micro SD ເຂົ້າໄປໃນກະດານ SoC FPGA.
ຄ. ເພີ່ມພະລັງໃສ່ກະດານ.
ງ. ເອີ້ນຄຳສັ່ງ aocl diagnose utility command.
ການເຊື່ອມຕໍ່ທີ່ກ່ຽວຂ້ອງ
- ຄູ່ມືຜູ້ໃຊ້ Intel SoC FPGA Embedded Design Suite
- OpenCL Design Examples page on the Altera webເວັບໄຊ
- ການລວບລວມຂໍ້ມູນ Linux Kernel ໃນໜ້າ 16
ເພື່ອເປີດໃຊ້ CMA, ກ່ອນອື່ນ ໝົດ ທ່ານຕ້ອງລວບລວມ Linux kernel. - ການສອບຖາມຊື່ອຸປະກອນຂອງຄະນະກໍາມະການ FPGA ຂອງທ່ານ (ວິນິດໄສ)
1.6 ການລວບລວມ Linux Kernel ສໍາລັບ Cyclone V SoC FPGA
ກ່ອນທີ່ຈະແລ່ນແອັບພລິເຄຊັນ OpenCL ໃນກະດານ Cyclone V SoC FPGA, ທ່ານຕ້ອງລວບລວມແຫຼ່ງ Linux kernel, ແລະລວບລວມແລະຕິດຕັ້ງໄດເວີ OpenCL Linux kernel.
- ການລວບລວມຂໍ້ມູນ Linux Kernel ໃນໜ້າ 16
ເພື່ອເປີດໃຊ້ CMA, ກ່ອນອື່ນ ໝົດ ທ່ານຕ້ອງລວບລວມ Linux kernel. - ການລວບລວມແລະການຕິດຕັ້ງໄດເວີ OpenCL Linux Kernel ໃນຫນ້າ 17 ລວບລວມໄດເວີ OpenCL Linux kernel ຕໍ່ກັບແຫຼ່ງ kernel ທີ່ລວບລວມ.
1.6.1 ການລວບລວມຂໍ້ມູນ Linux Kernel ຄືນໃໝ່
ເພື່ອເປີດໃຊ້ CMA, ກ່ອນອື່ນ ໝົດ ທ່ານຕ້ອງລວບລວມ Linux kernel.
- ຄລິກທີ່ GSRD v14.0 – ການລວບລວມລິ້ງ Linux ໃນໜ້າຊັບພະຍາກອນຂອງ RocketBoards.org webເວັບໄຊເພື່ອເຂົ້າເຖິງຄໍາແນະນໍາກ່ຽວກັບການດາວໂຫຼດ ແລະການສ້າງລະຫັດແຫຼ່ງ Linux kernel ຄືນໃໝ່.
ສໍາລັບການນໍາໃຊ້ກັບ™ Intel FPGA SDK ສໍາລັບ OpenCL, ລະບຸ socfpga-3.13-rel14.0 ເປັນ. . - ໝາຍເຫດ: ຂະບວນການສ້າງສ້າງ 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 ກຳນົດຂີດຈຳກັດເທິງສຸດຂອງຈຳນວນໜ່ວຍຄວາມຈຳທີ່ຕິດຕໍ່ກັນທີ່ມີຢູ່ທັງໝົດ. ທ່ານອາດຈະເພີ່ມມູນຄ່ານີ້ຖ້າທ່ານຕ້ອງການຄວາມຈໍາຫຼາຍ. - ເອົາໃຈໃສ່: ຈໍານວນທັງຫມົດຂອງຫນ່ວຍຄວາມຈໍາທາງດ້ານຮ່າງກາຍທີ່ມີຢູ່ໃນໂຮງງານຜະລິດ ARM ໃນກະດານ SoC FPGA ແມ່ນ 1 GB. Intel ບໍ່ແນະນໍາໃຫ້ທ່ານຕັ້ງ CMA ຜູ້ຈັດການໃກ້ກັບ 1 GB.
- ດໍາເນີນການຄໍາສັ່ງ make mrproper ເພື່ອເຮັດຄວາມສະອາດການຕັ້ງຄ່າປະຈຸບັນ.
- ດໍາເນີນການຄໍາສັ່ງ make ARCH=arm socfpga_deconfig.
ARCH=arm ຊີ້ບອກວ່າທ່ານຕ້ອງການກຳນົດຄ່າສະຖາປັດຕະຍະກຳ ARM.
socfpga_defconfig ຊີ້ບອກວ່າທ່ານຕ້ອງການໃຊ້ການຕັ້ງຄ່າ socfpga ເລີ່ມຕົ້ນ. - ດໍາເນີນການສົ່ງອອກ CROSS_COMPILE=arm-linux-gnueabihf- ຄໍາສັ່ງ.
ຄໍາສັ່ງນີ້ກໍານົດຕົວແປສະພາບແວດລ້ອມ CROSS_COMPILE ເພື່ອລະບຸຄໍານໍາຫນ້າຂອງຕ່ອງໂສ້ເຄື່ອງມືທີ່ຕ້ອງການ. - ດໍາເນີນການຄໍາສັ່ງ make ARCH=arm zImage. ຮູບພາບຜົນໄດ້ຮັບແມ່ນມີຢູ່ໃນ arch/arm/boot/zImage file.
- ວາງ zImage file ເຂົ້າໄປໃນການແບ່ງປັນ fat32 ຂອງຮູບພາບບັດ flash. ສໍາລັບຄໍາແນະນໍາຢ່າງລະອຽດ, ເບິ່ງຄູ່ມືຜູ້ໃຊ້ Cyclone V SoC FPGA ສະເພາະ GSRD ໃນ Rocketboards.org.
- ຫມາຍເຫດ: ເພື່ອໃສ່ໄດເວີ OpenCL Linux kernel ຢ່າງຖືກຕ້ອງ, ທໍາອິດໃຫ້ໂຫລດ SDKgenerated.rbf file ໃສ່ FPGA.
ເພື່ອສ້າງ .rbf file, ລວບລວມການອອກແບບ SDK example ກັບ Cyclone V SoC Development Kit Reference Platform ເປັນແພລດຟອມທີ່ກໍາຫນົດເອງເປົ້າຫມາຍ.
9. ວາງ .rbf file ເຂົ້າໄປໃນການແບ່ງປັນ fat32 ຂອງຮູບພາບບັດ flash.
ເອົາໃຈໃສ່: ການແບ່ງປັນ fat32 ຕ້ອງມີທັງ zImage file ແລະ .rbf file. ໂດຍບໍ່ມີການ .rbf file, ຄວາມຜິດພາດຮ້າຍແຮງຈະເກີດຂຶ້ນໃນເວລາທີ່ທ່ານໃສ່ໄດເວີ. - ໃສ່ແຜ່ນ micro SD ທີ່ມີໂຄງການ, ເຊິ່ງປະກອບດ້ວຍຮູບພາບ SD card ທີ່ທ່ານໄດ້ແກ້ໄຂຫຼືສ້າງກ່ອນຫນ້ານີ້, ເຂົ້າໄປໃນ Cyclone V SoC Development Kit ແລະຈາກນັ້ນເປີດກະດານ SoC FPGA.
- ກວດສອບເວີຊັນຂອງ kernel Linux ທີ່ຕິດຕັ້ງໂດຍການແລ່ນຄໍາສັ່ງ uname -r.
- ເພື່ອກວດສອບວ່າທ່ານເປີດໃຊ້ CMA ສົບຜົນສໍາເລັດໃນ kernel, ດ້ວຍ SoC FPGA board powered, ດໍາເນີນການຄໍາສັ່ງ grep init_cma /proc/kallsyms.
CMA ຖືກເປີດໃຊ້ງານຖ້າຜົນຜະລິດບໍ່ຫວ່າງ. - ເພື່ອໃຊ້ kernel Linux ທີ່ຖືກລວບລວມກັບ SDK, ລວບລວມແລະຕິດຕັ້ງໄດເວີ Linux kernel.
ການເຊື່ອມຕໍ່ທີ່ກ່ຽວຂ້ອງ
- Golden System Reference Design (GSRD) ຄູ່ມືຜູ້ໃຊ້
- ການສ້າງຮູບພາບ SD Flash Card ໃນໜ້າທີ 13
ເນື່ອງຈາກວ່າ Cyclone V SoC FPGA ເປັນລະບົບເຕັມຮູບແບບໃນຊິບ, ທ່ານຮັບຜິດຊອບໃນການສະຫນອງຄໍານິຍາມຢ່າງເຕັມທີ່ຂອງລະບົບ.
1.6.2 ການລວບລວມແລະຕິດຕັ້ງໄດເວີ OpenCL Linux Kernel
ລວບລວມໄດເວີ kernel OpenCL Linux ຕໍ່ກັບແຫຼ່ງ kernel ທີ່ລວບລວມ.
ແຫຼ່ງໄດເວີແມ່ນມີຢູ່ໃນ Cyclone V SoC FPGA ຮຸ່ນຂອງ Intel FPGA Runtime Environment ສໍາລັບ OpenCL. ນອກຈາກນັ້ນ, ໃຫ້ແນ່ໃຈວ່າທ່ານໄດ້ໂຫລດ Intel FPGA SDK ສໍາລັບ OpenCL-generated .rbf file ເຂົ້າໄປໃນ FPGA ເພື່ອປ້ອງກັນການຕິດຕັ້ງໂມດູນ Linux kernel ທີ່ບໍ່ຖືກຕ້ອງ.
- ດາວໂຫລດ Cyclone V SoC FPGA ລຸ້ນ Intel FPGA Runtime Environment ສໍາລັບ OpenCL package ຈາກສູນດາວໂຫຼດໃນ Altera webເວັບໄຊ.
ກ. ຄລິກປຸ່ມດາວໂຫຼດຢູ່ຂ້າງສະບັບຊອບແວ Quartus Prime.
ຂ. ລະບຸລຸ້ນລຸ້ນ, ລະບົບປະຕິບັດການ ແລະວິທີການດາວໂຫຼດ.
ຄ. ຄລິກແຖບຊອບແວເພີ່ມເຕີມ, ແລະເລືອກເພື່ອດາວໂຫລດ Intel FPGA
Runtime Environment ສໍາລັບ OpenCL Linux Cyclone V SoC TGZ.
ງ. ຫຼັງຈາກທີ່ທ່ານດາວໂຫລດ aocl-rte- .arm32.tgz file, unpack ມັນກັບ
ໄດເລກະທໍລີທີ່ທ່ານເປັນເຈົ້າຂອງ.
ແຫຼ່ງຄົນຂັບແມ່ນຢູ່ໃນ aocl-rte- .arm32/board/c5soc/ ໄດເຣັກທໍຣີ. - ເພື່ອລວບລວມໄດເວີ OpenCL Linux kernel ຄືນໃໝ່, ໃຫ້ຕັ້ງຄ່າ KDIR ໃນ Drive's Makefile ໄປຫາໄດເລກະທໍລີທີ່ມີແຫຼ່ງ Linux kernel files.
- ດໍາເນີນການສົ່ງອອກ CROSS_COMPILE=arm-linux-gnueabihf- ຄໍາສັ່ງເພື່ອຊີ້ບອກຄໍານໍາຫນ້າຂອງຕ່ອງໂສ້ເຄື່ອງມືຂອງທ່ານ.
- ດໍາເນີນການຄໍາສັ່ງເຮັດໃຫ້ສະອາດ.
- ດໍາເນີນການຄໍາສັ່ງ make ເພື່ອສ້າງ aclsoc_drv.ko file.
- ໂອນໄດເລກະທໍລີ opencl_arm32_rte ໄປຫາກະດານ Cyclone V SoC FPGA.
ແລ່ນ scp -r root@your-ipaddress: ຄໍາສັ່ງວາງສະພາບແວດລ້ອມ runtime ໃນ / home / root directory. - ແລ່ນສະຄຣິບ init_opencl.sh ທີ່ທ່ານສ້າງຂຶ້ນເມື່ອທ່ານສ້າງ SD cardimage.
- ເອີ້ນຄຳສັ່ງ aocl diagnose utility command. ຜົນປະໂຫຍດການວິນິດໄສຈະສົ່ງຄືນຜົນໄດ້ຮັບທີ່ຜ່ານຫຼັງຈາກທີ່ທ່ານດໍາເນີນການ init_opencl.sh ສໍາເລັດ.
1.7 ບັນຫາທີ່ຮູ້ຈັກ
ໃນປັດຈຸບັນ, ມີຂໍ້ຈໍາກັດບາງຢ່າງກ່ຽວກັບການນໍາໃຊ້ Intel FPGA SDK ສໍາລັບ OpenCL ກັບ Cyclone V SoC Development Kit Reference Platform.
- ທ່ານບໍ່ສາມາດລົບລ້າງຊື່ຜູ້ຂາຍ ແລະກະດານລາຍງານໂດຍສາຍ CL_DEVICE_VENDOR ແລະ CL_DEVICE_NAME ຂອງການໂທ clGetDeviceInfo() ໄດ້.
- ຖ້າໂຮດຈັດສັນຫນ່ວຍຄວາມຈໍາຄົງທີ່ໃນລະບົບ DDR ທີ່ໃຊ້ຮ່ວມກັນ (ນັ້ນແມ່ນ, HPS DDR) ແລະມັນດັດແປງຫນ່ວຍຄວາມຈໍາຄົງທີ່ຫຼັງຈາກການດໍາເນີນການ kernel, ຂໍ້ມູນໃນຫນ່ວຍຄວາມຈໍາອາດຈະລ້າສະໄຫມ. ບັນຫານີ້ເກີດຂື້ນເພາະວ່າຫຼັກ FPGA ບໍ່ສາມາດ snoop ກ່ຽວກັບທຸລະກໍາ CPU-to-HPS DDR.
ເພື່ອປ້ອງກັນການປະຕິບັດ kernel ຕໍ່ມາຈາກການເຂົ້າເຖິງຂໍ້ມູນທີ່ລ້າສະໄຫມ, ປະຕິບັດຫນຶ່ງໃນການແກ້ໄຂຕໍ່ໄປນີ້:
•ຢ່າດັດແປງຄວາມຊົງຈໍາຄົງທີ່ຫຼັງຈາກການເລີ່ມຕົ້ນຂອງມັນ.
• ຖ້າເຈົ້າຕ້ອງການຫຼາຍຊຸດຂໍ້ມູນ __ຄົງທີ່, ສ້າງ buffers ຄວາມຊົງຈໍາຄົງທີ່ຫຼາຍອັນ.
• ຖ້າມີ, ໃຫ້ຈັດສັນຄວາມຊົງຈຳຄົງທີ່ໃນ FPGA DDR ໃນກະດານເລັ່ງຄວາມໄວຂອງທ່ານ. - ຜົນປະໂຫຍດ SDK ໃນ ARM ພຽງແຕ່ສະຫນັບສະຫນູນໂຄງການແລະວິນິດໄສຄໍາສັ່ງຜົນປະໂຫຍດ.
ຄຳສັ່ງ flash, install and uninstall utility commands ບໍ່ສາມາດນຳໃຊ້ກັບ Cyclone V SoC Development Kit ສໍາລັບເຫດຜົນຕໍ່ໄປນີ້:
ກ. ເຄື່ອງມືການຕິດຕັ້ງຕ້ອງລວບລວມໄດເວີ aclsoc_drv Linux kernel ແລະເປີດໃຊ້ມັນຢູ່ໃນ SoC FPGA. ເຄື່ອງພັດທະນາຕ້ອງປະຕິບັດການລວບລວມ; ຢ່າງໃດກໍຕາມ, ມັນມີແຫຼ່ງ Linux kernel ສໍາລັບ SoC FPGA ແລ້ວ. ແຫຼ່ງ Linux kernel ສໍາລັບເຄື່ອງພັດທະນາແມ່ນແຕກຕ່າງຈາກ SoC FPGA. ສະຖານທີ່ຂອງແຫຼ່ງ Linux kernel ສໍາລັບ SoC FPGA ອາດຈະບໍ່ຮູ້ຈັກກັບຜູ້ໃຊ້ SDK. ເຊັ່ນດຽວກັນ, ເຄື່ອງໃຊ້ການຖອນການຕິດຕັ້ງກໍ່ບໍ່ສາມາດໃຊ້ໄດ້ກັບ Cyclone V SoC Development Kit.
ນອກຈາກນີ້, ການຈັດສົ່ງ aclsoc_drv ໃຫ້ກັບກະດານ SoC ແມ່ນສິ່ງທ້າທາຍເພາະວ່າການແຈກຢາຍເລີ່ມຕົ້ນຂອງ Cyclone V SoC Development Kit ບໍ່ມີ kernel Linux ປະກອບມີ. files ຫຼື GNU Compiler Collection (GCC) compiler.
ຂ. ປະໂຫຍດຂອງແຟດຮຽກຮ້ອງໃຫ້ມີການວາງ .rbf file ຂອງການອອກແບບ OpenCL ໃສ່ FAT32 ການແບ່ງປັນຂອງບັດ micro SD. ໃນປັດຈຸບັນ, ການແບ່ງພາທິຊັນນີ້ບໍ່ໄດ້ຖືກຕິດຕັ້ງເມື່ອຜູ້ໃຊ້ SDK ເປີດໃຊ້ກະດານ. ດັ່ງນັ້ນ, ວິທີທີ່ດີທີ່ສຸດໃນການປັບປຸງການແບ່ງສ່ວນແມ່ນການໃຊ້ເຄື່ອງອ່ານບັດແຟດແລະເຄື່ອງພັດທະນາ. - ເມື່ອປ່ຽນລະຫວ່າງ Intel FPGA SDK ສໍາລັບ OpenCL Offline Compiler ສາມາດປະຕິບັດໄດ້ files (.aocx) ທີ່ສອດຄ້ອງກັບຕົວແປຂອງກະດານທີ່ແຕກຕ່າງກັນ (ນັ້ນຄື c5soc ແລະ c5soc_sharedonly), ທ່ານຕ້ອງໃຊ້ໂປຣແກຣມຂອງ SDK ເພື່ອໂຫລດ .aocx. file ສໍາລັບການປ່ຽນກະດານໃຫມ່ເປັນຄັ້ງທໍາອິດ. ຖ້າທ່ານພຽງແຕ່ດໍາເນີນການຄໍາຮ້ອງສະຫມັກໂຮດໂດຍໃຊ້ຕົວແປກະດານໃຫມ່ແຕ່ FPGA ມີຮູບພາບຈາກຕົວແປກະດານອື່ນ, ຄວາມຜິດພາດທີ່ຮ້າຍແຮງອາດຈະເກີດຂື້ນ.
- The .qxp file ບໍ່ລວມເອົາການມອບໝາຍການແບ່ງສ່ວນສ່ວນຕິດຕໍ່ເນື່ອງຈາກຊອບແວ Quartus Prime ຕອບສະໜອງໄດ້ຕາມກຳນົດເວລາຂອງພາທິຊັນນີ້ຢ່າງສະໝໍ່າສະເໝີ.
- ເມື່ອທ່ານເປີດກະດານ, ທີ່ຢູ່ການຄວບຄຸມການເຂົ້າເຖິງສື່ (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
ຄູ່ມືການພັດທະນາເອກະສານເວທີ Porting
ວັນທີ | ຮຸ່ນ | ການປ່ຽນແປງ |
ພຶດສະພາ-17 | 2017.05.08 | •ການປ່ອຍການບໍາລຸງຮັກສາ. |
ຕຸລາ 2016 | 2016.10.31 | •ປ່ຽນຊື່ Altera SDK ສໍາລັບ OpenCL ເປັນ Intel FPGA SDK ສໍາລັບ OpenCL. •Rebranded Altera Offline Compiler ເປັນ Intel FPGA SDK ສໍາລັບ OpenCL Offline Compiler. |
ພຶດສະພາ-16 | 2016.05.02 | •ຄໍາແນະນໍາການແກ້ໄຂກ່ຽວກັບການກໍ່ສ້າງແລະດັດແປງຮູບພາບ SD flash card. •ຄໍາແນະນໍາທີ່ຖືກດັດແກ້ກ່ຽວກັບການລວບລວມຂໍ້ມູນ Linux kernel ແລະ OpenCL Linux kernel driver. |
ເດືອນພະຈິກ -15 | 2015.11.02 | •ການປ່ອຍການບໍາລຸງຮັກສາ, ແລະປ່ຽນຕົວຢ່າງຂອງ Quartus II ເປັນ Quartus Prime. |
ພຶດສະພາ-15 | 15.0.0 | •ໃນ FPGA Reconfiguration, ເອົາຄໍາແນະນໍາອອກເພື່ອ reprogram ຫຼັກ FPGA ກັບ . ຮູບພາບ rbf ໂດຍການເອີ້ນແມວ fileຊື່>. rbf > /dev/ fpga0 ຄໍາສັ່ງເນື່ອງຈາກວ່າວິທີການນີ້ບໍ່ໄດ້ຖືກແນະນໍາ. |
ທັນວາ -14 | 14.1.0 | •ປ່ຽນຊື່ເອກະສານເປັນ Altera Cyclone V SoC Development Kit Reference Platform Porting Guide. •ການປັບປຸງຜົນປະໂຫຍດ reprogram ກັບໂຄງການ aoclfilename>.aocx utility command. •ອັບເດດອຸປະກອນການວິນິດໄສໃຫ້ກັບ aocl diagnose ແລະ aocl diagnose ຄໍາສັ່ງຜົນປະໂຫຍດ. • ປັບປຸງຂັ້ນຕອນໃນການສົ່ງເວທີການອ້າງອິງໄປຫາພາກສ່ວນ SoC Board ຂອງທ່ານເພື່ອປະກອບມີຄໍາແນະນໍາກ່ຽວກັບການ Porting ແລະດັດແປງການແບ່ງພາຕິຊັນຂອງ c5soc board ເພື່ອສ້າງພາຕິຊັນ timeing-clean ສໍາລັບກະແສການປິດໄລຍະເວລາທີ່ຮັບປະກັນ. •ໃສ່ຫົວຂໍ້ການປັບປຸງເວທີການອ້າງອິງ Ported ເພື່ອອະທິບາຍຂັ້ນຕອນສໍາລັບວຽກງານດັ່ງຕໍ່ໄປນີ້: 1.Excluding the hard processor system (HPS) block in the board partition 2.ການອັບເດດຮູບພາບ SD flash card •ອັບເດດພາກສ່ວນຮູບພາບ SD Flash Card. ແນະນຳໃຫ້ໃຊ້ຮູບເວີຊັ່ນ 14.0 ຂອງ Golden System Reference Design (GSRD) ເປັນຈຸດເລີ່ມຕົ້ນແທນທີ່ຈະເປັນຮູບພາບທີ່ມີຢູ່ໃນ SoC Embedded Design Suite (EDS). •ອັບເດດການລວບລວມ Linux Kernel ແລະ OpenCL Linux Kernel Driver: 1.ເພີ່ມຄໍາແນະນໍາເພື່ອກໍານົດຕົວແປ CROSS COMPILE. 2.ປ່ຽນຄໍາສັ່ງທີ່ທ່ານດໍາເນີນການເພື່ອກວດສອບວ່າ CMA ຖືກເປີດໃຊ້ຢ່າງສໍາເລັດຜົນ. |
ກໍລະກົດ-14 | 14.0.0 | •ການປ່ອຍເບື້ອງຕົ້ນ. |
ເອກະສານ / ຊັບພະຍາກອນ
![]() |
intel FPGA SDK ສໍາລັບ OpenCL [pdf] ຄູ່ມືຜູ້ໃຊ້ FPGA SDK ສໍາລັບ OpenCL, FPGA SDK, SDK ສໍາລັບ OpenCL, SDK |