2016-07-03 19 views
-1

我在面包板上安装了一块SRAM芯片。我希望通过某种USB接口连接到它的地址和数据总线,从Linux直接访问这个内存。然后,我希望Linux将它看作是一个正常的逻辑内存块,这样我就可以产生一个进程并将SRAM块分配为它自己的地址空间,而不必知道它的内存是完全外部的。通过USB接口的外部逻辑存储器块?

这样的USB设备是否存在直接连接到内存总线?也许是Linux作为块设备出现的东西?我的理解是,给定一个块设备,我将能够使用mmap()将其映射到内存中,并从那里进程将知道没有区别。

如果不是,那么做这件事最直接和最优雅的方式是什么?我可以将总线连接到GPIO引脚,并写入一个块设备驱动程序来与它连接,并从那里使用mmap()。或者我可以编程一个微控制器与存储器总线连接并通过串行接口接受命令并返回结果。但是,如果可能的话,我宁愿不要绕道而行,而要采取最快捷,最直接和最自然的方式来实现这一点。

回答

1

USB棒实施大容量存储装置类https://en.wikipedia.org/wiki/USB_mass_storage_device_class(显示为块设备)

Linux主机驱动程序知道的海量存储类。

可以使用大容量存储设备(如USB记忆棒)作为虚拟RAM(不完全一样mmap()见下面的链接),宣称它作为交换内存看到这个http://www.tuxgarage.com/2011/07/add-virtual-ram-to-ubuntu-using-spare.html

https://en.wikipedia.org/wiki/Virtual_memory

面包板上的MCU必须实现海量存储设备类才能使其工作。

另见本线程Reading from USB device and writing to physical address

对于爱特梅尔例子和源代码,看到LUFA库http://www.fourwalledcubicle.com/LUFA.php