英特爾 - 徽標適用於 OpenCL 的 FPGA SDK
使用者指南

UG-OCL009
2017.05.08
英特爾® Quartus® Prime 設計套件最新更新:17.0

RENPHO RF FM059HS WiFi 智能足部按摩器 - 圖標 5訂閱
SAMSUNG SM A136UZKZAIO Galaxy A13 5G 智能手機 - 圖標 12傳送回饋

適用於 OpenCL™ 的英特爾® FPGA SDK 英特爾® Cyclone®V SoC 開發套件參考平台移植指南

V SoC 開發套件參考平台移植指南介紹了與面向OpenCL 的英特爾軟體開發套件(SDK) 結合使用的英特爾Cyclone V SoC 開發套件參考平台(c5soc) 的硬體和軟體設計用於OpenCL 的英特爾® FPGA SDK ™ 英特爾Cyclone ®。在開始之前,英特爾強烈建議您熟悉以下文件的內容:

  1. 適用於 OpenCL 的英特爾 FPGA SDK英特爾 Cyclone V SoC 入門指南
  2. 適用於 OpenCL 客製化平台工具套件的英特爾 FPGA SDK 使用者指南
  3. Cyclone V Device Handbook, Volume 3: Hard Processor System Technical Reference Manual 另外,請參考 Altera 的 Cyclone V SoC Development Kit 和 SoC Embedded Design Suite 頁面 web網站了解更多。 1 2

注意力: 英特爾假設您深入了解適用於 OpenCL 客製化平台工具套件的英特爾 FPGA SDK 使用者指南。 Cyclone V SoC 開發套件參考平台移植指南未描述如何使用 SDK 的自訂平台工具包來實作 Cyclone V SoC 開發套件的自訂平台。它僅描述 Cyclone V SoC 開發套件上的 SDK 支援與適用於 OpenCL 客製化平台的通用 Intel FPGA SDK 之間的差異。

相關連結

  • 適用於 OpenCL Cyclone V SoC 的英特爾 FPGA SDK 入門指南
  • 適用於 OpenCL 客製化平台工具套件的英特爾 FPGA SDK 使用者指南
  • Cyclone V 裝置手冊,第 3 卷:硬處理器系統技術參考手冊
  • Altera 上的 Cyclone V SoC 開發套件和 SoC 嵌入式設計套件頁面 web地點
  1. OpenCL 和 OpenCL 標誌是 Apple Inc. 經 Khronos Group™ 許可使用的商標。
  2. 面向 OpenCL 的英特爾 FPGA SDK 基於已發布的 Khronos 規範,並已通過 Khronos 一致性測試流程。 當前的一致性狀態可以在以下位置找到 www.khronos.org/conformance.

英特爾公司。版權所有。 Intel、Intel 標誌、Altera、Arria、Cyclone、Enpirion、MAX、Nios、Quartus 和 Stratix 文字和標誌是 Intel Corporation 或其子公司在美國和/或其他國家的商標。英特爾根據英特爾的標準保固保證其 FPGA 和半導體產品的性能符合當前規格,但保留隨時更改任何產品和服務的權利,恕不另行通知。除非英特爾明確書面同意,英特爾不承擔因應用或使用本文所述的任何資訊、產品或服務而產生的任何責任或義務。建議英特爾客戶在依賴任何已發佈的資訊以及訂購產品或服務之前先取得最新版本的設備規格。
*其他名稱和品牌可能被聲稱為其他人的財產。

1.1.1 Cyclone V SoC 開發套件參考平台板型號
適用於 OpenCL Cyclone V SoC 開發套件參考平台的英特爾 FPGA SDK 包含兩個板版本。

  • c5soc板
    此預設板提供對兩個 DDR 記憶體條的存取。 HPS DDR 可由 FPGA 和 CPU 存取。 FPGA DDR 只能由 FPGA 存取。
  • c5soc_shareonly 板
    此板型號僅包含 HPS DDR 連接。 FPGA DDR 無法存取。這種主機板變體的面積效率更高,因為支援一個 DDR 記憶體條所需的硬體更少。 c5soc_shareonly 板也是一個很好的原型平台,適用於具有單一 DDR 記憶體條的最終生產板。
    若要在編譯 OpenCL 核心時針對此板變體,請在 aoc 命令中包含 -board c5soc_shareonly 選項。
    有關董事會的更多信息aoc 指令的選項,請參閱 Intel FPGA SDK for OpenCL 程式設計指南。

相關連結
為特定 FPGA 板編譯核心(-board )
1.1.2 Cyclone V SoC 開發套件參考平台的內容
Cyclone V SoC 開發套件參考平台由以下部分組成 files 和目錄:

File 或目錄 描述
board_env.xml 可擴展標記語言 (XML) file 它描述了適用於 OpenCL 的英特爾 FPGA SDK 的 c5soc。
linux_sd_card_image.tgz 壓縮的 SD 快閃記憶體卡映像 file 其中包含 SDK 用戶將 Cyclone V SoC 開發套件與 SDK 結合使用所需的一切。
ARM32 包含以下內容的目錄:

1.1.3 Cyclone V SoC 開發套件的相關特性

