取消
显示结果 
搜索替代 
您的意思是: 
Highlighted
Visitor
Visitor
598 次查看
注册日期: ‎05-22-2020

zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

目前想通过ps测读写pl测的DDR,用ioremap映射的话 读速度很慢,想用ioremap_cache来映射,想请教一下内核下面怎么刷cache来保证数据一致性?调用什么函数?

0 项奖励
16 条回复16
Highlighted
Visitor
Visitor
553 次查看
注册日期: ‎05-22-2020

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

内核里面有没有函数可以刷一下ioremap_cache映射的内存的? 

0 项奖励
Highlighted
Visitor
Visitor
538 次查看
注册日期: ‎05-22-2020

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

zcu106 内核版本不能用flush_cache_all这个函数吗

0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
530 次查看
注册日期: ‎06-19-2019

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

参考下这个链接内容,试试看。

https://linuxhint.com/clear_cache_linux/

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
Highlighted
Visitor
Visitor
523 次查看
注册日期: ‎05-22-2020

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

您好: 

     感谢您的回答。这个跟我的使用情况不一样,我是要在ps侧读pl侧的ddr数据,我在ps侧驱动中ioremap_cache(ddr的地址),然后我操作映射出来的虚拟地址,读的时候发现数据和存在ddr的数据不一致,原因可能是读到了cache中的脏数据。这个怎么解决。

0 项奖励
Highlighted
Visitor
Visitor
522 次查看
注册日期: ‎05-22-2020

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

您好:

感谢您的回答。这个跟我的使用情况不一样,我是要在ps侧读pl侧的ddr数据,我在ps侧驱动中ioremap_cache(ddr的地址),然后我操作映射出来的虚拟地址,读的时候发现数据和存在ddr的数据不一致,原因可能是读到了cache中的脏数据。这个怎么解决。
0 项奖励
Highlighted
Visitor
Visitor
491 次查看
注册日期: ‎05-22-2020

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

您好,问一下_flush_dcache_area这个可以刷cache吗 为什么添加了头文件但是insmod 驱动的时候不识别Unknown symbol __flush_dcache_area (err -2)。

0 项奖励
Highlighted
Visitor
Visitor
317 次查看
注册日期: ‎05-22-2020

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

您好:

    有没有方法能保持数据的一致性?

0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
258 次查看
注册日期: ‎06-19-2019

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

1) 确保PL读取的地址空间,不被其他程序改写,一般和PL交互的话,最好专门预留一块空间。

2)读取数据之前先清一下cache

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
Highlighted
Visitor
Visitor
255 次查看
注册日期: ‎05-22-2020

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

2)读取数据之前先清一下cache

这个怎么清? 试了几种方法都行。

0 项奖励
Highlighted
Visitor
Visitor
231 次查看
注册日期: ‎05-22-2020

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

2)读取数据之前先清一下cache
清cache这个要怎么操作?
0 项奖励
Highlighted
Visitor
Visitor
230 次查看
注册日期: ‎05-22-2020

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

2)读取数据之前先清一下cache

清cache这个要怎么操作?
0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
209 次查看
注册日期: ‎06-19-2019

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

可以参考一下如下链接

https://unix.stackexchange.com/questions/87908/how-do-you-empty-the-buffers-and-cache-on-a-linux-system

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
Highlighted
Visitor
Visitor
205 次查看
注册日期: ‎05-22-2020

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

您好 这个不一样的,我的使用场景是,pl测给我一块内存,我用ioremap_cache映射一下,使用的时候网口会一直向pl测的这块内存写数据,我从映射的内存来读取网口发来的这些数据,测试下来当用ioremap_cache映射的时候,数据有概率会有错误,原因可能是读到了脏数据,所以我想再读之前刷一下cache,保证我读到的数据是从内存里获取的而不是缓存的脏数据。想问一下 有没有办法能刷一下cache,之前在网上找的比如dma_sync_single_for_cpu 、dma_sync_single_for_device (这两个函数在64位的系统里面有限制,能刷的范围只能是在ps测通过malloc这种来申请的,ioremap这种没办法)、dma_cache_sync 都是没办法用的。想问一下有没有类似的函数在arm64上能用的?
0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
193 次查看
注册日期: ‎06-19-2019

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

函数的话,应该没有更多的了。一般cache的刷新应该都是用汇编语言来实现的。

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
Highlighted
Visitor
Visitor
110 次查看
注册日期: ‎05-22-2020

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

那这个有什么解决办法吗?因为测试下来 ioremap_cache分配的内存 刷不了 是因为刷cache有个内存范围,而ioremap_cache分配的不在这个范围内。应该是有这种解决办法的吧,要不然ioremap_cache分配的怎么用呢。。
0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
96 次查看
注册日期: ‎06-19-2019

回复: zcu106开发板。ioremap_cache映射的内存怎么能刷下cache保持数据一致性?

我暂时没有想到什么解决方法,因为这部分更偏向于kernel本身的使用了。

你可以在ARM论坛或者Linux Kernel论坛看看有没有好的解决方法。

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励