VxWorks cache问题

VxWorks 驱动中用了DMA,所以需要手动invalidate和flush cache。在单核模式下可以运行的驱动,在SMP多核模式下却会出现问题,SMP下cache需要特别注意什么吗?

该回答引用NewBing,仅供参考,不保证完全正确

您好!在SMP多核模式下,cache需要特别注意以下几点:

  1. 在SMP多核模式下,每个CPU的cache都要处于使能状态,不可禁用。
  2. 在SMP多核模式下,调用cacheEnable()总会返回OK,而调用cacheDisable()总是返回ERROR。ERRNO是S_cacheLib_FUNCTION_UNSUPPORTED。
  3. 为了确保硬件cache一致性,在SMP多核模式下调用cacheInvalidate()和cacheFlush()时,它们不会进行任何操作除了返回OK。

这里有一些参考资料可以帮助您更好地理解和实现:


源: 与必应的对话, 2023/7/12
(1) VxWorks 7 Symmetric Multiprocessing - Wind River Education Services. https://learning.windriver.com/vxworks-7-symmetric-multiprocessing.
(2) vxWorks SMP 多核编程_VxWorks_developer的博客-CSDN博客. https://blog.csdn.net/m0_37585897/article/details/105437886.
(3) 基于Zynq7000平台VxWorks6.9开发应用——SMP多核任务篇. https://blog.csdn.net/cpuos2010/article/details/117444362.