以下列表重點介紹了與面向 OpenCL 的英特爾 FPGA SDK 相關的 Cyclone V SoC 開發套件元件和功能:

  • 運行 9 位元 Linux 的雙核心 ARM Cortex-A32 CPU。
  • HPS 和 FPGA 核心結構之間的高階可擴充介面 (AXI) 匯流排。
  • 兩個硬化 DDR 記憶體控制器,每個控制器連接到 1 GB DDR3 SDRAM。
    — 一個 DDR 控制器只能由 FPGA 核心存取(即 FPGA DDR)。
    — HPS 和 FPGA 皆可存取另一個 DDR 控制器(即 HPS DDR)。此共享控制器允許 CPU 和 FPGA 核心之間自由共享記憶體。
  • CPU 可以重新配置 FPGA 核心結構。

1.1.3.1 Cyclone V SoC 開發套件參考平台設計目標和決策 Intel 將 Cyclone V SoC 開發套件參考平台的實現基於多個設計目標和決策。英特爾建議您將此參考平台移植到 SoC FPGA 板時考慮這些目標和決策。
以下是 c5soc 的設計目標:

  1. 在 FPGA 核心和 DDR 記憶體系統之間提供盡可能高的頻寬。
  2. 確保 FPGA(即 OpenCL 核心)上的計算不會幹擾可能包括服務週邊的其他 CPU 任務。
  3. 為核心運算而不是介面元件留下盡可能多的 FPGA 資源。

以下是高層設計決策,它們是英特爾設計目標的直接結果:

  1. 參考平台僅使用具有最寬可能配置(256 位元)的硬 DDR 記憶體控制器。
  2. FPGA直接與HPS DDR記憶體控制器通信,無需涉及HPS內部的AXI匯流排和L3交換器。直接通訊為 DDR 提供了盡可能最佳的頻寬,並防止 FPGA 計算幹擾 CPU 及其周邊設備之間的通訊。
  3. 分散-聚集直接記憶體存取 (SG-DMA) 不是 FPGA 介面邏輯的一部分。不要在 DDR 記憶體系統之間傳輸大量數據,而是將數據儲存在共享 HPS DDR 中。 FPGA 直接存取 CPU 記憶體比 DMA 更有效率。節省了硬體資源(即FPGA面積),簡化了Linux核心驅動。
    警告: 共享HPS DDR系統和只能由FPGA存取的DDR系統之間的記憶體傳輸非常緩慢。如果您選擇
    以這種方式傳輸內存,僅將其用於非常少量的數據。
  4. 主機和裝置僅使用單一 2 位元端口,透過 HPS 至 FPGA (H32F) 橋接器在彼此之間執行非 DMA 資料傳輸。原因是,如果沒有 DMA,Linux 核心只能發出單一 32 位元讀取或寫入請求,因此沒有必要擁有更廣泛的連線。
  5. 主機透過輕量級 H2F (LH2F) 橋接器向設備發送控制訊號。
    由於從主機到裝置的控制訊號是低頻寬訊號,因此 LH2F 橋接器非常適合此任務。

1.2 將參考平台移植到您的 SoC FPGA 板
若要將 Cyclone V SoC 開發套件參考平台移植到 SoC FPGA 板,請執行下列任務:

  1. 選擇 c5soc 參考平台的一個 DDR 記憶體或兩個 DDR 記憶體版本作為您設計的起點。
  2. 更新 ALTERAOCLSDKROOT/board/c5soc/ 中的腳位位置/top.qsf file,其中 ALTERAOCLSDKROOT 是面向 OpenCL 的英特爾 FPGA SDK 安裝位置的路徑,以及是板變體的目錄名稱。 c5soc_shareonly 目錄適用於具有一個 DDR 記憶體系統的主機板版本。 c5soc 目錄適用於具有兩個 DDR 記憶體系統的主機板型號。
  3.  更新 ALTERAOCLSDKROOT/board/c5soc/ 中 HPS 和/或 FPGA SDRAM 區塊的 DDR 設定/系統.qsys file.
    4. 所有適用於 OpenCL 的英特爾 FPGA SDK 首選電路板設計都必須實現保證的時序收斂。因此,設計的佈局必須是時序清晰的。若要將 c5soc 板分區 (acl_iface_partition.qxp) 移植到 SoC FPGA 板,請執行下列任務:
    有關修改和保留板分區的詳細說明,請參閱 Quartus
    Quartus Prime 標準版手冊的《分層和基於團隊設計的 Prime 增量編譯》章節。
    A。從 ALTERAOCLSDKROOT/board/c5soc/c5soc 目錄中刪除 acl_iface_partition.qxp。
    b.將 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 來啟用 acl_iface_region LogLface™ 區域
    C。為您的主機板編譯 OpenCL 核心。
    d.如有必要,請調整 LogicLock 區域的大小和位置。
    e.當您對設計的佈局時序乾淨感到滿意時,將該分區匯出為 acl_iface_partition.qxp Quartus Prime Exported Partition File.
    如 AIntel FPGA SDK for OpenCL 自訂平台工具套件使用者指南的建立保證時序流程部分所述,透過匯入此 .qxp  file 進入頂層設計後,您就滿足了提供具有保證時序收斂流程的電路板設計的要求。
    有關可能影響匯出分區結果品質 (QoR) 的因素,請參閱《面向 OpenCL 自訂平台工具套件使用者指南》的英特爾 FPGA SDK 中匯出板分區的一般結果品質注意事項部分。
    F。將步驟 2 中的指令還原為 set_global_assignment -name LL_ENABLED OFF section_id acl_iface_region 來停用 acl_iface_region LogicLock 區域。
  4. 如果您的 SoC FPGA 板使用 HPS 區塊的不同引腳和周邊設備,請重新產生預先載入器和裝置樹源 (DTS) file。如果變更 HPS DDR 記憶體控制器設置,請重新產生預載器。
  5. 建立 SD 快閃記憶體卡映像。
  6. 建立您的自訂平台,其中包括 SD 快閃卡映像。
  7. 考慮創建自訂平台的運行時環境版本,以便與面向 OpenCL 的英特爾 FPGA 運行時環境 (RTE) 一起使用。自訂平台的 RTE 版本不包括硬體目錄和 SD 快閃記憶體卡映像。此客製化平台載入到 SoC FPGA 系統上以允許主機應用程式運作。相較之下,自訂平台的 SDK 版本是 SDK 編譯 OpenCL 核心所必需的。
    提示:您可以將自訂平台的 SDK 版本用於 RTE。儲存
    空間,從自訂平台的 RTE 版本中刪除 SD 快閃記憶體卡映像。
  8. 測試您的自訂平台。
    如需了解更多信息,請參閱面向 OpenCL 定制平台工具套件用戶指南的英特爾 FPGA SDK 的測試硬體設計部分。

