【发布时间】:2020-02-14 00:59:40
【问题描述】:
我正在使用通过 PCIe 与我的PowerPC CPU 通信的嵌入式设备。由于 SDK 的限制,我必须使用 linux 内核版本4.1.8。此版本没有$KERNEL_SOURCE/arch/powerpc/include/asm/中与cache操作相关的功能,如:
-
"invalidate_dcache_range()" -
"flush_dcache_range()" -
"clean_dcache_range()"
(在此目录中"cacheflush.h" 标头仅包含上述函数的声明。)
另外,我的嵌入式设备的SDK需要调用这些函数来准备DMA访问。
请注意,高于4.5 的内核版本提供了这些函数的声明。
现在我有一些问题:
- 我可以使用和复制在较新内核、旧内核中实现的函数并重新构建它,但是修改内核源代码没有意义,对吧?
- 您能建议一些解决方法吗?
- 如何测试缓存是否正确失效或刷新?有没有办法读取用户空间中的缓存块?
谢谢,
【问题讨论】:
标签: c linux-kernel embedded cpu-cache powerpc