取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
tanyushuang
Contributor
Contributor
319 次查看
注册日期: ‎07-24-2019

关于在PS端读取DDR数据,数据内容不更新的问题。

       在调试xc7z020clg400-1 的过程中,建构了BD系统。采用了M00_AXI_Master接口,采用的是“full”结构的接口。连接接到BD系统的HP端口。从PL方向,通过HP端口,对DDR进行“写”操作。每50msDDR1k寻址,写入同样一个数据。然后,产生中断,通知PS来读取DDR里的数据。PS接收到中断之后,就从指定的DDR中,寻址1K地址 “读”走数据。然后,通过“网口”将这4k数据读取出来。

       预想的结果是:通过网口,从DDR中读取的数据是每1k的数据都是不同的。

     现在,遇到的问题如下:

    通过Chicscope可以看到通过MOO_AXI_Master接口方面向DDR里写入的数据都是正常的。可以看到确实是每50ms向指定的DDR写入了同样的一个数据,下一个50ms变成了另一个数据。

    但是,为什么通过网口从DDR中读取的数据都是同样的呢?一直都是同样的一个数据。无论网口从其中读取多少个数据,都是同样的一个数据。是在PL端中写入的某一个50ms内写入的,其中的一个数据,然后,就不再改变了,一直就是这样的一个数据了。

 

     并且,现在已经在程序中将cache功能关闭了,void Xil_DCacheDisable(void),可是,依然是有这种现象。

 

     请问各位遇到过这类问题吗?还是可以帮忙分析一下,究竟是哪里出的问题?谢谢各位!

0 项奖励
4 回复数
chaoz
Xilinx Employee
Xilinx Employee
314 次查看
注册日期: ‎09-14-2018

看起来还是像cache一致性问题,建议贴下代码具体看看。

----------------------------------------------------------------------------------------------
如果帖子有帮助,别忘“接受为解决方案”或“奖励”。谢谢!
Don't forget to "Accept as solution" or "Kudo" if it helps. Thanks!
----------------------------------------------------------------------------------------------

0 项奖励
tanyushuang
Contributor
Contributor
291 次查看
注册日期: ‎07-24-2019

   谢谢你的热心指定。感谢。

   下面,我将自己SDK中的代码贴一下,再次感谢!

   1.中断处理的部分:

   设置中断ID61号中断.jpg中断处理函数.jpg

上述的两个图片,是涉及到PL端,向DDR写入了1K的数据之后,通过ID61号中断,通知Ps侧,可以去DDR里读取数据了。这个中断的部分,目前测试,都是没有什么问题的。每50ms来一个中断信号。

2.主函数部分:

主函数中的处理.jpg

主函数中主要就是有一个网口的定时器中断,和ID61号中断,都是正常运行的。并且在主函数中,将Cache关掉了。

3.send_data 函数部分

senddata函数.jpg

在上述的函数中,就是感觉send_buffer里的数据一直都没有改变过。不知道为什么!

上述,就是一个代码的大致架构了。

再次感谢你的回复!

0 项奖励
tanyushuang
Contributor
Contributor
202 次查看
注册日期: ‎07-24-2019

报告一下,目前这个问题的解决情况。

在SDK中,用函数void_DCacheDisable(void) 好像并没有什么用。

而是在每次改动DDR的数据之后,

用了如下的函数将Cache中的数据无效,并且将DDR中的数据更新到DDR中

用如下的函数,Xil_DCacheInvalidateRange(adr,len) 

将目前的问题解决了。

留个脚印。

也谢谢 @chaoz  的热情回应。

 

chaoz
Xilinx Employee
Xilinx Employee
197 次查看
注册日期: ‎09-14-2018

按理说void_DCacheDisable(void) 应该起作用的,我们在之前也这样用过。不知道是不是其它地方又使能了。

Anyway, Xil_DCacheInvalidateRange能解决问题就好。

----------------------------------------------------------------------------------------------
如果帖子有帮助,别忘“接受为解决方案”或“奖励”。谢谢!
Don't forget to "Accept as solution" or "Kudo" if it helps. Thanks!
----------------------------------------------------------------------------------------------

0 项奖励