相關連結

  • 測試硬體設計
  • 用於分層和基於團隊設計的 Quartus Prime 增量編譯
  • 建立保證時序流
  • 匯出板分區的結果一般品質注意事項

1.2.1 更新移植的參考平台
在目前版本的 Cyclone V SoC 開發套件參考平台中,HPS 區塊位於定義所有非核心邏輯的分割區內。但是,您無法將 HPS 作為 .qxp 的一部分匯出 file。若要更新從先前版本的 c5soc 修改的現有自訂平台,請實作 QXP 儲存流程、更新 SD 快閃卡映像以取得最新的執行環境,並更新 board_spec.xml file 啟用自動遷移。
Altera® SDK for OpenCL 版本 14.1 及更高版本探測 board_spec.xml file 獲取董事會信息,並實現自動更新。因為你修改了
透過實作 QXP 儲存流程進行設計,您必須更新 board_spec.xml file 為目前版本的格式。更新中 file 允許 SDK 區分未保留的自訂平台和目前基於 QXP 的自訂平台。有關更多信息,請參閱《面向 OpenCL 的英特爾 FPGA SDK 自訂平台工具套件使用者指南》中的自訂平台自動遷移以實現前向相容性。

  1. 若要在從先前版本的 c5soc 移植的 Cyclone V SoC FPGA 硬體設計中實作 QXP 保留流程,請執行下列步驟來建立子分割區以從 .qxp 中排除 HPS file:
    A。在圍繞非核心邏輯建立分割區之前,請在 .qsf Quartus Prime Settings 中圍繞 HPS 建立分割區 File.
    對於前amp樂:
    # 手動對模擬 HPS 專用 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_iface|system_acl_iface_hps_0:hps_0|system_acl_mcl_hps_0:hps_XNUMX 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 並編譯您的設計。
  2. 透過執行下列任務,使用目前版本的適用於 OpenCL 的英特爾 FPGA RTE 更新 SD 快閃卡映像:
    A。安裝 file 分配表(fat32)和擴展 file 現有映像中的系統 (ext3) 分割區作為環回裝置。有關詳細說明,請參閱建置 SD 快閃記憶體卡映像中的步驟 2。
    b.在/home/root/opencl_arm32_rte目錄下,刪除 file來自先前版本的 RTE。
    C。下載目前版​​本的 RTE 並將其解壓縮到 /home/root/opencl_arm32_rte 目錄中。
    d.在裡面/驅動程式/版本.h file 的自訂平台,將 ACL_DRIVER_VERSION 指派更新為。 (例如amp文件,16.1.x,其中 16.1 是 SDK 版本,x 是您設定的驅動程式版本)。
    e.重建驅動程式。
    F。刪除自訂平台的硬體資料夾。將自訂平台以及更新的驅動程式複製到 /home/root/opencl_arm_rte/board 目錄。
    G。複製 Altera.icd file 從 /home/root/opencl_arm32_rte 目錄並將其新增至 /etc/OpenCL/vendors 目錄。
    H。卸載並測試新映像。有關詳細說明,請參閱建置 SD 快閃記憶體卡映像中的步驟 8 至 11。

相關連結

  • 建立 SD 快閃記憶體卡映像(第 14 頁)
    您也可以選擇建立新的 SD 快閃卡映像。
  • 自訂平台自動遷移以實現前向相容性

