在zynq mpsoc里,我们有以下文章介绍怎么在mpsoc实现cache一致性的传输:
[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维护数据的架构上,有一定的相似性。所以在versal器件里,我们仍然可以使用上述文档 [1] 里8.1和8.2的checklist去检测系统是否满足一致性传输的条件。
本篇博客提供了一个基于vck190 es1开发板和2021.1 vivado/vitis的例子,用来简单介绍在versal里实现数据从pl 经过 fpd cci 到达 noc ddr的一致性传输。
这个例子与上面文档 [2] 的例子类似,使用axi cdma ip实现数据的传输,通过修改axi cdma在vitis里的参考设计,实现cpu直接读写axi cdma传输过来的数据,不必进行额外的cache操作。
这个例子里,axi cdma通过noc连接到cips ip的noc_ffd_cci_1接口,这个接口是连接到ps内部的cache管理模块cci-500,下面是这个例子的block design截图。更具体的block design,请新建一个vck190 es1的工程,然后运行附件的tcl文件创建完整的block design。
可以通过双击cips ip,选择ps pmc,使能连接noc的cci接口。(另外,还可以使用ps与pl的acp或ace接口,这两个接口也能实现数据的一致性传输。)
noc的axi slave接口需要配置如下axcache和axprot的值,具体原因请参考文档 [2]。
axcache: 0xf
axprot: 0x0
在block design创建后,由于工具的已知问题(https://support.xilinx.com/s/article/76566),需要在tcl里运行下面命令,否则axi cdma会访问不到noc ddr。运行完以下命令后,再重新分配地址。
set_property config.connections [list fpd_cci_noc_1] [get_bd_intf_pins /versal_cips_0/noc_fpd_cci_1]
最后把工程导出到vitis,新建一个基于a72_0的应用工程。把(1)附件的xaxicdma_example_simple_poll.c导入到新的工程里,编译出elf。
(2)附件的xaxicdma_example_simple_poll.c是基于axi cdma ip自带的例子修改而来的。里面主要做了两处修改,一是使能了cci模块s4接口的snooping,二是把例子里对cache的操作去掉。
下面是使能snooping的代码:
xil_out32(0xfd005000,0x1);
dmb();
最后可以运行下面的bootgen命令,通过(3)附件的bif文件把pdi和elf文件打包成boot.bin, 然后拷贝到vck190的sd卡上运行。
[以上123附件可在公众号内回复“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工程里实现cache一致性传输的一些要点。
智能汽车技术趋于成熟,自动驾驶汽车临近商用
EOS系统通胀中心化问题的解决方案
全球LCD TV面板供应紧缺情况将延续至四季度?
多款大屏智能电视来袭 大家有没有看中过哪台心仪已久的呢
影响MCU功耗的因素有哪些?
在Versal里实现cache一致性传输
FF总线的组成结构
下降14.4%!台积电公布了2023年12月营收数据
微星新款带鱼屏显示器上架,30英寸首发1999元
泰国NBTC计划2019年对45MHz的700MHz频谱进行拍卖
工业机器人应用中的运动限制是什么
国产蓝牙耳机性价比标杆—西圣Ares,新品牌诠释后来居上
微雪电子SX1268 470M频段介绍
分析欧洲各国智能语音技术的发展态势
一种高效率的拓扑结构的适配器的工作原理和实验结果
透视八大笔记本杀手绝技
台积电5nm工艺将在今年增产3成
FGPA和不断变化的汽车市场有何联系
直插式LED电压是多少
【新专利介绍】可抗振动的插入式热式气体质量流量计