FPGA SDK cho OpenCL
Hướng dẫn sử dụng
UG-OCL009
2017.05.08
Cập nhật lần cuối cho Bộ thiết kế Intel® Quartus® Prime: 17.0
Đặt mua
Gửi phản hồi
Hướng dẫn chuyển đổi nền tảng tham khảo bộ công cụ phát triển SoC Intel® Cyclone®V SDK Intel® FPGA dành cho OpenCL™ Intel® Cyclone®V
Hướng dẫn chuyển đổi nền tảng tham chiếu bộ công cụ phát triển V SoC mô tả thiết kế phần cứng và phần mềm của Nền tảng tham chiếu bộ công cụ phát triển Intel Cyclone V (c5soc) để sử dụng với Bộ công cụ phát triển phần mềm Intel (SDK) cho OpenCL Intel ® FPGA SDK cho OpenCL ™ Intel Cyclone ® . Trước khi bắt đầu, Intel đặc biệt khuyên bạn nên tự làm quen với nội dung của các tài liệu sau:
- Intel FPGA SDK dành cho OpenCLIntel Cyclone V SoC Hướng dẫn bắt đầu
- Hướng dẫn sử dụng Intel FPGA SDK dành cho Bộ công cụ nền tảng tùy chỉnh OpenCL
- Cẩm nang thiết bị Cyclone V, Tập 3: Hướng dẫn tham khảo kỹ thuật hệ thống bộ xử lý cứng Ngoài ra, hãy tham khảo Bộ công cụ phát triển SoC Cyclone V và trang Bộ thiết kế nhúng SoC của Altera webtrang web để biết thêm thông tin. 1 2
Chú ý: Intel giả định rằng bạn có hiểu biết sâu sắc về Intel FPGA SDK dành cho Hướng dẫn sử dụng Bộ công cụ nền tảng tùy chỉnh OpenCL. Hướng dẫn chuyển đổi nền tảng tham chiếu của Bộ công cụ phát triển Cyclone V SoC không mô tả cách sử dụng Bộ công cụ nền tảng tùy chỉnh của SDK để triển khai Nền tảng tùy chỉnh cho Bộ công cụ phát triển Cyclone V SoC. Nó chỉ mô tả sự khác biệt giữa hỗ trợ SDK trên Bộ công cụ phát triển SoC Cyclone V và SDK Intel FPGA chung cho Nền tảng tùy chỉnh OpenCL.
Liên kết liên quan
- Hướng dẫn bắt đầu Intel FPGA SDK dành cho OpenCL Cyclone V SoC
- Hướng dẫn sử dụng Intel FPGA SDK dành cho Bộ công cụ nền tảng tùy chỉnh OpenCL
- Sổ tay thiết bị Cyclone V, Tập 3: Sổ tay tham khảo kỹ thuật hệ thống bộ xử lý cứng
- Trang Cyclone V SoC Development Kit và SoC Embedded Design Suite trên Altera webđịa điểm
- OpenCL và logo OpenCL là các nhãn hiệu của Apple Inc. được sử dụng dưới sự cho phép của Khronos Group™.
- Intel FPGA SDK dành cho OpenCL dựa trên Thông số kỹ thuật Khronos đã xuất bản và đã vượt qua Quy trình kiểm tra sự phù hợp của Khronos. Tình trạng tuân thủ hiện tại có thể được tìm thấy tại www.khronos.org/conformance.
Tập đoàn Intel. Đã đăng ký Bản quyền. Intel, logo Intel, các từ và logo Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus và Stratix là các thương hiệu của Tập đoàn Intel hoặc các công ty con của Intel tại Hoa Kỳ và/hoặc các quốc gia khác. Intel đảm bảo hiệu suất của các sản phẩm FPGA và chất bán dẫn của mình theo các thông số kỹ thuật hiện hành theo bảo hành tiêu chuẩn của Intel nhưng có quyền thực hiện các thay đổi đối với bất kỳ sản phẩm và dịch vụ nào vào bất kỳ lúc nào mà không cần thông báo. Intel không chịu trách nhiệm hoặc nghĩa vụ pháp lý nào phát sinh từ việc ứng dụng hoặc sử dụng bất kỳ thông tin, sản phẩm hoặc dịch vụ nào được mô tả ở đây trừ khi được Intel đồng ý rõ ràng bằng văn bản. Khách hàng của Intel nên lấy phiên bản thông số kỹ thuật thiết bị mới nhất trước khi dựa vào bất kỳ thông tin nào được công bố và trước khi đặt hàng sản phẩm hoặc dịch vụ.
*Các tên và thương hiệu khác có thể được coi là tài sản của người khác.
1.1.1 Các biến thể của Bộ công cụ phát triển SoC Cyclone V
SDK Intel FPGA dành cho Nền tảng tham chiếu Bộ công cụ phát triển SoC OpenCL Cyclone V bao gồm hai biến thể bo mạch.
- ban c5soc
Bảng mặc định này cung cấp quyền truy cập vào hai ngân hàng bộ nhớ DDR. HPS DDR có thể truy cập được bằng cả FPGA và CPU. FPGA DDR chỉ có thể được truy cập bởi FPGA. - ban c5soc_sharedonly
Biến thể bảng này chỉ chứa kết nối HPS DDR. FPGA DDR không thể truy cập được. Biến thể bo mạch này tiết kiệm diện tích hơn vì cần ít phần cứng hơn để hỗ trợ một ngân hàng bộ nhớ DDR. Bo mạch c5soc_sharedonly cũng là nền tảng tạo mẫu tốt cho bo mạch sản xuất cuối cùng có một dãy bộ nhớ DDR duy nhất.
Để nhắm mục tiêu biến thể bảng này khi biên dịch hạt nhân OpenCL của bạn, hãy bao gồm tùy chọn -board c5soc_sharedonly trong lệnh aoc của bạn.
Để biết thêm thông tin về –board tùy chọn của lệnh aoc, hãy tham khảo Intel FPGA SDK để biết Hướng dẫn lập trình OpenCL.
Liên kết liên quan
Biên dịch hạt nhân cho một bo mạch FPGA cụ thể (–board )
1.1.2 Nội dung của Nền tảng tham khảo Bộ công cụ phát triển SoC Cyclone V
Nền tảng tham chiếu bộ công cụ phát triển SoC Cyclone V bao gồm các thành phần sau files và các thư mục:
File hoặc Thư mục | Sự miêu tả |
board_env.xml | Ngôn ngữ đánh dấu có thể mở rộng (XML) file mô tả c5soc cho Intel FPGA SDK cho OpenCL. |
linux_sd_card_image.tgz | Hình ảnh thẻ flash SD được nén file chứa mọi thứ mà người dùng SDK cần để sử dụng Bộ công cụ phát triển Cyclone V SoC với SDK. |
cánh tay32 | Thư mục có nội dung sau: |
1.1.3 Các tính năng liên quan của Bộ công cụ phát triển SoC Cyclone V
Danh sách sau đây nêu bật các thành phần và tính năng của Bộ công cụ phát triển SoC Cyclone V có liên quan đến SDK Intel FPGA cho OpenCL:
- CPU ARM Cortex-A9 lõi kép chạy Linux 32-bit.
- Bus Giao diện Mở rộng Nâng cao (AXI) giữa HPS và cấu trúc lõi FPGA.
- Hai bộ điều khiển bộ nhớ DDR cứng, mỗi bộ kết nối với 1 gigabyte (GB) DDR3 SDRAM.
— Một bộ điều khiển DDR chỉ có thể truy cập được bằng lõi FPGA (tức là FPGA DDR).
— Bộ điều khiển DDR khác có thể truy cập được bằng cả HPS và FPGA (tức là HPS DDR). Bộ điều khiển chia sẻ này cho phép chia sẻ bộ nhớ miễn phí giữa CPU và lõi FPGA. - CPU có thể cấu hình lại kết cấu lõi của FPGA.
1.1.3.1 Các mục tiêu và quyết định thiết kế nền tảng tham chiếu của Bộ công cụ phát triển SoC Cyclone V Intel căn cứ vào việc triển khai Nền tảng tham chiếu của Bộ công cụ phát triển SoC Cyclone V dựa trên một số mục tiêu và quyết định thiết kế. Intel khuyên bạn nên cân nhắc các mục tiêu và quyết định này khi chuyển Nền tảng tham chiếu này sang bo mạch SoC FPGA của mình.
Dưới đây là các mục tiêu thiết kế c5soc:
- Cung cấp băng thông cao nhất có thể giữa các nhân trên FPGA và (các) hệ thống bộ nhớ DDR.
- Đảm bảo rằng các tính toán trên FPGA (nghĩa là các nhân OpenCL) không can thiệp vào các tác vụ khác của CPU có thể bao gồm việc bảo dưỡng các thiết bị ngoại vi.
- Để lại càng nhiều tài nguyên FPGA càng tốt cho tính toán nhân thay vì các thành phần giao diện.
Dưới đây là các quyết định thiết kế cấp cao là hệ quả trực tiếp từ các mục tiêu thiết kế của Intel:
- Nền tảng tham chiếu chỉ sử dụng bộ điều khiển bộ nhớ DDR cứng với cấu hình rộng nhất có thể (256 bit).
- FPGA giao tiếp trực tiếp với bộ điều khiển bộ nhớ HPS DDR mà không liên quan đến bus AXI và bộ chuyển mạch L3 bên trong HPS. Giao tiếp trực tiếp cung cấp băng thông tốt nhất có thể cho DDR và giữ cho các tính toán của FPGA không can thiệp vào giao tiếp giữa CPU và thiết bị ngoại vi của nó.
- Truy cập bộ nhớ trực tiếp thu thập phân tán (SG-DMA) không phải là một phần của logic giao diện FPGA. Thay vì truyền lượng lớn dữ liệu giữa các hệ thống bộ nhớ DDR, hãy lưu trữ dữ liệu trong HPS DDR được chia sẻ. Truy cập trực tiếp vào bộ nhớ CPU bằng FPGA hiệu quả hơn DMA. Nó tiết kiệm tài nguyên phần cứng (nghĩa là vùng FPGA) và đơn giản hóa trình điều khiển nhân Linux.
Cảnh báo: Việc truyền bộ nhớ giữa hệ thống HPS DDR được chia sẻ và hệ thống DDR chỉ có thể truy cập được bằng FPGA là rất chậm. Nếu bạn chọn
truyền bộ nhớ theo cách này, chỉ sử dụng nó cho lượng dữ liệu rất nhỏ. - Máy chủ và thiết bị thực hiện truyền dữ liệu không DMA với nhau thông qua cầu nối HPS-to-FPGA (H2F), chỉ sử dụng một cổng 32 bit duy nhất. Lý do là, nếu không có DMA, nhân Linux chỉ có thể đưa ra một yêu cầu đọc hoặc ghi 32 bit duy nhất nên không cần thiết phải có kết nối rộng hơn.
- Máy chủ gửi tín hiệu điều khiển đến thiết bị thông qua cầu H2F (LH2F) nhẹ.
Vì tín hiệu điều khiển từ máy chủ đến thiết bị là tín hiệu có băng thông thấp nên cầu LH2F là lý tưởng cho nhiệm vụ này.
1.2 Chuyển nền tảng tham chiếu sang bo mạch SoC FPGA của bạn
Để chuyển Nền tảng tham chiếu Bộ công cụ phát triển SoC Cyclone V sang bo mạch SoC FPGA của bạn, hãy thực hiện các tác vụ sau:
- Chọn phiên bản một bộ nhớ DDR hoặc hai bộ nhớ DDR của Nền tảng tham chiếu c5soc làm điểm bắt đầu cho thiết kế của bạn.
- Cập nhật vị trí ghim trong ALTERAOCLSDKROOT/board/c5soc/ /top.qsf file, trong đó ALTERAOCLSDKROOT là đường dẫn đến vị trí của Intel FPGA SDK để cài đặt OpenCL và là tên thư mục của biến thể bảng. Thư mục c5soc_shareonly dành cho biến thể bo mạch có một hệ thống bộ nhớ DDR. Thư mục c5soc dành cho biến thể bo mạch có hai hệ thống bộ nhớ DDR.
- Cập nhật cài đặt DDR cho các khối SDRAM HPS và/hoặc FPGA trong ALTERAOCLSDKROOT/board/c5soc/ /system.qsys file.
4. Tất cả SDK Intel FPGA dành cho các thiết kế bo mạch ưu tiên OpenCL phải đạt được thời gian đóng được đảm bảo. Vì vậy, vị trí của thiết kế phải rõ ràng về mặt thời gian. Để chuyển phân vùng bo mạch c5soc (acl_iface_partition.qxp) sang bo mạch SoC FPGA của bạn, hãy thực hiện các tác vụ sau:
Để biết hướng dẫn chi tiết về cách sửa đổi và bảo quản phân vùng bo mạch, hãy tham khảo Quartus
Chương Biên soạn tăng dần Prime dành cho Thiết kế theo cấp bậc và dựa trên nhóm của Cẩm nang Quartus Prime Standard Edition.
Một. Xóa acl_iface_partition.qxp khỏi thư mục ALTERAOCLSDKROOT/board/c5soc/c5soc.
b. Kích hoạt vùng LogicLock™ acl_iface_khu vực bằng cách thay đổi lệnh Tcl set_global_signment -name LL_ENABLED OFF -section_id acl_iface_khu vực thành set_global_taskment -name LL_ENABLED ON -section_id acl_iface_khu vực
c. Biên dịch hạt nhân OpenCL cho bo mạch của bạn.
đ. Nếu cần, hãy điều chỉnh kích thước và vị trí của vùng LogicLock.
đ. Khi bạn hài lòng rằng vị trí của thiết kế của bạn đã ổn định về thời gian, hãy xuất phân vùng đó dưới dạng acl_iface_partition.qxp Quartus Prime Exported Partition File.
Như được mô tả trong phần Thiết lập luồng thời gian được đảm bảo của SDK AIntel FPGA cho Hướng dẫn sử dụng Bộ công cụ nền tảng tùy chỉnh OpenCL, bằng cách nhập .qxp này file vào thiết kế cấp cao nhất, bạn đáp ứng yêu cầu cung cấp thiết kế bảng với quy trình đóng thời gian được đảm bảo.
Để biết các yếu tố có thể ảnh hưởng đến chất lượng kết quả (QoR) của phân vùng đã xuất của bạn, hãy tham khảo phần Cân nhắc về chất lượng kết quả chung cho phân vùng bo mạch đã xuất trong Hướng dẫn sử dụng Bộ công cụ nền tảng tùy chỉnh OpenCL SDK Intel FPGA.
f. Vô hiệu hóa vùng LogicLock acl_iface_khu vực bằng cách hoàn nguyên lệnh ở Bước 2 về set_global_signment -name LL_ENABLED OFF phần_id acl_iface_khu vực. - Nếu bo mạch SoC FPGA của bạn sử dụng các chân và ngoại vi khác nhau của khối HPS, hãy tạo lại bộ tải trước và nguồn cây thiết bị (DTS) file. Nếu bạn thay đổi cài đặt bộ điều khiển bộ nhớ HPS DDR, hãy tạo lại trình tải trước.
- Tạo hình ảnh thẻ flash SD.
- Tạo Nền tảng tùy chỉnh của bạn, bao gồm hình ảnh thẻ flash SD.
- Hãy cân nhắc việc tạo phiên bản môi trường thời gian chạy của Nền tảng tùy chỉnh của bạn để sử dụng với Môi trường thời gian chạy Intel FPGA (RTE) cho OpenCL. Phiên bản RTE của Nền tảng tùy chỉnh của bạn không bao gồm các thư mục phần cứng và hình ảnh thẻ flash SD. Nền tảng tùy chỉnh này tải lên hệ thống SoC FPGA để cho phép các ứng dụng máy chủ chạy. Ngược lại, phiên bản SDK của Nền tảng tùy chỉnh là cần thiết để SDK biên dịch hạt nhân OpenCL.
Mẹo: Bạn có thể sử dụng phiên bản SDK của Nền tảng tùy chỉnh cho RTE. Để lưu
trống, hãy xóa hình ảnh thẻ flash SD khỏi phiên bản RTE của Nền tảng tùy chỉnh của bạn. - Kiểm tra Nền tảng tùy chỉnh của bạn.
Tham khảo phần Kiểm tra thiết kế phần cứng của Intel FPGA SDK dành cho Hướng dẫn sử dụng Bộ công cụ nền tảng tùy chỉnh OpenCL để biết thêm thông tin.
Liên kết liên quan
- Kiểm tra thiết kế phần cứng
- Quartus Prime Incremental Compilation dành cho thiết kế theo cấp bậc và dựa trên nhóm
- Thiết lập luồng thời gian được đảm bảo
- Những cân nhắc chung về chất lượng kết quả đối với phân vùng bảng xuất khẩu
1.2.1 Cập nhật Nền tảng tham chiếu được chuyển
Trong phiên bản hiện tại của Nền tảng tham chiếu Bộ công cụ phát triển SoC Cyclone V, khối HPS nằm bên trong phân vùng xác định tất cả logic phi hạt nhân. Tuy nhiên, bạn không thể xuất HPS dưới dạng một phần của .qxp file. Để cập nhật Nền tảng tùy chỉnh hiện có mà bạn đã sửa đổi từ phiên bản trước của c5soc, hãy triển khai quy trình bảo toàn QXP, cập nhật hình ảnh thẻ flash SD để có được môi trường thời gian chạy mới nhất và cập nhật board_spec.xml file để kích hoạt tự động hóa.
Altera® SDK dành cho OpenCL phiên bản 14.1 trở lên sẽ thăm dò board_spec.xml file để biết thông tin về bảng và thực hiện cập nhật tự động. Bởi vì bạn sửa đổi
thiết kế bằng cách triển khai luồng bảo toàn QXP, bạn phải cập nhật board_spec.xml file định dạng của nó trong phiên bản hiện tại. cập nhật các file cho phép SDK phân biệt giữa Nền tảng tùy chỉnh không được bảo tồn và Nền tảng tùy chỉnh dựa trên QXP hiện tại. Tham khảo Tự động di chuyển nền tảng tùy chỉnh để tương thích chuyển tiếp trong Intel FPGA SDK dành cho Hướng dẫn sử dụng Bộ công cụ nền tảng tùy chỉnh OpenCL để biết thêm thông tin.
- Để triển khai luồng bảo toàn QXP trong thiết kế phần cứng Cyclone V SoC FPGA được chuyển từ phiên bản trước của c5soc, hãy thực hiện các bước sau để tạo phân vùng phụ nhằm loại trừ HPS khỏi .qxp file:
một. Trước khi tạo phân vùng xung quanh logic nonkernel, hãy tạo phân vùng xung quanh HPS trong Cài đặt .qsf Quartus Prime File.
Ví dụamplê:
# Phân vùng thủ công phiên bản mô hình hóa I/O dành riêng cho HPS set_instance_signment -name PARTITION_HIERARCHY borde_18261 -to “system:the_system|system_acl_iface:acl_iface|system_acl_iface_hps_0:hps_0|system_acl_iface_hps_0_hps_io:hps_io| system_acl_iface_hps_0_hps_io_border:border” -section_id “system_acl_iface_hps_0_hps_io_border:border”
# Đặt phân vùng thành loại HPS_PARTITION để phần còn lại của Quartus xử lý chính xác
set_global_signment -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=bật
–incremental_compilation_export_post_fit=on
–incremental_compilation_export_routing=on
–incremental_compilation_export_flatten=tắt
Sau khi loại trừ HPS khỏi phân vùng, bạn có thể nhập tệp .qxp file và biên dịch thiết kế của bạn. - Cập nhật hình ảnh thẻ flash SD với phiên bản hiện tại của Intel FPGA RTE cho OpenCL bằng cách thực hiện các tác vụ sau:
một. Gắn kết file bảng phân bổ (fat32) và mở rộng file phân vùng hệ thống (ext3) trong hình ảnh hiện có dưới dạng thiết bị lặp lại. Để biết hướng dẫn chi tiết, hãy tham khảo Bước 2 trong Xây dựng hình ảnh thẻ SD Flash.
b. Trong thư mục /home/root/opencl_arm32_rte, hãy xóa files từ phiên bản trước của RTE.
c. Tải xuống và giải nén phiên bản hiện tại của RTE vào thư mục /home/root/opencl_arm32_rte.
đ. bên trong /driver/version.h file của Nền tảng tùy chỉnh của bạn, hãy cập nhật chỉ định ACL_DRIVER_VERSION thành . (đối với người yêu cũample, 16.1.x, trong đó 16.1 là phiên bản SDK và x là phiên bản trình điều khiển mà bạn đặt).
đ. Xây dựng lại trình điều khiển.
f. Xóa (các) thư mục phần cứng của Nền tảng tùy chỉnh của bạn. Sao chép Nền tảng tùy chỉnh, cùng với trình điều khiển đã cập nhật, vào thư mục /home/root/opencl_arm_rte/board.
g. Sao chép Altera.icd file từ thư mục /home/root/opencl_arm32_rte và thêm nó vào thư mục /etc/OpenCL/vendors.
h. Ngắt kết nối và kiểm tra hình ảnh mới. Để biết hướng dẫn chi tiết, hãy tham khảo Bước 8 đến 11 trong Tạo Hình ảnh Thẻ Flash SD.
Liên kết liên quan
- Tạo hình ảnh thẻ nhớ SD trên trang 14
Bạn cũng có tùy chọn để tạo hình ảnh thẻ flash SD mới. - Tự động hóa nền tảng tùy chỉnh để tương thích về phía trước
1.3 Phần mềm hỗ trợ bộ nhớ dùng chung
Bộ nhớ vật lý dùng chung giữa FPGA và CPU là bộ nhớ ưu tiên cho các hạt nhân OpenCL chạy trên SoC FPGA. Bởi vì FPGA truy cập bộ nhớ vật lý dùng chung, trái ngược với bộ nhớ ảo dùng chung, nên nó không có quyền truy cập vào các bảng trang của CPU ánh xạ địa chỉ ảo của người dùng thành địa chỉ trang vật lý.
Đối với phần cứng, các nhân OpenCL truy cập bộ nhớ vật lý được chia sẻ thông qua kết nối trực tiếp với bộ điều khiển bộ nhớ cứng HPS DDR. Đối với phần mềm, việc hỗ trợ bộ nhớ vật lý dùng chung liên quan đến các cân nhắc sau:
- Các triển khai phần mềm điển hình để cấp phát bộ nhớ trên CPU (ví dụ:ample, hàm malloc()) không thể phân bổ vùng bộ nhớ mà FPGA có thể sử dụng.
Bộ nhớ mà hàm malloc() phân bổ nằm liền kề trong không gian địa chỉ bộ nhớ ảo, nhưng mọi trang vật lý cơ bản đều không thể liền kề nhau về mặt vật lý. Như vậy, máy chủ phải có khả năng phân bổ các vùng bộ nhớ liền kề về mặt vật lý. Tuy nhiên, khả năng này không tồn tại trong các ứng dụng không gian người dùng trên Linux. Do đó, trình điều khiển nhân Linux phải thực hiện việc phân bổ. - Trình điều khiển hạt nhân OpenCL SoC FPGA Linux bao gồm hàm mmap() để phân bổ bộ nhớ vật lý dùng chung và ánh xạ nó vào không gian người dùng. Hàm mmap() sử dụng lệnh gọi nhân Linux tiêu chuẩn dma_alloc_coherent() để yêu cầu các vùng bộ nhớ liền kề về mặt vật lý nhằm chia sẻ với thiết bị.
- Trong nhân Linux mặc định, dma_alloc_coherent() không phân bổ bộ nhớ vật lý liền kề có kích thước lớn hơn 0.5 megabyte (MB). Để cho phép dma_alloc_coherent() phân bổ lượng lớn bộ nhớ vật lý liền kề, hãy bật tính năng cấp phát bộ nhớ liền kề (CMA) của nhân Linux rồi biên dịch lại nhân Linux.
Đối với Nền tảng tham chiếu Bộ công cụ phát triển SoC Cyclone V, CMA quản lý 512 MB trong tổng số 1 GB bộ nhớ vật lý. Bạn có thể tăng hoặc giảm giá trị này tùy thuộc vào dung lượng bộ nhớ dùng chung mà ứng dụng yêu cầu. Cuộc gọi dma_alloc_coherent() có thể không phân bổ được toàn bộ 512 MB bộ nhớ vật lý liền kề; tuy nhiên, nó có thể thường xuyên lấy được khoảng 450 MB bộ nhớ. - CPU có thể lưu vào bộ nhớ đệm mà lệnh gọi dma_alloc_coherent() phân bổ. Đặc biệt, các thao tác ghi từ ứng dụng máy chủ không hiển thị với hạt nhân OpenCL. Hàm mmap() trong trình điều khiển hạt nhân OpenCL SoC FPGA Linux cũng chứa các lệnh gọi đến hàm pgprot_noncached() hoặc remap_pf_range() để tắt bộ nhớ đệm cho vùng bộ nhớ này một cách rõ ràng.
- Sau khi hàm dma_alloc_coherent() phân bổ bộ nhớ liền kề về mặt vật lý, hàm mmap() trả về địa chỉ ảo về đầu phạm vi, tức là khoảng địa chỉ của bộ nhớ mà bạn phân bổ. Ứng dụng máy chủ yêu cầu địa chỉ ảo này để truy cập vào bộ nhớ. Mặt khác, hạt nhân OpenCL yêu cầu địa chỉ vật lý. Trình điều khiển nhân Linux theo dõi ánh xạ địa chỉ ảo đến vật lý. Bạn có thể ánh xạ các địa chỉ vật lý mà mmap() trả về địa chỉ vật lý thực tế bằng cách thêm truy vấn vào trình điều khiển.
Lệnh gọi giao diện lập trình ứng dụng (API) aocl_mmd_shared_mem_alloc() MMD kết hợp các truy vấn sau:
một. Hàm mmap() cấp phát bộ nhớ và trả về địa chỉ ảo.
b. Truy vấn bổ sung ánh xạ địa chỉ ảo được trả về thành địa chỉ thực.
Lệnh gọi API MMD aocl_mmd_shared_mem_alloc() sau đó trả về hai địa chỉ
—địa chỉ thực được trả về là địa chỉ ảo và địa chỉ vật lý là device_ptr_out.
Ghi chú: Trình điều khiển chỉ có thể ánh xạ các địa chỉ ảo mà hàm mmap() trả về địa chỉ vật lý. Nếu bạn yêu cầu địa chỉ vật lý của bất kỳ con trỏ ảo nào khác, trình điều khiển sẽ trả về giá trị NULL.
Cảnh báo: SDK Intel FPGA dành cho thư viện thời gian chạy OpenCL giả định rằng bộ nhớ dùng chung là bộ nhớ đầu tiên được liệt kê trong board_spec.xml file. Nói cách khác, địa chỉ vật lý mà trình điều khiển nhân Linux thu được sẽ trở thành địa chỉ Avalon® mà nhân OpenCL chuyển tới HPS SDRAM.
Đối với thư viện thời gian chạy, hãy sử dụng lệnh gọi clCreateBuffer() để phân bổ bộ nhớ dùng chung làm bộ đệm thiết bị theo cách sau:
- Đối với biến thể bảng hai DDR có cả bộ nhớ dùng chung và không dùng chung, clCreateBuffer() sẽ phân bổ bộ nhớ dùng chung nếu bạn chỉ định cờ CL_MEM_USE_HOST_PTR. Việc sử dụng các cờ khác sẽ khiến clCreateBuffer() phân bổ bộ đệm trong bộ nhớ không chia sẻ.
- Đối với biến thể bo mạch một DDR chỉ có bộ nhớ dùng chung, clCreateBuffer() phân bổ bộ nhớ dùng chung bất kể bạn chỉ định cờ nào.
Hiện tại, hỗ trợ Linux 32-bit trên CPU ARM chi phối mức độ hỗ trợ bộ nhớ dùng chung trong thư viện thời gian chạy SDK. Nói cách khác, các thư viện thời gian chạy được biên dịch sang các môi trường khác (ví dụ:ample, x86_64 Linux hoặc Windows 64-bit) không hỗ trợ bộ nhớ dùng chung.
C5soc đã không triển khai bộ nhớ không đồng nhất để phân biệt giữa bộ nhớ dùng chung và không dùng chung vì những lý do sau:
1. Lịch sử—Hỗ trợ bộ nhớ không đồng nhất không khả dụng khi hỗ trợ bộ nhớ chia sẻ ban đầu được tạo.
2. Giao diện thống nhất—Vì OpenCL là một tiêu chuẩn mở nên Intel duy trì tính nhất quán giữa các nhà cung cấp nền tảng điện toán không đồng nhất. Do đó, giao diện giống như kiến trúc của các nhà cung cấp bo mạch khác được sử dụng để phân bổ và sử dụng bộ nhớ dùng chung.
1.4 Cấu hình lại FPGA
Đối với SoC FPGA, CPU có thể cấu hình lại cấu trúc lõi của FPGA mà không làm gián đoạn hoạt động của CPU. Khối phần cứng Trình quản lý FPGA nằm giữa HPS và FPGA lõi thực hiện việc cấu hình lại. Nhân Linux bao gồm một trình điều khiển cho phép truy cập dễ dàng vào Trình quản lý FPGA.
- ĐẾN view trạng thái của lõi FPGA, hãy gọi lệnh cat /sys/class/fpga/fpga0/ status.
Tiện ích chương trình Intel FPGA SDK dành cho OpenCL có sẵn cùng với Nền tảng tham chiếu Bộ công cụ phát triển SoC Cyclone V sử dụng giao diện này để lập trình FPGA. Khi lập trình lại lõi FPGA với CPU đang chạy, tiện ích chương trình sẽ thực hiện tất cả các tác vụ sau:
1. Trước khi lập trình lại, hãy tắt tất cả các cầu nối giao tiếp giữa FPGA và HPS, cả cầu H2F và LH2F.
Kích hoạt lại các cầu này sau khi lập trình lại hoàn tất.
Chú ý: Hệ thống OpenCL không sử dụng cầu nối FPGA-to-HPS (F2H). Tham khảo phần Giao diện HPS-FPGA trong Sổ tay thiết bị Cyclone V, Tập 3: Hướng dẫn tham khảo kỹ thuật hệ thống bộ xử lý cứng để biết thêm thông tin.
2. Đảm bảo rằng liên kết giữa FPGA và bộ điều khiển HPS DDR bị tắt trong quá trình lập trình lại.
3. Đảm bảo rằng các ngắt FPGA trên FPGA bị vô hiệu hóa trong quá trình lập trình lại.
Ngoài ra, hãy thông báo cho trình điều khiển từ chối mọi gián đoạn từ FPGA trong quá trình lập trình lại.
Tham khảo mã nguồn của tiện ích chương trình để biết chi tiết về việc triển khai thực tế.
Cảnh báo: Không thay đổi cấu hình của bộ điều khiển HPS DDR khi CPU đang chạy.
Làm như vậy có thể gây ra lỗi hệ thống nghiêm trọng vì bạn có thể thay đổi cấu hình bộ điều khiển DDR khi có các giao dịch bộ nhớ chưa xử lý từ CPU. Điều này có nghĩa là khi CPU đang chạy, bạn không thể lập trình lại lõi FPGA bằng hình ảnh sử dụng HPS DDR ở cấu hình khác.
Hãy nhớ rằng hệ thống OpenCL và thiết kế tham chiếu Phần cứng Vàng có sẵn với Bộ thiết kế nhúng Intel SoC FPGA (EDS), đặt HPS DDR vào một chế độ 256-bit duy nhất.
Các bộ phận của hệ thống CPU như bộ dự đoán nhánh hoặc bộ tìm nạp trước bảng trang có thể đưa ra các lệnh DDR ngay cả khi có vẻ như không có gì đang chạy trên CPU.
Do đó, thời gian khởi động là thời điểm an toàn duy nhất để thiết lập cấu hình bộ điều khiển HPS DDR.
Điều này cũng ngụ ý rằng U-boot phải có tệp nhị phân thô file (.rbf) để tải vào bộ nhớ. Nếu không, bạn có thể đang kích hoạt HPS DDR với các cổng không được sử dụng trên FPGA và sau đó có khả năng thay đổi cấu hình cổng. Vì lý do này, trình điều khiển hạt nhân OpenCL Linux không còn bao gồm logic cần thiết để thiết lập cấu hình bộ điều khiển HPS DDR.
Công tắc gói nội tuyến kép (DIP) SW3 trên Bộ công cụ phát triển SoC Cylone V kiểm soát dạng dự kiến của hình ảnh .rbf (nghĩa là liệu file được nén và/hoặc mã hóa). C5soc và Thiết kế tham chiếu phần cứng vàng có sẵn với SoC EDS, bao gồm các hình ảnh .rbf được nén nhưng không được mã hóa. Cài đặt công tắc SW3 DIP được mô tả trong Intel FPGA SDK dành cho Hướng dẫn bắt đầu OpenCL Cyclone V SoC phù hợp với cấu hình hình ảnh .rbf này.
Liên kết liên quan
- Giao diện HPS-FPGA
- Cấu hình Switch SW3
1.4.1 Chi tiết kiến trúc hệ thống FPGA
Hỗ trợ cho Nền tảng tham chiếu Bộ công cụ phát triển SoC Cyclone V dựa trên Nền tảng tham chiếu Stratix® V (s5_ref), có sẵn cùng với Intel FPGA SDK cho OpenCL.
Tổ chức tổng thể của hệ thống c5soc Qsys và trình điều khiển hạt nhân rất giống với tổ chức trong s5_ref.
Các thành phần cốt lõi của FPGA sau đây giống nhau trong cả c5soc và s5_ref:
- khối VERSION_ID
- Cơ chế nghỉ ngơi
- Bộ chia ngân hàng bộ nhớ
- Giao diện rình mò bộ đệm
- đồng hồ hạt nhân
- Các khối truy cập thanh ghi điều khiển (CRA)
1.5 Xây dựng hình ảnh thẻ SD Flash
Vì Cyclone V SoC FPGA là một hệ thống hoàn chỉnh trên một con chip nên bạn có trách nhiệm đưa ra định nghĩa đầy đủ về hệ thống. Intel khuyên bạn nên phân phối nó dưới dạng hình ảnh thẻ flash SD. Người dùng Intel FPGA SDK dành cho OpenCL có thể chỉ cần ghi hình ảnh vào thẻ flash micro SD và bo mạch SoC FPGA đã sẵn sàng để sử dụng.
Sửa đổi hình ảnh thẻ SD Flash hiện có ở trang 13
Intel khuyến nghị bạn chỉ cần sửa đổi hình ảnh có sẵn với Nền tảng tham chiếu Bộ công cụ phát triển Cyclone V SoC. Bạn cũng có tùy chọn để tạo hình ảnh thẻ flash SD mới.
Tạo hình ảnh thẻ nhớ SD trên trang 14
Bạn cũng có tùy chọn để tạo hình ảnh thẻ flash SD mới.
1.5.1 Sửa đổi hình ảnh thẻ flash SD hiện có
Intel khuyến nghị bạn chỉ cần sửa đổi hình ảnh có sẵn với Cyclone V SoC
Nền tảng tham khảo bộ công cụ phát triển. Bạn cũng có tùy chọn để tạo hình ảnh thẻ flash SD mới.
Hình ảnh c5soc linux_sd_card_image.tgz file có sẵn trong thư mục ALTERAOCLSDKROOT/board/c5soc, trong đó ALTERAOCLSDKROOT trỏ đến đường dẫn của Intel FPGA SDK cho thư mục cài đặt của OpenCL.
Chú ý: Để sửa đổi hình ảnh thẻ flash SD, bạn phải có quyền root hoặc sudo.
- Để giải nén $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz file, hãy chạy lệnh tar xvfzlinux_sd_card_image.tgz.
- Biên dịch tệp hello_world OpenCL cũampthiết kế tập tin bằng cách sử dụng hỗ trợ Nền tảng tùy chỉnh của bạn. Đổi tên .rbf file mà Intel FPGA SDK dành cho Trình biên dịch ngoại tuyến OpenCL tạo ra dưới dạng opencl.rbf và đặt nó trên phân vùng fat32 trong hình ảnh thẻ flash SD.
Bạn có thể tải xuống hello_world example design từ OpenCL Design Examptrang les trên Altera webđịa điểm. - Đặt .rbf file vào phân vùng fat32 của hình flash card.
Chú ý: Phân vùng fat32 phải chứa cả zImage file và .rbf file. Không có .rbf file, sẽ xảy ra lỗi nghiêm trọng khi bạn chèn trình điều khiển. - Sau khi bạn tạo hình ảnh thẻ SD, hãy ghi nó vào thẻ micro SD bằng cách gọi lệnh sau: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
- Để kiểm tra hình ảnh thẻ flash SD của bạn, hãy thực hiện các tác vụ sau:
Một. Lắp thẻ flash micro SD vào bo mạch SoC FPGA.
b. Cấp nguồn cho bo mạch.
c. Gọi lệnh tiện ích chẩn đoán aocl.
1.5.2 Tạo hình ảnh thẻ nhớ SD
Bạn cũng có tùy chọn để tạo hình ảnh thẻ flash SD mới. Hướng dẫn chung về cách xây dựng hình ảnh thẻ flash SD mới và xây dựng lại hình ảnh thẻ flash SD hiện có có sẵn trên trang GSRD v14.0.2 – Thẻ SD của RocketBoards.org webđịa điểm.
Các bước bên dưới mô tả quy trình tạo ảnh linux_sd_card_image.tgz từ ảnh thẻ flash SD Golden System Reference Design (GSRD):
Ghi chú:
Để tạo hình ảnh từ hình ảnh c5soc, hãy thực hiện tất cả các tác vụ áp dụng được nêu trong quy trình này.
- Tải xuống và giải nén hình ảnh thẻ flash GSRD SD phiên bản 14.0 từ Rocketboards.org.
- Gắn kết file bảng phân bổ (fat32) và mở rộng file phân vùng hệ thống (ext3) trong hình ảnh này dưới dạng thiết bị lặp lại. Để gắn kết một phân vùng, hãy thực hiện các bước sau:
một. Xác định byte bắt đầu của phân vùng trong ảnh bằng cách gọi /sbin/fdisk -lu image_file yêu cầu.
Ví dụample, phân vùng số 1 của loại W95 FAT có độ lệch khối là 2121728. Với 512 byte cho mỗi khối, độ lệch byte là 512 byte x 2121728 = 1086324736 byte.
b. Xác định một thiết bị vòng lặp miễn phí (ví dụ:ample, /dev/loop0) bằng cách gõ lệnh losstup -f.
c. Giả sử /dev/loop0 là thiết bị vòng lặp miễn phí, hãy gán hình ảnh thẻ flash của bạn cho thiết bị chặn vòng lặp bằng cách gọi losstup /dev/loop0 image_file -0 1086324736 lệnh.
đ. Gắn thiết bị vòng lặp bằng cách gọi lệnh mount /dev/loop0 /media/disk1.
trong hình ảnh file, /media/disk1 hiện là phân vùng fat32 được gắn kết.
đ. Lặp lại các bước từ a đến d cho phân vùng ext3. - Tải xuống phiên bản Cyclone V SoC FPGA của gói Intel FPGA Runtime Environment for OpenCL từ Trung tâm tải xuống trên Altera webđịa điểm.
Một. Nhấp vào nút Tải xuống bên cạnh phiên bản phần mềm Quartus Prime.
b. Chỉ định phiên bản phát hành, hệ điều hành và phương thức tải xuống.
c. Nhấp vào tab Phần mềm bổ sung và chọn tải xuống Intel FPGA
Môi trường thời gian chạy cho OpenCL Linux Cyclone V SoC TGZ.
d. Sau khi bạn tải xuống aocl-rte- .arm32.tgz file, giải nén nó vào
một thư mục mà bạn sở hữu. - Đặt aocl-rte- đã giải nén thư mục .arm32 vào thư mục /home/root/opencl_arm32_rte trên phân vùng ext3 của image file.
- Xóa (các) thư mục phần cứng của Nền tảng tùy chỉnh của bạn, sau đó đặt Nền tảng tùy chỉnh vào thư mục con bảng của /home/root/ opencl_arm32_rte.
- Tạo init_opencl.sh file trong thư mục /home/root có nội dung sau: import ALTERAOCLSDKROOT=/home/root/opencl_arm32_rteexport AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/ xuất PATH=$ALTERAOCLSDKROOT/bin:$PATH xuất LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
Người dùng SDK chạy lệnh ./init_opencl.sh nguồn để tải các biến môi trường và trình điều khiển nhân OpenCL Linux. - Nếu bạn cần cập nhật trình tải trước, DTS files hoặc nhân Linux, bạn cần có trình biên dịch arm-linux-gnueabihf-gcc từ SoC EDS. Làm theo hướng dẫn được nêu trong Hướng dẫn sử dụng Bộ thiết kế nhúng Intel SoC FPGA để lấy phần mềm, biên dịch lại và cập nhật phần mềm có liên quan. files trên phân vùng fat32 được gắn kết.
Chú ý: Rất có thể bạn cần cập nhật trình tải trước nếu Nền tảng tùy chỉnh của bạn có cách sử dụng mã pin khác với cách sử dụng mã pin trong c5soc.
Hãy nhớ: Nếu bạn biên dịch lại nhân Linux, hãy biên dịch lại trình điều khiển nhân Linux với cùng nguồn nhân Linux fileS. Nếu có sự không khớp giữa trình điều khiển nhân Linux và nhân Linux, trình điều khiển sẽ không tải. Ngoài ra, bạn phải kích hoạt CMA.
Tham khảo Biên dịch lại hạt nhân Linux để biết thêm thông tin. - Biên dịch tệp hello_world OpenCL cũampthiết kế tập tin bằng cách sử dụng hỗ trợ Nền tảng tùy chỉnh của bạn. Đổi tên .rbf file mà Intel FPGA SDK dành cho Trình biên dịch ngoại tuyến OpenCL tạo ra dưới dạng opencl.rbf và đặt nó trên phân vùng fat32 trong hình ảnh thẻ flash SD.
Bạn có thể tải xuống hello_world example design từ OpenCL Design Examptrang les trên Altera webđịa điểm.
9. Sau khi bạn lưu trữ tất cả những thứ cần thiết files trên hình ảnh thẻ flash, hãy gọi các lệnh sau:
một. đồng bộ hóa
b. ngắt kết nối/phương tiện/đĩa1
c. ngắt kết nối Ở đâu là tên thư mục bạn sử dụng để gắn phân vùng ext3 vào phần 3 trên trang 3 (ví dụ:amptập tin, /media/đĩa2).
đ. mất tập trung -d /dev/loop0
đ. mất tập -d /dev/loop1 - Nén hình ảnh thẻ flash SD bằng cách gọi lệnh sau: tar cvfz .tgz linux_sd_card_image
- Cung cấp .tgz file bên trong thư mục gốc của Nền tảng tùy chỉnh của bạn.
- Để kiểm tra hình ảnh thẻ flash SD của bạn, hãy thực hiện các tác vụ sau:
một. Ghi hình ảnh không nén thu được vào thẻ flash micro SD.
b. Lắp thẻ flash micro SD vào bo mạch SoC FPGA.
c. Cấp nguồn cho bảng.
d. Gọi lệnh tiện ích chẩn đoán aocl.
Liên kết liên quan
- Hướng dẫn sử dụng Bộ thiết kế nhúng Intel SoC FPGA
- Thiết kế OpenCL cũamptrang les trên Altera webđịa điểm
- Biên dịch lại hạt nhân Linux ở trang 16
Để kích hoạt CMA, trước tiên bạn phải biên dịch lại nhân Linux. - Truy vấn tên thiết bị của bo mạch FPGA của bạn (chẩn đoán)
1.6 Biên dịch hạt nhân Linux cho Cyclone V SoC FPGA
Trước khi chạy các ứng dụng OpenCL trên bo mạch Cyclone V SoC FPGA, bạn phải biên dịch nguồn nhân Linux, biên dịch và cài đặt trình điều khiển nhân OpenCL Linux.
- Biên dịch lại hạt nhân Linux ở trang 16
Để kích hoạt CMA, trước tiên bạn phải biên dịch lại nhân Linux. - Biên dịch và cài đặt trình điều khiển hạt nhân OpenCL Linux ở trang 17 Biên dịch trình điều khiển hạt nhân OpenCL Linux dựa trên nguồn hạt nhân đã biên dịch.
1.6.1 Biên dịch lại hạt nhân Linux
Để kích hoạt CMA, trước tiên bạn phải biên dịch lại nhân Linux.
- Nhấp vào liên kết GSRD v14.0 – Biên dịch Linux trên trang Tài nguyên của RocketBoards.org webtrang web để truy cập hướng dẫn tải xuống và xây dựng lại mã nguồn nhân Linux.
Để sử dụng với SDK Intel FPGA™ dành cho OpenCL, hãy chỉ định socfpga-3.13-rel14.0 làm . - Lưu ý: Quá trình xây dựng sẽ tạo ra Arch/arm/configs/socfpga_defconfig file. Cái này file chỉ định cài đặt cho cấu hình mặc định socfpga.
Thêm các dòng sau vào cuối 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
Giá trị cấu hình CONFIG_CMA_SIZE_MBYTES đặt giới hạn trên cho tổng số bộ nhớ liền kề vật lý khả dụng. Bạn có thể tăng giá trị này nếu bạn cần thêm bộ nhớ. - Chú ý: Tổng dung lượng bộ nhớ vật lý khả dụng cho bộ xử lý ARM trên bo mạch SoC FPGA là 1 GB. Intel không khuyên bạn nên đặt trình quản lý CMA gần 1 GB.
- Chạy lệnh make mrproper để xóa cấu hình hiện tại.
- Chạy lệnh make ARCH=arm socfpga_deconfig.
ARCH=arm cho biết bạn muốn định cấu hình kiến trúc ARM.
socfpga_defconfig cho biết bạn muốn sử dụng cấu hình socfpga mặc định. - Chạy lệnh export CROSS_COMPILE=arm-linux-gnueabihf-.
Lệnh này đặt biến môi trường CROSS_COMPILE để chỉ định tiền tố của chuỗi công cụ mong muốn. - Chạy lệnh make ARCH=arm zImage. Hình ảnh thu được có sẵn trong Arch/arm/boot/zImage file.
- Đặt zImage file vào phân vùng fat32 của ảnh thẻ flash. Để biết hướng dẫn chi tiết, hãy tham khảo Hướng dẫn sử dụng GSRD dành riêng cho Cyclone V SoC FPGA trên Rocketboards.org.
- Lưu ý: Để chèn chính xác trình điều khiển hạt nhân OpenCL Linux, trước tiên hãy tải SDKgenerated.rbf file lên FPGA.
Để tạo .rbf file, biên dịch một thiết kế SDK cũamptập tin với Nền tảng tham chiếu Bộ công cụ phát triển SoC Cyclone V làm Nền tảng tùy chỉnh được nhắm mục tiêu.
9. Đặt .rbf file vào phân vùng fat32 của hình flash card.
Chú ý: Phân vùng fat32 phải chứa cả zImage file và .rbf file. Không có .rbf file, sẽ xảy ra lỗi nghiêm trọng khi bạn chèn trình điều khiển. - Lắp thẻ micro SD đã được lập trình, chứa hình ảnh thẻ SD mà bạn đã sửa đổi hoặc tạo trước đó, vào Bộ công cụ phát triển SoC Cyclone V rồi cấp nguồn cho bo mạch SoC FPGA.
- Xác minh phiên bản hạt nhân Linux đã cài đặt bằng cách chạy lệnh uname -r.
- Để xác minh rằng bạn kích hoạt CMA thành công trong kernel, khi bo mạch SoC FPGA được bật nguồn, hãy chạy lệnh grep init_cma /proc/kallsyms.
CMA được bật nếu đầu ra không trống. - Để sử dụng nhân Linux được biên dịch lại với SDK, hãy biên dịch và cài đặt trình điều khiển nhân Linux.
Liên kết liên quan
- Hướng dẫn sử dụng Thiết kế tham chiếu hệ thống vàng (GSRD)
- Xây dựng hình ảnh thẻ SD Flash trên trang 13
Vì Cyclone V SoC FPGA là một hệ thống hoàn chỉnh trên một con chip nên bạn có trách nhiệm đưa ra định nghĩa đầy đủ về hệ thống.
1.6.2 Biên dịch và cài đặt trình điều khiển hạt nhân OpenCL Linux
Biên dịch trình điều khiển hạt nhân OpenCL Linux dựa vào nguồn hạt nhân đã biên dịch.
Nguồn trình điều khiển có sẵn trong phiên bản Cyclone V SoC FPGA của Môi trường chạy thi hành Intel FPGA cho OpenCL. Ngoài ra, hãy đảm bảo rằng bạn đã tải Intel FPGA SDK cho .rbf do OpenCL tạo file vào FPGA để ngăn chặn việc cài đặt sai mô-đun hạt nhân Linux.
- Tải xuống phiên bản Cyclone V SoC FPGA của gói Intel FPGA Runtime Environment for OpenCL từ Trung tâm tải xuống trên Altera webđịa điểm.
Một. Nhấp vào nút Tải xuống bên cạnh phiên bản phần mềm Quartus Prime.
b. Chỉ định phiên bản phát hành, hệ điều hành và phương thức tải xuống.
c. Nhấp vào tab Phần mềm bổ sung và chọn tải xuống Intel FPGA
Môi trường thời gian chạy cho OpenCL Linux Cyclone V SoC TGZ.
d. Sau khi bạn tải xuống aocl-rte- .arm32.tgz file, giải nén nó vào
một thư mục mà bạn sở hữu.
Nguồn driver nằm trong aocl-rte- Thư mục trình điều khiển .arm32/board/c5soc/. - Để biên dịch lại trình điều khiển nhân OpenCL Linux, hãy đặt giá trị KDIR trong Make của trình điều khiểnfile đến thư mục chứa nguồn nhân Linux files.
- Chạy lệnh import CROSS_COMPILE=arm-linux-gnueabihf- để chỉ ra tiền tố của chuỗi công cụ của bạn.
- Chạy lệnh làm sạch.
- Chạy lệnh make để tạo aclsoc_drv.ko file.
- Chuyển thư mục opencl_arm32_rte sang bo mạch Cyclone V SoC FPGA.
Chạy scp -r root@your-ipaddress: lệnh đặt môi trường thời gian chạy vào thư mục/home/root. - Chạy tập lệnh init_opencl.sh mà bạn đã tạo khi tạo hình ảnh thẻ SD.
- Gọi lệnh tiện ích chẩn đoán aocl. Tiện ích chẩn đoán sẽ trả về kết quả đạt sau khi bạn chạy init_opencl.sh thành công.
1.7 Các vấn đề đã biết
Hiện tại, có một số hạn chế nhất định trong việc sử dụng Intel FPGA SDK cho OpenCL với Nền tảng tham chiếu Bộ công cụ phát triển SoC Cyclone V.
- Bạn không thể ghi đè tên nhà cung cấp và bảng được báo cáo bởi chuỗi CL_DEVICE_VENDOR và CL_DEVICE_NAME của lệnh gọi clGetDeviceInfo().
- Nếu máy chủ phân bổ bộ nhớ không đổi trong hệ thống DDR dùng chung (tức là HPS DDR) và nó sửa đổi bộ nhớ không đổi sau khi thực thi kernel thì dữ liệu trong bộ nhớ có thể trở nên lỗi thời. Sự cố này phát sinh do lõi FPGA không thể theo dõi các giao dịch DDR giữa CPU với HPS.
Để ngăn các lần thực thi kernel tiếp theo truy cập vào dữ liệu đã lỗi thời, hãy triển khai một trong các giải pháp thay thế sau:
• Không sửa đổi bộ nhớ cố định sau khi khởi tạo.
• Nếu bạn yêu cầu nhiều bộ dữ liệu __constant, hãy tạo nhiều bộ nhớ đệm không đổi.
• Nếu có, hãy phân bổ bộ nhớ cố định trong FPGA DDR trên bo mạch tăng tốc của bạn. - Tiện ích SDK trên ARM chỉ hỗ trợ chương trình và chẩn đoán các lệnh tiện ích.
Các lệnh tiện ích flash, cài đặt và gỡ cài đặt không áp dụng được cho Bộ công cụ phát triển SoC Cyclone V vì những lý do sau:
Một. Tiện ích cài đặt phải biên dịch trình điều khiển hạt nhân aclsoc_drv Linux và kích hoạt nó trên SoC FPGA. Máy phát triển phải thực hiện việc biên dịch; tuy nhiên, nó đã chứa các nguồn nhân Linux cho SoC FPGA. Các nguồn nhân Linux dành cho máy phát triển khác với các nguồn dành cho SoC FPGA. Người dùng SDK có thể không biết vị trí của các nguồn nhân Linux cho SoC FPGA. Tương tự, tiện ích gỡ cài đặt cũng không có sẵn trong Bộ công cụ phát triển SoC Cyclone V.
Ngoài ra, việc cung cấp aclsoc_drv cho bo mạch SoC cũng là một thách thức vì bản phân phối mặc định của Bộ công cụ phát triển SoC Cyclone V không chứa nhân Linux bao gồm files hoặc trình biên dịch GNU Compiler Collection (GCC).
b. Tiện ích flash yêu cầu đặt .rbf file của thiết kế OpenCL trên phân vùng FAT32 của thẻ flash micro SD. Hiện tại, phân vùng này không được gắn kết khi người dùng SDK cấp nguồn cho bo mạch. Vì vậy, cách tốt nhất để cập nhật phân vùng là sử dụng đầu đọc thẻ flash và máy phát triển. - Khi chuyển đổi giữa Intel FPGA SDK để thực thi Trình biên dịch ngoại tuyến OpenCL files (.aocx) tương ứng với các biến thể bảng khác nhau (nghĩa là c5soc và c5soc_sharedally), bạn phải sử dụng tiện ích chương trình của SDK để tải .aocx file cho biến thể bảng mới lần đầu tiên. Nếu bạn chỉ chạy ứng dụng máy chủ bằng cách sử dụng một biến thể bo mạch mới nhưng FPGA lại chứa hình ảnh từ một biến thể bo mạch khác thì có thể xảy ra lỗi nghiêm trọng.
- .qxp file không bao gồm việc gán phân vùng giao diện vì phần mềm Quartus Prime luôn đáp ứng các yêu cầu về thời gian của phân vùng này.
- Khi bạn bật nguồn bo mạch, địa chỉ điều khiển truy cập phương tiện (MAC) của nó được đặt thành một số ngẫu nhiên. Nếu chính sách mạng LAN của bạn không cho phép hành vi này, hãy đặt địa chỉ MAC bằng cách thực hiện các tác vụ sau:
một. Trong khi bật nguồn U-Boot, nhấn phím bất kỳ để vào dấu nhắc lệnh U-Boot.
b. Nhập setenv ethaddr 00:07:ed:00:00:03 tại dấu nhắc lệnh.
Bạn có thể chọn bất kỳ địa chỉ MAC nào.
c. Nhập lệnh saveenv.
đ. Khởi động lại bảng.
1.8 Lịch sử sửa đổi tài liệu
Bảng 1.
Lịch sử sửa đổi tài liệu của Intel FPGA SDK cho OpenCL Cyclone V SoC
Hướng dẫn chuyển đổi nền tảng tham khảo bộ công cụ phát triển
Ngày | Phiên bản | Thay đổi |
Tháng 17-XNUMX | 2017.05.08 | •Phát hành bảo trì. |
Tháng 2016 năm XNUMX | 2016.10.31 | •Đổi tên thương hiệu Altera SDK cho OpenCL thành Intel FPGA SDK cho OpenCL. •Đã đổi thương hiệu Trình biên dịch ngoại tuyến Altera thành SDK Intel FPGA cho Trình biên dịch ngoại tuyến OpenCL. |
Tháng 16-XNUMX | 2016.05.02 | • Hướng dẫn sửa đổi về cách xây dựng và sửa đổi hình ảnh thẻ flash SD. • Hướng dẫn đã sửa đổi về cách biên dịch lại nhân Linux và trình điều khiển nhân Linux OpenCL. |
Tháng 11-15 | 2015.11.02 | •Phát hành bảo trì và thay đổi phiên bản Quartus II thành Quartus Prime. |
Tháng 15-XNUMX | 15.0.0 | •Trong Cấu hình lại FPGA, đã loại bỏ lệnh lập trình lại lõi FPGA với một . hình ảnh rbf bằng cách gọi con mèo filetên>. rbf > Lệnh /dev/ fpga0 vì phương pháp này không được khuyến khích. |
Tháng 14 năm XNUMX | 14.1.0 | •Đổi tên tài liệu thành Hướng dẫn chuyển nền tảng tham chiếu Bộ công cụ phát triển SoC Altera Cyclone V. • Đã cập nhật tiện ích lập trình lại cho chương trình aoclfilelệnh tiện ích name>.aocx. •Đã cập nhật tiện ích chẩn đoán thành chẩn đoán aocl và chẩn đoán aocl lệnh tiện ích. • Đã cập nhật quy trình trong phần Chuyển nền tảng tham chiếu sang Bảng mạch SoC của bạn để bao gồm hướng dẫn về cách chuyển và sửa đổi phân vùng bảng c5soc nhằm tạo phân vùng sạch thời gian cho luồng đóng thời gian được đảm bảo. •Thêm chủ đề Cập nhật Nền tảng tham chiếu được chuyển để phác thảo các quy trình cho các tác vụ sau: 1.Không bao gồm khối hệ thống xử lý cứng (HPS) trong phân vùng bo mạch 2.Cập nhật hình ảnh thẻ flash SD • Đã cập nhật phần Xây dựng hình ảnh thẻ SD Flash. Khuyến nghị sử dụng phiên bản 14.0 của hình ảnh Thiết kế tham chiếu hệ thống vàng (GSRD) làm điểm bắt đầu thay vì hình ảnh có sẵn với Bộ thiết kế nhúng SoC (EDS). • Đã cập nhật phần Biên dịch lại hạt nhân Linux và Trình điều khiển hạt nhân Linux OpenCL: 1.Thêm hướng dẫn để đặt biến CROSS COMPILE. 2.Đã thay đổi lệnh bạn chạy để xác minh rằng CMA đã được bật thành công. |
Ngày 14 tháng XNUMX | 14.0.0 | •Phát hành lần đầu. |
Tài liệu / Tài nguyên
![]() |
Intel FPGA SDK cho OpenCL [tập tin pdf] Hướng dẫn sử dụng SDK FPGA cho OpenCL, SDK FPGA, SDK cho OpenCL, SDK |