1.3 共享記憶體的軟體支持
FPGA 和 CPU 之間的共享實體記憶體是在 SoC FPGA 上運行的 OpenCL 核心的首選記憶體。由於 FPGA 存取的是共享實體內存,而不是共享虛擬內存,因此它無法存取將用戶虛擬位址映射到實體頁位址的 CPU 頁表。
在硬體方面,OpenCL 核心透過直接連接 HPS DDR 硬記憶體控制器來存取共享實體記憶體。就軟體而言,共享實體記憶體的支援涉及以下考慮因素:

  1. 在 CPU 上分配記憶體的典型軟體實作(例如amp例如,malloc() 函數)無法分配 FPGA 可能使用的記憶體區域。
    malloc() 函數分配的內存在虛擬記憶體位址空間中是連續的,但任何底層物理頁在物理上不太可能是連續的。因此,主機必須能夠分配物理上連續的記憶體區域。然而,Linux 上的用戶空間應用程式並不存在這種能力。因此,Linux核心驅動程式必須執行分配。
  2. OpenCL SoC FPGA Linux 核心驅動程式包含 mmap() 函數來分配共享實體記憶體並將其映射到使用者空間。 mmap() 函數使用標準 Linux 核心呼叫 dma_alloc_coherent() 來請求物理連續的記憶體區域以與裝置共用。
  3. 在預設的 Linux 核心中,dma_alloc_coherent() 不會分配大小超過 0.5 兆位元組 (MB) 的實體連續記憶體。若要允許 dma_alloc_coherent() 分配大量實體連續內存,請啟用 Linux 核心的連續記憶體分配器 (CMA) 功能,然後重新編譯 Linux 核心。
    對於 Cyclone V SoC 開發套件參考平台,CMA 管理 512 GB 實體記憶體中的 1 MB。您可以增加或減少該值,具體取決於應用程式所需的共享記憶體量。 dma_alloc_coherent() 呼叫可能無法分配完整的 512 MB 實體連續記憶體;但是,它通常可以獲得大約 450 MB 的記憶體。
  4. CPU 可以快取 dma_alloc_coherent() 呼叫分配的記憶體。特別是,來自主機應用程式的寫入操作對 OpenCL 核心不可見。 OpenCL SoC FPGA Linux 核心驅動程式中的 mmap() 函數還包含對 pgprot_noncached() 或 remap_pf_range() 函數的調用,以明確停用此記憶體區域的快取。
  5. dma_alloc_coherent() 函數分配物理連續的記憶體後,mmap() 函數將虛擬位址傳回到範圍的開頭,即您指派的記憶體的位址跨度。主機應用程式需要此虛擬位址來存取記憶體。另一方面,OpenCL 核心需要物理位址。 Linux 核心驅動程式追蹤虛擬位址到實體位址的對應。您可以透過向驅動程式新增查詢來將 mmap() 傳回的實體位址對應到實際實體位址。
    aocl_mmd_shared_mem_alloc() MMD 應用程式介面 (API) 呼叫包含下列查詢:
    A。 mmap() 函數分配記憶體並傳回虛擬位址。
    b.將傳回的虛擬位址對應到實體位址的額外查詢。
    然後 aocl_mmd_shared_mem_alloc() MMD API 呼叫傳回兩個位址
    ——實際回傳的位址是虛擬位址,實體位址去device_ptr_out。
    筆記: 驅動程式只能將 mmap() 函數傳回的虛擬位址對應到實體位址。如果請求任何其他虛擬指標的實體位址,驅動程式將傳回 NULL 值。

警告: 適用於 OpenCL 運行時庫的英特爾 FPGA SDK 假定共享記憶體是 board_spec.xml 中列出的第一個內存 file。換句話說,Linux 核心驅動程式所取得的實體位址成為 OpenCL 核心傳遞給 HPS SDRAM 的 Avalon® 位址。
對於運行時庫,使用 clCreateBuffer() 呼叫按以下方式將共享記憶體分配為設備緩衝區:

  • 對於同時具有共享和非共享記憶體的雙 DDR 板變體,如果指定 CL_MEM_USE_HOST_PTR 標誌,則 clCreateBuffer() 會分配共享記憶體。使用其他標誌會導致 clCreateBuffer() 在非共享記憶體中分配緩衝區。
  • 對於僅具有共享記憶體的單 DDR 板變體,clCreateBuffer() 會分配共享內存,無論您指定哪個標誌。
    目前,ARM CPU 上的 32 位元 Linux 支援決定了 SDK 運行時庫中共享記憶體支援的範圍。換句話說,運行時庫編譯到其他環境(例如amp檔案、x86_64 Linux 或 64 位元 Windows)不支援共享記憶體。
    C5soc 沒有實現異質內存來區分共享內存和非共享內存,原因如下:
    1. 歷史-最初建立共享記憶體支援時,異質記憶體支援不可用。
    2.統一介面-由於OpenCL是一個開放標準,英特爾在異質運算平台供應商之間保持一致性。因此,使用與其他闆卡供應商架構相同的介面來分配和使用共享記憶體。

