0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何利用SDSoC工具來創(chuàng)建嵌入式C/C++/OpenCL應(yīng)用開發(fā)

YCqV_FPGA_EETre ? 來源:未知 ? 作者:劉勇 ? 2017-12-27 09:16 ? 次閱讀

教你如何使用Xilinx SDSoC

實現(xiàn)在ARTY Z7上進行軟硬協(xié)同設(shè)計

細心的小伙伴們可能早已留意到,在Digilent今年全新出品的Zynq評估板中,無論是第二代經(jīng)典入門級的Zynq? Board -ZYBO Z7,還是創(chuàng)客最愛的ARTY Z7,都全面支持Xilinx SDSoC開發(fā)環(huán)境。意味著如果你是一名系統(tǒng)或軟件工程師,現(xiàn)在無需深度的硬件專業(yè)知識,就能廣泛地利用Zynq? SoC,暢享超過100倍的軟件性能加速。

本篇干貨教程中,我們就將帶你入門了解如何使用Xilinx SDSoC工具來創(chuàng)建嵌入式C/C++/OpenCL應(yīng)用開發(fā),并實現(xiàn)直接在ARTY Z7嵌入式視覺開發(fā)平臺的器件上進行軟件設(shè)計。

01

SDSoC軟硬協(xié)同設(shè)計與其開發(fā)流程

由于集成了ARM處理器內(nèi)核與可編程邏輯,對于眾多應(yīng)用開發(fā)而言,Zynq 非常的靈活。這意味著開發(fā)人員可以將設(shè)計按不同元素來優(yōu)化劃分,例如將其中那些高層次決策的部分放入ARM內(nèi)核(PS端),并將諸如圖像處理流水線等需要加速的部分用可編程邏輯(PL端)來實現(xiàn)。

當然,傳統(tǒng)的Zynq開發(fā)流程會將Vivado和SDK分離開來,這種方法很難在可編程邏輯(PL)和處理系統(tǒng)(PS)之間分配功能,因此無法獲得最優(yōu)的系統(tǒng)性能。

通過SDSoC,則可以解決上述問題。SDSoC是一個系統(tǒng)最優(yōu)編譯器,支持軟件定義的整個系統(tǒng)開發(fā),包括PS和PL。標準的SDSoC開發(fā)流程如下:

  1. 使用高層次語言開發(fā)應(yīng)用

  2. 使用提供的性能監(jiān)視器來分析設(shè)計從而確定性能瓶頸

  3. 使用SDSoC將造成性能瓶頸的功能用可編程邏輯來實現(xiàn)加速

  4. 重新驗證性能,如果有必要也可以加速其它功能模塊

正是因為高層次綜合(HLS)和互聯(lián)框架的結(jié)合才使得各種功能模塊可以在PS和PL之間輕松的轉(zhuǎn)換:

  • 使用Vivado HLS加速某個功能模塊

  • 分析通信功能

  • 建立AXI通信

  • 生成軟件存根

為了能夠使可編程邏輯獲得最佳的性能,我們需要給加速的功能模塊定義一些優(yōu)化參數(shù),這樣才能夠確定HLS工具執(zhí)行哪些優(yōu)化操作。我們可以使用高層次語言(比如C/C++/OpenCL)來開發(fā)基于Zynq的設(shè)計。為了支持SDSoC的使用,我們需要一個面向SDSoC的基礎(chǔ)平臺來定義底層硬件和軟件環(huán)境。

對于Arty Z7,點擊「閱讀原文」,在“下載代碼”按鈕中可以找到Arty Z7對應(yīng)的SDSoC基礎(chǔ)平臺,下載之后就可以在Arty Z7上開發(fā)相關(guān)的應(yīng)用了。

02

創(chuàng)建一個新的SDSoC工程

在這一教程中,我們將探究如何使用SDSoC平臺來加速矩陣乘法的性能。

使用SDSoC工具創(chuàng)建一個新的SDSoC工程,具體操作步驟如下:File -> New -> Xilinx SDx Project。這會打開一個新工程的對話框,包括支持的平臺規(guī)范、操作系統(tǒng)選擇和示例應(yīng)用選擇。詳細圖解如下。

創(chuàng)建一個新工程:

選擇Arty7 Z7-20作為硬件平臺。這里,在新工程對話框的第二頁選擇一個新的平臺,點擊添加自定義平臺選項(add custom platform)。然后對應(yīng)找到已下載好的Arty Z7-20平臺,添加好后這個平臺就能在構(gòu)建列表中看到,在此基礎(chǔ)上我們可以選擇它應(yīng)用到我們的工程中:

選擇操作系統(tǒng)(OS)和目標CPU

然后選擇示例應(yīng)用:

03

SDx項目設(shè)置頁面

完成項目新建之后,將在SDSoC開發(fā)環(huán)境中看到SDx項目設(shè)置頁面。我們使用這個項目設(shè)置選項卡可以在PS和PL之間轉(zhuǎn)移功能。實現(xiàn)方式是:選擇“Add HW Function”按鈕,然后選擇所需要移植到PL中的功能。

