![](/img/trans.png)
[英]How to limit process memory utilization on Linux (e.g. using BSD::Resource)
[英]Linux: create mmap()able virtual file (e.g. SPI memory)
我有一个 char 设备,可以访问外部 SPI memory,我想 mmap() 外部 memory 以便我可以从程序访问它,就好像它是正常的 ZCD69B4957F06CD818D7B3D691
如果我在 char 设备文件上使用通常的 mmap() 页面重新映射实现,它只会让我看到设备 memory 区域,而不是它的虚拟 char 文件...
有什么诀窍可以让我这样做吗?
TIA
如果字符设备驱动程序提供了mmap
实现,它就可以工作。 它不这样做可能有一个很好的理由:
Memory 访问指令在总线上创建 memory 事务。 SPI memory 不能以这种方式寻址(尽管 SPI controller 可能使用内存映射 I/O,这是针对其自己的寄存器级接口,而不是 ZCD69B4957F06CD828D917BF3D61980DE 内容) 我想你可以用 memory 总线接口构建一个 SPI memory controller,但你会失去 SPI 标准的设备独立性。
模拟 memory 区域是可能的(抓取 memory 的页面,将其标记为不可访问,并处理访问冲突(SIGBUS 和 SIGSEGV),但这将非常低效。有时你会发现虚拟机这样做,但性能非常坏的。
听起来您需要某种驱动程序来将 memory 区域访问转换为通过面向字符的接口发送的命令。 这可能是一个非常简单的块设备驱动程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.