1.4 FPGA重新配置
對於SoC FPGA,CPU 可以在不中斷CPU 運作的情況下重新配置FPGA 核心結構。跨 HPS 和核心 FPGA 的 FPGA 管理器硬體模組執行重新配置。 Linux 核心包含一個驅動程序,可以輕鬆存取 FPGA 管理器。

  • 到 view FPGA 核心的狀態,呼叫 cat /sys/class/fpga/fpga0/ status 指令。
    Cyclone V SoC 開發套件參考平台提供的 Intel FPGA SDK for OpenCL 程式公用程式使用此介面對 FPGA 進行程式設計。當使用正在運行的 CPU 對 FPGA 核心重新編程時,程式實用程式將執行以下所有任務:
    1. 重新編程之前,請停用 FPGA 和 HPS 之間的所有通訊橋,包括 H2F 和 LH2F 橋。
    重新編程完成後重新啟用這些橋接。
    注意:OpenCL 系統不使用 FPGA 到 HPS (F2H) 橋接器。有關詳細信息,請參閱 Cyclone V 裝置手冊第 3 卷:硬處理器系統技術參考手冊中的 HPS-FPGA 介面部分。
    2. 確保在重新編程期間停用 FPGA 和 HPS DDR 控制器之間的連結。
    3. 確保在重新編程期間停用 FPGA 上的 FPGA 中斷。
    另外,通知驅動程式在重新編程期間拒絕來自 FPGA 的任何中斷。

有關實際實現的詳細信息,請參閱程式實用程式的原始程式碼。

警告: CPU 運作時請勿變更 HPS DDR 控制器的配置。
這樣做可能會導致致命的系統錯誤,因為當 CPU 存在未完成的記憶體事務時,您可能會變更 DDR 控制器配置。這表示當 CPU 運作時,您不能使用在不同配置中使用 HPS DDR 的映像重新編程 FPGA 核心。
請記住,OpenCL 系統以及英特爾 SoC FPGA 嵌入式設計套件 (EDS) 提供的黃金硬體參考設計將 HPS DDR 設定為單一 256 位元模式。
即使 CPU 上沒有運行任何東西,分支預測器或頁表預取器等 CPU 系統元件也可能會發出 DDR 命令。
因此,啟動時間是設定 HPS DDR 控制器配置的唯一安全時間。
這也意味著 U-boot 必須有一個原始二進位文件 file (.rbf) 要載入到記憶體中的圖片。否則,您可能會使用 FPGA 上未使用的連接埠啟用 HPS DDR,然後可能會變更連接埠配置。因此,OpenCL Linux 核心驅動程式不再包含設定 HPS DDR 控制器配置所需的邏輯。
Cylon V SoC 開發套件上的 SW3 雙列直插式封裝 (DIP) 開關控制 .rbf 映像的預期形式(即,是否 file 被壓縮和/或加密)。 C5soc 和 SoC EDS 提供的黃金硬體參考設計包括壓縮但未加密的 .rbf 影像。適用於 OpenCL Cyclone V SoC 的英特爾 FPGA SDK 入門指南中所述的 SW3 DIP 開關設定與此 .rbf 映像配置相符。

相關連結

  • HPS-FPGA 介面
  • 配置 SW3 交換機

1.4.1 FPGA 系統架構細節
對 Cyclone V SoC 開發套件參考平台的支援是基於 Stratix® V 參考平台 (s5_ref),可透過適用於 OpenCL 的英特爾 FPGA SDK 取得。
c5soc Qsys 系統和核心驅動程式的整體組織與 s5_ref 中的非常相似。
以下 FPGA 核心元件在 c5soc 和 s5_ref 中是相同的:

  • VERSION_ID 區塊
  • 休息機制
  • 記憶體條分配器
  • 快取監聽介面
  • 內核時鐘
  • 控制暫存器存取 (CRA) 區塊

1.5 建置 SD 快閃記憶體卡鏡像
由於 Cyclone V SoC FPGA 是一個完整的系統單晶片,因此您有責任提供系統的完整定義。英特爾建議您以 SD 快閃卡映像的形式提供它。適用於 OpenCL 的英特爾 FPGA SDK 用戶只需將映像寫入微型 SD 快閃卡,SoC FPGA 板即可使用。
修改現有 SD 快閃記憶體卡映像(第 13 頁)
英特爾建議您只需修改 Cyclone V SoC 開發套件參考平台提供的映像即可。您也可以選擇建立新的 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 for OpenCL 的安裝目錄的路徑。

注意力: 若要修改 SD 快閃記憶體卡映像,您必須具有 root 或 sudo 權限。

  1. 解壓縮 $ALTERAOCLSDKROOT/板/c5soc/linux_sd_card_image.tgz file,執行 tar xvfzlinux_sd_card_image.tgz 指令。
  2. 編譯 hello_world OpenCL examp使用您的自訂平台支援進行設計。重命名.rbf file 用於 OpenCL 離線編譯器的英特爾 FPGA SDK 產生為 opencl.rbf,並將其放置在 SD 快閃卡映像內的 fat32 分割區上。
    您可以下載 hello_world examp來自 OpenCL Design Ex 的設計ampAltera 上的 les 頁面 web地點。
  3. 放置 .rbf file 進入閃存卡映像的 fat32 分區。
    注意力: fat32 分區必須包含 zImage file 和.rbf file。沒有 .rbf file,插入驅動程式時會出現致命錯誤。
  4. 建立 SD 卡映像後,透過呼叫以下命令將其寫入微型 SD 卡: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
  5. 若要測試 SD 快閃記憶體卡映像,請執行下列任務:
    A。將 micro SD 快閃記憶體卡插入 SoC FPGA 板。
    b.給開發板加電。
    C。呼叫 aocl 診斷實用程式命令。