如果我們想將原本在PS中運行的功能轉(zhuǎn)移到PL中來實現(xiàn)加速,那么我們應(yīng)當遵循以下幾條規(guī)則:

  • 這個功能不能包含任何操作系統(tǒng)級的系統(tǒng)調(diào)用

  • 這個功能必須完整

  • C結(jié)構(gòu)體需要有界并固定大小

  • 結(jié)構(gòu)體的實現(xiàn)是明確的

在項目設(shè)置控制面板上,我們也可以控制加速模塊和PL與PS之間數(shù)據(jù)移動網(wǎng)絡(luò)傳遞數(shù)據(jù)的操作頻率。

SDSoC Project Settings – 此界面顯示的是SDSoC主要的控制功能:

Add HW Function界面 – 顯示可以用于加速的函數(shù):

04

預(yù)估性能選項與啟動調(diào)試器

當SDSoC構(gòu)建時會生成必要的bin文件,我們可以將其放到SD卡中來啟動運行或者下載到Zynq中用于調(diào)試。構(gòu)建過程需要一定的時間,因此在很多情況下當我們選擇一個函數(shù)用于加速時,我們可以先運行一個功能,估計一下需要的總資源和預(yù)期的加速效果。通過在項目設(shè)置菜單中點擊“估計性能(estimate performance)”選項就可以實現(xiàn)上述這一步。

整個構(gòu)建過程完成后就會生成一個結(jié)果報告,估計運行結(jié)果界面如下圖:

如果我們構(gòu)建這個設(shè)計時沒有點擊預(yù)估性能選項,那么我們可以使用調(diào)試器(debugger)像正常應(yīng)用那樣下載和運行示例程序。要想啟動調(diào)試器,在工程上右擊,然后選擇Debug As ->Launch on Hardware(SDSoC Debugger)。參考下圖啟動調(diào)試界面,這里我們會將應(yīng)用下載到Arty Z7,并在編程入口使Zynq掛起。將SDSoC終端與Arty Z7 UART(串口)連接我們就可以看到示例程序的運行結(jié)果:

05

利用好SDSoC開發(fā)環(huán)境中庫的優(yōu)勢

當我們開發(fā)自己的SDSoC應(yīng)用時,我們需要了解SDSoC提供的庫和加速棧資源。

為了幫助開發(fā)者能夠更快地開發(fā)最終應(yīng)用,SDSoC提供了一些HLS庫,開發(fā)者可以將其應(yīng)用到自己的設(shè)計中,具體包括:

  • reVison Stack– 提供了一個三元素開發(fā)棧,我們可以使用OpenCV、Caffe和一系列通用的神經(jīng)網(wǎng)絡(luò)開源框架到嵌入式視覺應(yīng)用中。reVision包括多重加速能力的OpenCV。

  • 數(shù)學(xué)庫– 提供了標準數(shù)據(jù)庫可綜合的實現(xiàn)。

  • IP庫– 提供了可以實現(xiàn)FFT、FIR和移位寄存器LUT功能的IP庫。

  • 線性代數(shù)庫– 提供了通用線性代數(shù)功能的庫資源。

  • 任意精度數(shù)據(jù)類型庫– 提供無二次冪和有符號/無符號整數(shù)任意數(shù)據(jù)長度的支持,這個庫可以讓開發(fā)者更加高效的使用FPGA資源。

06

總結(jié)

通過這個項目中的例子,我們看到借助SDSoC,我們可以在PS與PL之間輕松地轉(zhuǎn)移軟件(SW)函數(shù),并通過將之轉(zhuǎn)移到PL端來實現(xiàn)性能上的提升。

So,如果此刻,你已經(jīng)對利用SDSoC來實現(xiàn)軟硬協(xié)同開發(fā)與優(yōu)化產(chǎn)生了興趣,趕快拿起一塊Arty Z7,參照著教程嘗試一下快感吧!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9027

    瀏覽量

    366492
  • 嵌入式
    +關(guān)注

    關(guān)注

    5059

    文章

    18974

    瀏覽量

    302066
  • Xilinx
    +關(guān)注

    關(guān)注

    71

    文章

    2155

    瀏覽量

    120853

原文標題:在Arty Z7上入門Xilinx SDSoC開發(fā)工具

