在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

如何利用SDSoC工具來創建嵌入式C/C++/OpenCL應用開發

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

教你如何使用Xilinx SDSoC

實現在ARTY Z7上進行軟硬協同設計

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

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

01

SDSoC軟硬協同設計與其開發流程

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

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

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

  1. 使用高層次語言開發應用

  2. 使用提供的性能監視器來分析設計從而確定性能瓶頸

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

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

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

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

  • 分析通信功能

  • 建立AXI通信

  • 生成軟件存根

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

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

02

創建一個新的SDSoC工程

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

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

創建一個新工程:

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

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

然后選擇示例應用:

03

SDx項目設置頁面

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

如果我們想將原本在PS中運行的功能轉移到PL中來實現加速,那么我們應當遵循以下幾條規則:

  • 這個功能不能包含任何操作系統級的系統調用

  • 這個功能必須完整

  • C結構體需要有界并固定大小

  • 結構體的實現是明確的

在項目設置控制面板上,我們也可以控制加速模塊和PL與PS之間數據移動網絡傳遞數據的操作頻率。

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

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

04

預估性能選項與啟動調試器

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

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

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

05

利用好SDSoC開發環境中庫的優勢

當我們開發自己的SDSoC應用時,我們需要了解SDSoC提供的庫和加速棧資源。

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

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

  • 數學庫– 提供了標準數據庫可綜合的實現。

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

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

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

06

總結

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

So,如果此刻,你已經對利用SDSoC來實現軟硬協同開發與優化產生了興趣,趕快拿起一塊Arty Z7,參照著教程嘗試一下快感吧!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9322

    瀏覽量

    375578
  • 嵌入式
    +關注

    關注

    5143

    文章

    19568

    瀏覽量

    315631
  • Xilinx
    +關注

    關注

    73

    文章

    2184

    瀏覽量

    124545

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

文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    嵌入式開發入門指南:從零開始學習嵌入式

    隨著物聯網、智能硬件的發展,嵌入式開發成為熱門技能之一。以下將為初學者提供一份詳細的嵌入式開發入門指南,涵蓋學習路徑、必備工具、推薦資源等內容。 1. 嵌入式系統的定義與應用
    發表于 05-15 09:29

    如何成為一名嵌入式軟件工程師?

    體系 1)編程語言與工具 C/C++嵌入式軟件開發中最常用的編程語言,因其高效性和對硬件的直接控制能力而備受青睞。 RTOS(實時操
    發表于 04-15 14:37

    Python在嵌入式系統中的應用場景

    你想把你的職業生涯提升到一個新的水平?Python在嵌入式系統中正在成為一股不可缺少的新力量。盡管傳統上嵌入式開發更多地依賴于CC++語言,Python的優勢在于其簡潔的語法、豐富的
    的頭像 發表于 03-19 14:10 ?593次閱讀

    源代碼加密、源代碼防泄漏c/c++與git服務器開發環境

    嵌入式開發企業中使用的c/c++開發語言,這類開發環境主要做電子信息行業比較多,員工通過c語言
    的頭像 發表于 02-12 15:26 ?479次閱讀
    源代碼加密、源代碼防泄漏<b class='flag-5'>c</b>/<b class='flag-5'>c++</b>與git服務器<b class='flag-5'>開發</b>環境

    使用SEGGER工具實現嵌入式應用開發

    嵌入式系統的可能性是無限的,從創建智能家居設備到為工業自動化提供動力,但是有這么多的工具、技術和流程要學習,你從哪里開始呢?
    的頭像 發表于 01-10 16:27 ?695次閱讀

    為什么嵌入式驅動開發工程師可以拿高薪?

    場景下可以提供額外的優勢。 熟練使用C/C++進行嵌入式系統編程,便于理解內存管理、指針、數據結構等高級特性。 3)項目實踐: 通過動手做項目積累經驗,這是
    發表于 01-07 16:56

    新手怎么學嵌入式?

    的運行機制。例如,了解數據結構中的鏈表、棧和隊列,對于在嵌入式編程中管理數據非常有幫助。 2. 選擇合適的編程語言 嵌入式開發中常用的編程語言有 CC++。
    發表于 12-12 10:51

    一文了解嵌入式軟件開發的對象

    以前應用場景很單一,嵌入式開發可能談不上面向對象開發。但現在,做嵌入式開發,沒有面向對象開發,你就有點落伍了。 本文結合個人經驗和周立功《抽象接口技術和組件
    的頭像 發表于 11-15 10:31 ?772次閱讀
    一文了解<b class='flag-5'>嵌入式</b>軟件<b class='flag-5'>開發</b>的對象

    零基礎嵌入式開發學習路線

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

    嵌入式開發常用軟件有哪些?

    的擴展程序商店安裝擴展以拓展軟件功能。 2.Visual Studio 簡稱VS: 它是一個IDE,集成開發環境。驗證C程序或是進行c#程序開發,可以用它。一些與
    發表于 09-09 15:22

    七大嵌入式GUI盤點

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

    嵌入式QT常見開發方式有哪些?

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

    聚焦嵌入式開發中的合規性工具、項目管理工具、版本迭代工具應用

    ,就嵌入式開發與管理領域的最新趨勢、工具選擇以及DevSecOps實踐應用等方面展開了深入探討。 本期對話龍智資深DevSecOps顧問徐晨暉, 分享嵌入式開發中的合規性工具、項目管理
    的頭像 發表于 07-29 15:15 ?1006次閱讀

    嵌入式系統怎么學?

    、C++或者Python。這些語言在嵌入式系統開發中都被廣泛應用。 3、微處理器/微控制器架構:學習常見的微處理器和微控制器架構,如ARM、AVR、PIC等,了解其特性和應用場景。 4、
    發表于 07-02 10:10

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

    和仿真:使用模擬和仿真工具測試你的嵌入式系統,這可以在實際硬件之前發現問題。 通過以上的這些方法,可以逐步提高個人的嵌入式編程技能,并成為一名更優秀的
    發表于 06-21 10:01
    主站蜘蛛池模板: aaaaa特级毛片| 亚洲欧美精品成人久久91 | www.亚洲日本| 国产三级日本三级美三级 | 日本一区免费观看 | 色网站免费视频 | 久久性感美女视频 | 一区二区三区四区欧美 | 欧美激情91 | 一级a爰片久久毛片 | 在线观看黄色x视频 | 亚洲综合春色另类久久 | 四虎影院在线免费 | 久久99精品久久久久久园产越南 | 韩国免费特一级毛片 | 三级视频网站在线观看 | 女人张开腿双腿让男人桶 | 国产高清美女一级a毛片 | 亚洲美女视频一区二区三区 | 在线另类 | 亚洲一级毛片中文字幕 | 大又大粗又爽又黄少妇毛片 | 影院在线观看免费 | 亚洲国产精品第一区二区 | 国产精品天天干 | 91在线播放免费不卡无毒 | 国产综合第一页在线视频 | 日韩免费精品一级毛片 | 欧美久久综合 | 色老头在线精品视频在线播放 | 中国人黑人xxⅹ性猛 | 色爱区综合激情五月综合色 | 国产一级特黄 | 九九re | 国产叼嘿网站免费观看不用充会员 | 手机看片1024在线观看 | 天天天天做夜夜夜做 | 在线播放视频网站 | 国产一区二区三区 韩国女主播 | 国产一级特黄a大片免费 | 91夜夜人人揉人人捏人人添 |