1.5.2 建立SD閃存卡鏡像
您也可以選擇建立新的 SD 快閃卡映像。有關建立新 SD 快閃卡映像和重建現有 SD 快閃卡映像的通用說明,請造訪 RocketBoards.org 的 GSRD v14.0.2 – SD 卡頁面 web地點。
以下步驟描述了從黃金系統參考設計 (GSRD) SD 快閃記憶體卡映像建立 linux_sd_card_image.tgz 映像的過程:
筆記:
若要從 c5soc 映像建立映像,請執行此過程中概述的所有適用任務。

  1. 從 Rocketboards.org 下載並解壓縮 GSRD SD 快閃卡映像版本 14.0。
  2. 安裝 file 分配表(fat32)和擴展 file 此映像中的系統 (ext3) 分割區作為環回裝置。若要掛載分割區,請執行下列步驟:
    A。透過呼叫 /sbin/fdisk -lu image_ 來確定映像中分割區的位元組開頭file 命令。
    對於前amp檔案中,類型為 W1 FAT 的分區號 95 的區塊偏移量為 2121728。
    b.識別一個空閒的循環設備(例如ample、/dev/loop0),方法是輸入 losetup -f 指令。
    C。假設 /dev/loop0 是空閒循環設備,透過呼叫 losetup /dev/loop0 image_ 將閃存卡映像分配給循環塊設備file -0 1086324736 命令。
    d.透過呼叫 mount /dev/loop0 /media/disk1 指令掛載循環設備。
    影像內 file, /media/disk1 現在是已安裝的 fat32 分割區。
    e.對 ext3 分割區重複步驟 a 到 d。
  3. 從 Altera 的下載中心下載適用於 OpenCL 軟體包的 Intel FPGA Runtime Environment 的 Cyclone V SoC FPGA 版本 web地點。
    A。按一下 Quartus Prime 軟體版本旁的下載按鈕。
    b.指定發布版本、作業系統和下載方法。
    C。按一下「附加軟體」選項卡,然後選擇下載 Intel FPGA
    OpenCL Linux Cyclone V SoC TGZ 的運行環境。
    d.下載 aocl-rte- 後.arm32.tgz file,將其解壓縮到
    您擁有的目錄。
  4. 將解壓縮後的 aocl-rte-將 .arm32 目錄複製到映像的 ext32 分割區上的 /home/root/opencl_arm3_rte 目錄中 file.
  5. 刪除自訂平台的硬體資料夾,然後將自訂平台放入 /home/root/opencl_arm32_rte 的 board 子目錄中。
  6. 建立init_opencl.sh file 在 /home/root 目錄中包含以下內容:export ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte export 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.komod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.komod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.komod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.komod
    SDK使用者運行source ./init_opencl.sh指令載入環境變數和OpenCL Linux核心驅動。
  7. 如果需要更新預先載入器,DTS files 或 Linux 內核,您需要 SoC EDS 中的 arm-linux-gnueabihf-gcc 編譯器。按照《英特爾 SoC FPGA 嵌入式設計套件使用者指南》中概述的說明獲取軟體、重新編譯它們並更新相關 files 位於已安裝的 fat32 分割區上。
    注意力: 如果您的自訂平台的引腳用法與 c5soc 中的引腳用法不同,您很可能需要更新預先載入器。
    請記住:如果重新編譯 Linux 內核,請使用相同的 Linux 內核來源重新編譯 Linux 核心驅動程式 files。如果 Linux 核心驅動程式與 Linux 核心不匹配,則驅動程式將無法載入。此外,您還必須啟用 CMA。
    有關詳細信息,請參閱重新編譯 Linux 核心。
  8. 編譯 hello_world OpenCL examp使用您的自訂平台支援進行設計。重命名.rbf file 用於 OpenCL 離線編譯器的英特爾 FPGA SDK 產生為 opencl.rbf,並將其放置在 SD 快閃卡映像內的 fat32 分割區上。
    您可以下載 hello_world examp來自 OpenCL Design Ex 的設計ampAltera 上的 les 頁面 web地點。
    9. 儲存完所有必要的內容後 file到閃存卡映像上,呼叫以下命令:
    A。同步
    b.卸載/media/disk1
    C。解除安裝在哪裡是用於安裝第 3 頁 3 中的 ext3 分割區的目錄名稱(例如amp文件,/media/disk2)。
    d.遺失設定-d /dev/loop0
    e. losetup -d /dev/loop1
  9. 透過呼叫以下指令壓縮 SD 快閃記憶體卡映像:tar cvfz .tgz linux_sd_card_image
  10. 交付.tgz file 在您的自訂平台的根目錄中。
  11. 若要測試 SD 快閃記憶體卡映像,請執行下列任務:
    A。將產生的未壓縮影像寫入微型 SD 快閃記憶體卡。
    b.將 micro SD 快閃記憶體卡插入 SoC FPGA 板。
    C。給開發板加電。
    d.呼叫 aocl 診斷實用程式命令。

相關連結

  • 英特爾 SoC FPGA 嵌入式設計套件使用者指南
  • OpenCL 設計擴充ampAltera 上的 les 頁面 web地點
  • 重新編譯 Linux 核心(第 16 頁)
    若要啟用CMA,必須先重新編譯Linux 核心。
  • 查詢您的FPGA板的設備名稱(診斷)