文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    零基礎(chǔ)嵌入式開發(fā)學(xué)習(xí)路線

    ,比如開源、穩(wěn)定、高效、靈活等。如果你想從事嵌入式開發(fā)相關(guān)工作,熟悉Linux的基本操作是非常必要的。比如如何使用命令行、如何管理文件和目錄、如何設(shè)置權(quán)限和用戶、如何創(chuàng)建文件寫代碼等。這些操作并不
    發(fā)表于 10-25 15:55

    七大嵌入式GUI盤點

    采用純C語言開發(fā)。它的作者是來自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C語言編寫,以實現(xiàn)最大的兼容性(與C++兼容),模擬器可在沒有
    發(fā)表于 09-02 10:58

    嵌入式QT常見開發(fā)方式有哪些?

    嵌入式QT常見開發(fā)方式有哪些? 嵌入式工程師在學(xué)習(xí)和使用Qt進行開發(fā)時,常見的幾種開發(fā)方式包括: 1.Qt Widgets編程: 通過
    發(fā)表于 08-12 10:05

    如何提升嵌入式編程能力?

    和仿真:使用模擬和仿真工具測試你的嵌入式系統(tǒng),這可以在實際硬件之前發(fā)現(xiàn)問題。 通過以上的這些方法,可以逐步提高個人的嵌入式編程技能,并成為一名更優(yōu)秀的
    發(fā)表于 06-21 10:01

    C語言:嵌入式開發(fā)中的關(guān)鍵編譯器角色

    嵌入式程序開發(fā)跟硬件密切相關(guān),需要使用C語言讀寫底層寄存器、存取數(shù)據(jù)、控制硬件等,C語言和硬件之間由編譯器
    發(fā)表于 04-26 14:53 ?509次閱讀
    <b class='flag-5'>C</b>語言:<b class='flag-5'>嵌入式開發(fā)</b>中的關(guān)鍵編譯器角色

    AMD Vitis? Embedded嵌入式軟件開發(fā)套件的功能和特性概述

    Vitis Embedded 是一款獨立的嵌入式軟件開發(fā)套件,主要用于為 AMD 自適應(yīng) SoC 和 FPGA 中的 AMD 嵌入式處理子系統(tǒng)(基于 ARM 的子系統(tǒng)和 AMD MicroBlaze)
    的頭像 發(fā)表于 04-08 10:50 ?800次閱讀
    AMD Vitis? Embedded<b class='flag-5'>嵌入式</b>軟件<b class='flag-5'>開發(fā)</b>套件的功能和特性概述

    如何成為一名嵌入式C語言高手?

    系統(tǒng)中,如何調(diào)試和優(yōu)化程序,如何處理實時性要求等。同時,還可以學(xué)習(xí)如何使用調(diào)試工具和硬件仿真器輔助調(diào)試和測試。 四、積極參與開源項目和技術(shù)社區(qū)加入一些嵌入式開源項目的社區(qū),與其他開發(fā)
    發(fā)表于 04-07 16:03

    如何成為一名嵌入式C語言高手?

    系統(tǒng)中,如何調(diào)試和優(yōu)化程序,如何處理實時性要求等。同時,還可以學(xué)習(xí)如何使用調(diào)試工具和硬件仿真器輔助調(diào)試和測試。 四、積極參與開源項目和技術(shù)社區(qū)加入一些嵌入式開源項目的社區(qū),與其他開發(fā)
    發(fā)表于 03-25 14:12

    嵌入式軟件開發(fā)應(yīng)該掌握哪些知識?

    的控制,如GPIO、串口、SPI、I2C 等。這使得嵌入式軟件開發(fā)人員能夠充分利用硬件資源,滿足特定的需求。 1.2數(shù)據(jù)結(jié)構(gòu)與算法 嵌入式
    發(fā)表于 02-19 11:23

    c語言,c++,java,python區(qū)別

    操作系統(tǒng)、嵌入式系統(tǒng)等對性能要求較高的場景。C語言的語法相對簡單,學(xué)習(xí)曲線較平緩,也是學(xué)習(xí)其他高級語言的入門語言。 C++C++是在C
    的頭像 發(fā)表于 02-05 14:11 ?2126次閱讀

    聊一聊嵌入式C語言

    作為一名嵌入式軟件開發(fā)者,熟練掌握嵌入式C語言對我的日常工作至關(guān)重要。
    的頭像 發(fā)表于 01-22 09:28 ?514次閱讀

    嵌入式C語言高手煉成之內(nèi)存操作篇

    嵌入式系統(tǒng)的編程中,常常要求在特定的內(nèi)存單元讀寫內(nèi)容,匯編有對應(yīng)的MOV指令,而除C/C++以外的其它編程語言基本沒有直接訪問絕對地址的能力。在嵌入式系統(tǒng)的實際調(diào)試中,多借助
    的頭像 發(fā)表于 12-11 17:20 ?478次閱讀

    如何選擇創(chuàng)建c語言和c++

    的詳盡、詳實、細致的討論。 C 語言的特點和優(yōu)勢: C 語言是一種過程性的編程語言,它注重的是簡潔、高效、直接的編碼方式。以下是一些 C 語言的主要特點和優(yōu)勢: 1.1 跨平臺:C
    的頭像 發(fā)表于 11-27 15:58 ?558次閱讀

    嵌入式C語言的結(jié)構(gòu)特點

    嵌入式開發(fā)中既有底層硬件的開發(fā)又涉及上層應(yīng)用的開發(fā),即涉及系統(tǒng)的硬件和軟件,C語言既具有匯編語言操作底層的優(yōu)勢,又具有高級語言功能性強的特點,當之無愧地成為
    的頭像 發(fā)表于 11-24 16:16 ?620次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b>語言的結(jié)構(gòu)特點

    c語言嵌入式開發(fā)

    電子發(fā)燒友網(wǎng)站提供《c語言嵌入式開發(fā).zip》資料免費下載
    發(fā)表于 11-17 14:11 ?2次下載
    <b class='flag-5'>c</b>語言<b class='flag-5'>嵌入式開發(fā)</b>