[1]https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842098/Zynq+UltraScale+MPSoC+Cache+Coherency
[2]https://support.xilinx.com/s/article/69446?language=en_US
Versal與MPSoC在cache維護(hù)數(shù)據(jù)的架構(gòu)上,有一定的相似性。所以在Versal器件里,我們?nèi)匀豢梢允褂蒙鲜鑫臋n [1] 里8.1和8.2的checklist去檢測(cè)系統(tǒng)是否滿足一致性傳輸?shù)臈l件。
本篇博客提供了一個(gè)基于VCK190 ES1開(kāi)發(fā)板和2021.1 Vivado/Vitis的例子,用來(lái)簡(jiǎn)單介紹在Versal里實(shí)現(xiàn)數(shù)據(jù)從PL 經(jīng)過(guò) FPD CCI 到達(dá) NoC DDR的一致性傳輸。
這個(gè)例子與上面文檔[2]的例子類似,使用AXI CDMA IP實(shí)現(xiàn)數(shù)據(jù)的傳輸,通過(guò)修改AXI CDMA在Vitis里的參考設(shè)計(jì),實(shí)現(xiàn)CPU直接讀寫AXI CDMA傳輸過(guò)來(lái)的數(shù)據(jù),不必進(jìn)行額外的cache操作。
這個(gè)例子里,AXI CDMA通過(guò)NOC連接到CIPS IP的NOC_FFD_CCI_1接口,這個(gè)接口是連接到PS內(nèi)部的cache管理模塊CCI-500,下面是這個(gè)例子的Block Design截圖。更具體的block design,請(qǐng)新建一個(gè)VCK190 ES1的工程,然后運(yùn)行附件的tcl文件創(chuàng)建完整的block design。
可以通過(guò)雙擊CIPS IP,選擇PS PMC,使能連接NoC的CCI接口。(另外,還可以使用PS與PL的ACP或ACE接口,這兩個(gè)接口也能實(shí)現(xiàn)數(shù)據(jù)的一致性傳輸。)
NoC的AXI Slave接口需要配置如下AxCache和AxProt的值,具體原因請(qǐng)參考文檔 [2]。
AxCache: 0xF
AxProt: 0x0
在Block Design創(chuàng)建后,由于工具的已知問(wèn)題(https://support.xilinx.com/s/article/76566),需要在tcl里運(yùn)行下面命令,否則AXI CDMA會(huì)訪問(wèn)不到NoC DDR。運(yùn)行完以下命令后,再重新分配地址。
set_property CONFIG.CONNECTIONS [list FPD_CCI_NOC_1] [get_bd_intf_pins /versal_cips_0/NOC_FPD_CCI_1]
最后把工程導(dǎo)出到Vitis,新建一個(gè)基于A72_0的應(yīng)用工程。把(1)附件的xaxicdma_example_simple_poll.c導(dǎo)入到新的工程里,編譯出elf。
(2)附件的xaxicdma_example_simple_poll.c是基于AXI Cdma IP自帶的例子修改而來(lái)的。里面主要做了兩處修改,一是使能了CCI模塊S4接口的snooping,二是把例子里對(duì)cache的操作去掉。
下面是使能snooping的代碼:
Xil_Out32(0XFD005000,0x1);
dmb();
最后可以運(yùn)行下面的bootgen命令,通過(guò)(3)附件的bif文件把pdi和elf文件打包成boot.bin, 然后拷貝到VCK190的SD卡上運(yùn)行。
[以上123附件可在公眾號(hào)內(nèi)回復(fù)“123附件”下載]
bootgen -arch versal -image long.bif -w -o boot.bin
下面是正常的輸出:
[4.021]PLM Initialization Time
[4.083]***********Boot PDI Load: Started***********
[4.161]Loading PDI from SD1_LS
[4.223]Monolithic/Master Device
[307.009]302.813 ms: PDI initialization time
[307.087]+++Loading Image#: 0x1, Name: lpd, Id: 0x04210002
[307.175]---Loading Partition#: 0x1, Id: 0xC
[332.064]****************************************
[336.419]Xilinx Versal Platform Loader and Manager
[340.945]Release 2021.1 Feb 11 2022 - 0903
[345.384]Platform Version: v1.0 PMC: v1.0, PS: v1.0
[349.908]BOOTMODE: 0xE, MULTIBOOT: 0xF0000000
[353.921]****************************************
[358.315] 51.029 ms for Partition#: 0x1, Size: 2336 Bytes
[363.312]---Loading Partition#: 0x2, Id: 0xB
[367.799] 0.527 ms for Partition#: 0x2, Size: 48 Bytes
[372.021]---Loading Partition#: 0x3, Id: 0xB
[379.571] 3.587 ms for Partition#: 0x3, Size: 60592 Bytes
[381.822]---Loading Partition#: 0x4, Id: 0xB
[387.173] 1.387 ms for Partition#: 0x4, Size: 5968 Bytes
[390.705]---Loading Partition#: 0x5, Id: 0xB
[395.390] 0.721 ms for Partition#: 0x5, Size: 80 Bytes
[399.482]+++Loading Image#: 0x2, Name: pl_cfi, Id: 0x18700000
[404.800]---Loading Partition#: 0x6, Id: 0x3
[11801.051] 11392.281 ms for Partition#: 0x6, Size: 863984 Bytes
[11803.906]---Loading Partition#: 0x7, Id: 0x5
[11872.509] 64.470 ms for Partition#: 0x7, Size: 467600 Bytes
[11875.153]+++Loading Image#: 0x3, Name: fpd, Id: 0x0420C003
[11880.401]---Loading Partition#: 0x8, Id: 0x8
[11885.475] 0.942 ms for Partition#: 0x8, Size: 1104 Bytes
[11889.911]+++Loading Image#: 0x4, Name: apu_ss, Id: 0x1C000000
[11895.178]---Loading Partition#: 0x9, Id: 0x0
[11908.765] 9.453 ms for Partition#: 0x9, Size: 176208 Bytes
[11911.365]***********Boot PDI Load: Done***********
[11915.925]194.206 ms: ROM Time
[11918.708]Total PLM Boot Time
--- Entering main() ----
Successfully ran AxiCdma_SimplePoll Example
--- Exiting main() ---
這篇博客只是著重介紹了在Versal工程里實(shí)現(xiàn)cache一致性傳輸?shù)囊恍┮c(diǎn)。
審核編輯 :李倩
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7145瀏覽量
89581 -
檢測(cè)系統(tǒng)
+關(guān)注
關(guān)注
3文章
960瀏覽量
43170 -
Versal
+關(guān)注
關(guān)注
1文章
163瀏覽量
7712
原文標(biāo)題:開(kāi)發(fā)者分享|在Versal里實(shí)現(xiàn)cache一致性傳輸
文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論