1.6 編譯 Cyclone V SoC FPGA 的 Linux 內核
在 Cyclone V SoC FPGA 板上運行 OpenCL 應用程式之前,必須編譯 Linux 核心原始碼,並編譯並安裝 OpenCL Linux 核心驅動程式。

  1. 重新編譯 Linux 核心(第 16 頁)
    若要啟用CMA,必須先重新編譯Linux 核心。
  2. 編譯並安裝 OpenCL Linux 核心驅動程式第 17 頁 根據已編譯的核心原始碼編譯 OpenCL Linux 核心驅動程式。

1.6.1 重新編譯Linux內核
若要啟用CMA,必須先重新編譯Linux 核心。

  1. 點擊 RocketBoards.org 資源頁面上的 GSRD v14.0 – 編譯 Linux 鏈接 web網站存取有關下載和重建 Linux 核心原始碼的說明。
    若要與™ Intel FPGA SDK for 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. 注意力: SoC FPGA 板上的 ARM 處理器可用的實體記憶體總量為 1 GB。 Intel 不建議您將 CMA 管理器設定為接近 1 GB。
  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 分區。有關詳細說明,請參閱 Rocketboards.org 上的 Cyclone V SoC FPGA 特定 GSRD 使用手冊。
  9. 注意:要正確插入 OpenCL Linux 核心驅動程序,請先載入 SDK generated.rbf file 到 FPGA 上。
    創建 .rbf file,編譯一個SDK設計examp文件中使用 Cyclone V SoC 開發套件參考平台作為目標客製化平台。
    9.放置.rbf file 進入閃存卡映像的 fat32 分區。
    注意:fat32分區必須同時包含zImage file 和.rbf file。沒有 .rbf file,插入驅動程式時會出現致命錯誤。
  10. 將已編程的微型 SD 卡(其中包含您先前修改或建立的 SD 卡映像)插入到 Cyclone V SoC 開發套件中,然後為 SoC FPGA 板加電。
  11. 透過執行 uname -r 指令驗證已安裝的 Linux 核心的版本。
  12. 若要驗證您是否在核心中成功啟用了 CMA,請在 SoC FPGA 板通電的情況下執行 grep init_cma /proc/kallsyms 命令。
    如果輸出非空,則啟用 CMA。
  13. 若要將重新編譯的Linux核心與SDK一起使用,請編譯並安裝Linux核心驅動程式。

相關連結

  • 黃金系統參考設計 (GSRD) 使用手冊
  • 建置 SD 快閃記憶體卡映像(第 13 頁)
    由於 Cyclone V SoC FPGA 是一個完整的系統單晶片,因此您有責任提供系統的完整定義。

1.6.2 編譯安裝OpenCL Linux核心驅動
根據已編譯的核心原始碼編譯 OpenCL Linux 核心驅動程式。

驅動程式來源可在適用於 OpenCL 的英特爾 FPGA 執行階段環境的 Cyclone V SoC FPGA 版本中找到。此外,請確保您已載入 Intel FPGA SDK for OpenCL 產生的 .rbf file 到 FPGA 中以防止 Linux 核心模組的錯誤安裝。

  1. 從 Altera 的下載中心下載適用於 OpenCL 軟體包的 Intel FPGA Runtime Environment 的 Cyclone V SoC FPGA 版本 web地點。
    A。按一下 Quartus Prime 軟體版本旁的下載按鈕。
    b.指定發布版本、作業系統和下載方法。
    C。按一下「附加軟體」選項卡,然後選擇下載 Intel FPGA
    OpenCL Linux Cyclone V SoC TGZ 的運行環境。
    d.下載 aocl-rte- 後.arm32.tgz file,將其解壓縮到
    您擁有的目錄。
    驅動源碼在aocl-rte- .arm32/board/c5soc/ 驅動程式目錄。
  2. 若要重新編譯 OpenCL Linux 核心驅動程序,請在驅動程式的 Make 中設定 KDIR 值file 到包含 Linux 核心原始碼的目錄 files.
  3. 執行export CROSS_COMPILE=arm-linux-gnueabihf-命令以指示工具鏈的前綴。
  4. 執行 make clean 指令。
  5. 執行 make 指令建立 aclsoc_drv.ko file.
  6. 將 opencl_arm32_rte 目錄傳送到 Cyclone V SoC FPGA 板。
    運行 scp -r root@您的 IP 位址:命令將運行環境放置在/home/root目錄下。
  7. 執行您在建置 SD 卡映像時所建立的 init_opencl.sh 腳本。
  8.  呼叫 aocl 診斷實用程式命令。成功運行 init_opencl.sh 後,診斷實用程式將傳回合格結果。

