1、Zynq的開發四種方式
純PL開發,純PS開發(helloworld),PS+PL(無操作系統,跑裸跑程序),PS+PL(跑操作系統)。
1.1 純PL開發
這個和一般的xilinx的FPGA沒有很大的區別。
1.2 純PS開發
典型的就是helloworld工程, 一種是傳統的arm的方式。還一種就是xilinx方法,這個是生成一個elf文件,這個elf文件包括了硬件配置信息(xmp),和裸跑程序(c文件)。
1.3 PS+PL(不跑操作系統)開發
這個可以參考懶兔子博客二,三筆記,生成的elf文件包括了硬件配置信息(xmp),還有裸跑程序(c文件),另外還有一個.bit文件可以看出和純PS開發的區別了。
1.4 PS+PL(跑操作系統)開發
這個就需要BOOT.BIN,設備樹,linux內核鏡像,文件系統了。
其中BOOT.BIN是由3部分組成的(boot.elf, .bit, fsbl.elf),boot.elf這個是由交叉編譯環境產生的,相當于ssbl,.bit文件是PL使用文件,fsbl.elf這個是fsbl。
2、開發工具
2.1 獨立開發環境
PL—> Vivado
PS(ARM)–> SDK(Xilinx)或者第三方ARM開發工具
2.2 集成開發環境
SDSoC
2.3 獨立開發環境的四個步驟
(1) 系統架構師確定硬件-軟件分區方案;
(2) 硬件工程師處理被分配到硬件中的功能,并將它們轉換或設計成IP核(Verilog/VHDL,也可用Vivado HLS實現C/C++高層次綜合);
(3) 利用Vivado IP Integrator 創建整個嵌入式系統的模塊化設計。包括開發需要的數據移動工具(AXI-DMA、AXI Memory Master、AXI-FIFO 等),以及連接 PL IP 與 PS 的 AXI 接口(GP、HP 和 ACP),之后將此項目導入到SDK中;
(4) 軟件工程師使用SDK,開發PS中ARM處理器的驅動程序和應用。
對于以硬件為中心的優化流程,矛盾往往出現在不同的數據移動工具和PL-PS接口以及寫入和調試驅動程序與應用,為避免重構硬件造成軟件的變化,使得PS-PL開發更加緊密,賽靈思推出了SDSoC開發環境。將上述步驟(2)、(3)和(4)實現高度自動化,以縮短開發時間。該開發環境會生成必要的硬件和軟件組件,用以同步硬件和軟件并保存源程序語義,同時支持任務級并行處理和流水線化的通信與計算,從而實現高性能。SDSoC 環境會自動安排所有必要的賽靈思工具(Vivado、IP Integrator、HLS 和 SDK),以生成針對 Zynq SoC 的完整軟硬件系統,而且所需的用戶介入程度很小。
一個SDSoC設計項目是建立在一個“平臺”之上的。所謂“平臺”包含硬件平臺和軟件平臺兩個部分,是一個設計開發可以復用的基礎性系統。
平臺是利用標準的Vivado、SDK和OS工具創建的。硬件平臺(HPFM)定義了諸如處理系統(PS,Processing System)、I/O子系統、存儲器接口等,這些工作都基于一個定義明確的端口接口(AXI、AXI-S,、時鐘、復位、中斷)。軟件平臺(SPFM)定義了OS、設備驅動、啟動加載程序(boot loaders)、文件系統、庫等。
基于C/C++源代碼的定制和專用硬件和軟件,用戶可以擴展平臺。
SDSoC將平臺作為獨立的解決方案空間,基于平臺提供的資源去生成用于解決方案的IP。每個解決方案都是為一個平臺裁剪而成的。
一個擴展名為xpfm的文件包含了硬件描述符XML文件(HPFM)和軟件描述符XML文件(SPFM)位置的參考。
2.4 Vivado
Vivado是基于IP的設計,稱為block design(BD),調用已有的IP,用戶自己編寫的邏輯模塊也可以封裝成IP,然后在模塊blcok中連線。邏輯開發完畢,再轉到SDK,SDK會根據Vivado的硬件設計設置調用相應的內部驅動代碼。(PL部分就如同ARM的總線AXI等掛的外設)
2.5 SDK
SDK根據生成的.hdf文件匹配FSBL,只需添加main.c文件即可。
3、類似嵌入式 C/C++/OpenCL 應用開發的體驗–SDSoC
SDSoC? 開發環境可為異構 Zynq? AllProgrammable SoC 及 MPSoC 部署提供類似嵌入式 C/C++/OpenCL 應用的開發體驗,其中包括簡單易用的 Eclipse IDE 和綜合設計環境。SDSoC 提供業界首款 C/C++/OpenCL 全系統優化編譯器,可實現系統級的特性描述、可編程邏輯中的自動軟件加速、自動系統連接生成以及可加速編程的各種庫。此外,它還可幫助最終用戶及第三方平臺開發人員快速定義、集成和驗證系統級解決方案,為其最終用戶實現定制化編程環境。(軟件工程師能夠對 Zynq SoC 中的可編程邏輯和 ARM 處理系統進行編程)
? 簡單易用的 EclipseIDE 可用于開發支持嵌入式 C/C++/OpenCL 應用的全面 Zynq All Programmable SoC 和 MPSoC 系統
? 只需一點按鈕,就可對可編程邏輯 (PL) 中的功能進行加速
? 支持作為目標 OS 的裸機、Linux 與 FreeRTOS
? Xilinx 庫作為 Vivado HLS 的一部分,由聯盟成員提供,是可選硬件優化的庫。
? OpenCL 在 2016.3 版中為早期的測試版。請聯系您的當地銷售代表提出申請
下圖展示的是一個基于基礎平臺的完整SDSoC設計的整體結構。需要加速的C/C++/SystemC功能成為了FPGA可編程邏輯(PL)中的IP,而其他功能保留在處理器系統(PS)中。同時,SDSoC會在那些IP和PS系統間自動生成互連。
3.1 系統級的特性描述
? 快速性能估算與面積估算可在幾分鐘內完成,包括 PS、數據通信以及 PL
? 高速緩存、存儲器以及總線利用率的自動運行時儀表
? 可實現最佳總體系統架構的便捷生成與探索
3.2 全系統優化編譯器
? 可將C/C++/OpenCL 應用編譯成全功能 Zynq SoC 與 MPSoC 系統
? 可在生成 ARM 軟件與 FPGA 比特流的可編程邏輯中實現自動功能加速
? 不僅可優化系統連接,而且還支持吞吐量、時延以及面積權衡的快速系統探索
3.3 SDSoC開發流程
① SDSoC 環境使用快速估算流程(通過調用內含的Vivado HLS)構建應用項目。這樣在數分鐘內就能大致估算出性能和資源情況。
② 如果有必要,用適當的指令優化 C/C++ 應用和硬件功能,并重新運行估算直到實現所需的性能和占位面積。
③ 然后,SDSoC 環境構建整個系統。該過程會生成完整的 Vivado Design Suite 項目和比特流,以及一個針對 Linux、FreeRTOS 或裸機的可引導的運行時間軟件映像。
-
Xilinx
+關注
關注
71文章
2164瀏覽量
121039 -
Zynq
+關注
關注
10文章
608瀏覽量
47129
發布評論請先 登錄
相關推薦
評論