0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在Versal里实现cache一致性传输

XILINX开发者社区 来源:XILINX开发者社区 作者:赛灵思工程师 Lo 2022-04-21 10:19 次阅读
在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。

2de3e100-c09a-11ec-bce3-dac502259ad0.png

可以通过双击CIPS IP,选择PS PMC,使能连接NoC的CCI接口。(另外,还可以使用PS与PL的ACP或ACE接口,这两个接口也能实现数据的一致性传输。)

2dfe8f50-c09a-11ec-bce3-dac502259ad0.png

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一致性传输的一些要点。

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6511

    浏览量

    87585
  • 检测系统
    +关注

    关注

    3

    文章

    918

    浏览量

    42686
  • Versal
    +关注

    关注

    1

    文章

    151

    浏览量

    7535

原文标题:开发者分享|在Versal里实现cache一致性传输

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    深入理解数据备份的关键原则:应用一致性与崩溃一致性的区别

    深入理解数据备份的关键原则:应用一致性与崩溃一致性的区别 在数字化时代,数据备份成为了企业信息安全的核心环节。但在备份过程中,两个关键概念——应用一致性和崩溃一致性,常常被误解或混淆。
    的头像 发表于 03-11 11:29 206次阅读
    深入理解数据备份的关键原则:应用<b class='flag-5'>一致性</b>与崩溃<b class='flag-5'>一致性</b>的区别

    DDR一致性测试的操作步骤

    DDR一致性测试的操作步骤  DDR(双数据率)一致性测试是对DDR内存模块进行测试以确保其性能和可靠性。在进行DDR一致性测试时,需要遵循一系列的操作步骤,以保证测试的准确性和完整性。下面将详细
    的头像 发表于 02-01 16:24 349次阅读

    求助,为什么miniWiggler的JTAG信号映射与设备端(TC397)不一致

    )通过引出个JTAG插座,同时兼容JTAG和DAP两种协议。由于上面提到的不一致性,只能通过调整线缆线序来满足这种需求,即当使用DAP协议时,需要将设备(TC397)侧JTAG插座的TMS(DAP1
    发表于 02-01 06:47

    CPU Cache是如何保证缓存一致性的?

    我们介绍`CPU Cache`的组织架构及其进行**读操作**时的寻址方式,但是缓存不仅仅只有读操作,还有 **写操作** ,这会带来一个新的问题
    的头像 发表于 12-04 15:05 559次阅读
    CPU <b class='flag-5'>Cache</b>是如何保证缓存<b class='flag-5'>一致性</b>的?

    AD9826存偏置电压不为0,并且一致性较差的原因?

    我这边做了批包含AD9826芯片的板卡,实测本底暗信号幅度都是样的,对应到AD9826应该是3000的DN值。但是AD9826采集出来不一致,变化从1500~4800。板卡更换AD9826芯片,暗信号DN值立马跟着改变。请问
    发表于 12-01 06:33

    ADA4960工作单端输入-差分输出模式下,其输出P、N之间的相位一致性该怎么测试呢?

    ADA4960 工作单端输入-差分输出模式下,其输出P、N之间的相位一致性该怎么测试呢? 我使用矢量网络分析仪进行测试,未用到的端口接50Ω负载,接线方式如下图 原理图如下:增益电阻RG=100
    发表于 11-14 06:53

    MM32F0140 FlexCAN一致性测试 (2)

    MM32F0140 FlexCAN一致性测试 (2)
    的头像 发表于 11-10 18:23 376次阅读
    MM32F0140 FlexCAN<b class='flag-5'>一致性</b>测试 (2)

    MM32F0140 FlexCAN一致性测试(1)

    MM32F0140 FlexCAN一致性测试 (1)
    的头像 发表于 11-10 17:50 265次阅读
    MM32F0140 FlexCAN<b class='flag-5'>一致性</b>测试(1)

    什么是锂离子电池不一致性?如何提高锂离子电池的一致性

    什么是锂离子电池不一致性?锂离子电池不稳定的原因?如何提高锂离子电池的一致性? 锂离子电池不一致性是指同一批次或不同批次的锂离子电池在性能上出现不一致的现象。这种不
    的头像 发表于 11-10 14:49 666次阅读

    如何保证缓存一致性

    “ 本文的参考文章是2022年HOT 34上Intel Rob Blakenship关于CXL缓存一致性的一篇介绍。”
    的头像 发表于 10-19 17:42 498次阅读
    如何保证缓存<b class='flag-5'>一致性</b>

    ARM CoreLinK CCN-502高速缓存一致性网络技术参考手册

    CCN-502是基于AMBA 5 CHI架构的可扩展相干互连。它设计用于高端网络和企业计算系统。 CCN-502将互连和一致性功能组合到单个模块中。它提供以下外部接口: •四个完全一致的CHI端口
    发表于 08-02 10:38

    虹科干货 | 什么是数据库一致性

    集出现一致性错误。数据库一致性通过建立规则来实现。任何写入数据库的数据事务都只能按照数据库开发人员制定的规则,包括特定约束、触发器、变量、级联等来更改受影响的数据。 例如,假设您某地区的交通安全研究所工作。您的任务是创建一个新驾
    的头像 发表于 07-13 13:56 403次阅读
    虹科干货 | 什么是数据库<b class='flag-5'>一致性</b>?

    多个CPU各自的cache同步问题

      CACHE一致性 Cache一致性有这么几个层面 1.     一个CPU的icache和dcache的同步问题 2.     多个CPU各自的
    的头像 发表于 06-17 10:38 1047次阅读
    多个CPU各自的<b class='flag-5'>cache</b>同步问题

    如何使用Vector CANoe与S32k148evb进行LIN一致性测试?

    大家好, 我正在使用 Vector CANoe 进行 LIN 一致性(合规)测试,我正面临这个问题,那么它的原因应该是什么,解决方案是什么? 测试用例 PT-CT88,89,90,93 中。 IUT 未响应诊断请求
    发表于 05-09 09:31

    i.MX8M可以调用哪些刷新/无效缓存函数来保证缓存一致性

    的是,我们现在在较小的传输中遇到缓存问题。有时,当缓冲区被复制到用户空间时,64 字节的数据没有被正确的数据 buf 填充为 0xff。我们传输
    发表于 04-27 08:30