1.7 已知問題
目前,將面向 OpenCL 的英特爾 FPGA SDK 與 Cyclone V SoC 開發套件參考平台結合使用有一定限制。

  1. 您無法覆寫 clGetDeviceInfo() 呼叫的 CL_DEVICE_VENDOR 和 CL_DEVICE_NAME 字串報告的供應商和主機板名稱。
  2. 如果主機在共享DDR系統(即HPS DDR)中分配常量內存,並在核心執行後修改常量內存,則內存中的資料可能會過時。造成此問題的原因是 FPGA 核心無法監聽 CPU 到 HPS DDR 的事務。
    為了防止後續內核執行存取過時的數據,請實施以下解決方法之一:
    • 常量記憶體初始化後請勿修改。
    • 如果需要多個__constant 資料集,請建立多個常數記憶體緩衝區。
    • 如果可用,請在加速器板上的FPGA DDR 中分配常數記憶體。
  3. ARM 上的 SDK 實用程式僅支援程式設計和診斷實用程式命令。
    快閃記憶體、安裝和卸載實用程式命令不適用於 Cyclone V SoC 開發套件,原因如下:
    A。安裝實用程式必須編譯 aclsoc_drv Linux 核心驅動程式並在 SoC FPGA 上啟用它。開發機必須執行編譯;但是,它已經包含 SoC FPGA 的 Linux 核心原始碼。開發機器的 Linux 核心原始碼與 SoC FPGA 的 Linux 核心原始碼不同。 SDK 用戶可能不知道 SoC FPGA 的 Linux 核心原始碼的位置。同樣,Cyclone V SoC 開發套件也無法使用卸載實用程式。
    此外,將 aclsoc_drv 交付到 SoC 板具有挑戰性,因為 Cyclone V SoC 開發套件的預設發行版不包含 Linux 核心包含 files 或 GNU Compiler Collection (GCC) 編譯器。
    b.閃存實用程式需要放置 .rbf file 將 OpenCL 設計複製到 micro SD 快閃記憶體卡的 FAT32 分割區上。目前,當SDK用戶為開發板加電時,該分區並未掛載。因此,更新分區的最佳方法是使用閃存卡讀卡機和開發機。
  4. 在適用於 OpenCL 離線編譯器的英特爾 FPGA SDK 執行檔之間切換時 files (.aocx) 對應於不同的板變體(即 c5soc 和 c5soc_sharedonly),您必須使用 SDK 的程式公用程式來載入 .aocx file 首次推出新的主機板版本。如果您只是使用新的板變體運行主機應用程序,但 FPGA 包含來自另一個板變體的映像,則可能會發生致命錯誤。
  5. .qxp file 不包括介面分割區分配,因為 Quartus Prime 軟體始終符合該分割區的時序要求。
  6. 當您為開發板加電時,其媒體存取控制 (MAC) 位址將設定為隨機數。如果您的 LAN 政策不允許此行為,請執行下列任務來設定 MAC 位址:
    A。在 U-Boot 啟動過程中,按任意鍵可進入 U-Boot 命令提示字元。
    b.在命令提示字元中鍵入 setenv ethaddr 00:07:ed:00:00:03。
    您可以選擇任何 MAC 位址。
    C。鍵入 saveenv 指令。
    d.重新啟動開發板。

1.8 文檔修訂歷史
表 1.
適用於 OpenCL Cyclone V SoC 的英特爾 FPGA SDK 的文檔修訂歷史
開發套件參考平台移植指南

日期 版本 變化
17 年 XNUMX 月 2017.05.08 •維護版本。
2016 年 XNUMX 月 2016.10.31 •將Altera SDK for OpenCL 更名為Intel FPGA SDK for OpenCL。
•將Altera 離線編譯器更名為Intel FPGA SDK for OpenCL 離線編譯器。
16 年 XNUMX 月 2016.05.02 •修改了有關建置和修改SD 快閃記憶體卡映像的說明。
•修改了重新編譯Linux 核心和OpenCL Linux 核心驅動程式的說明。
15 年 XNUMX 月 2015.11.02 •維護版本,並將Quartus II 實例變更為Quartus Prime。
15 年 XNUMX 月 15.0.0 •在FPGA重新配置中,刪除了重新編程FPGA核心的指令
與 .透過呼叫 cat 來獲取 rbf 圖像 file名稱>. RBF
> /dev/fpga0 指令,因為不建議使用此方法。
14 年 XNUMX 月 14.1.0 •將此文件重新命名為Altera Cyclone V SoC 開發套件參考平台移植指南。
•將重新編程實用程式更新為aocl 程序file名稱>.aocx 實用程式命令。
•將診斷實用程式更新為 aocl 診斷和 aocl 診斷實用程式命令。
•更新了「將參考平台移植到您的SoC 板」部分中的流程,包括有關移植和修改c5soc 板分區的說明,以便為保證的時序收斂流程建立時序乾淨的分區。
•插入主題更新移植的參考平台以概述以下任務的流程:
1.排除板分區中的硬處理器系統(HPS)塊
2.更新SD閃存卡鏡像
•更新了建置SD 快閃記憶體卡映像部分。建議使用 14.0 版黃金系統參考設計 (GSRD) 映像作為起點,而不是使用 SoC 嵌入式設計套件 (EDS) 提供的映像。
•更新了重新編譯Linux 核心和OpenCL Linux 核心驅動程式部分:
1.新增了設定CROSS COMPILE變數的指令。
2.更改了驗證 CMA 是否已成功啟用而運行的命令。
14 月 XNUMX 日 14.0.0 •初始發行。

文件/資源

適用於 OpenCL 的英特爾 FPGA SDK [pdf] 使用者指南
用於 OpenCL 的 FPGA SDK、FPGA SDK、用於 OpenCL 的 SDK、SDK

參考

發表評論

您的電子郵件地址不會被公開。 必填欄位已標記 *