linux - 如何在 Linux 内核中的特定范围内分配 dma 缓冲区?

标签 linux linux-kernel pool restriction dma

我有一个微处理器,它只能通过其数据缓存访问 DDR 中的 0xFFFFFF 字节。我可以给它一个偏移量,它可以开始读取这些 0xFFFFFF DDR

我想为其分配 dma 缓冲区。

我发现我可以提供一个掩码来限制这些 dma 缓冲区可以分配的位置。

我如何知道 dma_coherent_alloc 的分配将从哪里开始以设置微处理器的偏移量?

还有其他解决办法吗? 就像分配一个大缓冲区,然后在其中进行一些子分配(我不知道内核是否已经有一些设施)

提前致谢。

最佳答案

仅当您有多个处理器时才需要使用 dma_alloc_coherent。

如果是微处理器,您只需使用 kmalloc 并禁用缓存,然后使用 dma_map_sg() 获取 dma 句柄!

关于linux - 如何在 Linux 内核中的特定范围内分配 dma 缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32767064/

相关文章:

node.js - 在 Godaddy 共享 Linux 主机上安装 Nodejs 时出错

linux - 在 Linux 中没有 crontab 的 Cron 作业

c - "scatterlist"在 Linux 中如何工作?

pool - 产生比 gevent 池中更多的线程

java - HttpClient、ConnectionManager 和奇怪的池限制

linux - 创建Linux桌面环境

c++ - LD_BIND_NOW 可以使可执行文件运行更慢吗?

c++ - 我怎样才能确定 dlopen 正常工作

Linux内核——通过模块动态添加系统调用

java - 元空间和运行时常量池在 JVM 内存中的哪里?