2016-07-03 21 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ホストドライバは、マスストレージクラスを知っている(ブロックデバイスとして表示される)を実装します。

あなたは(mmap()とまったく同じではないが、以下のリンクを参照)仮想RAMとして大容量記憶装置(例えばUSBスティック)を使用することができ、スワップメモリ​​としてそれを宣言することで、この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

http://www.fourwalledcubicle.com/LUFA.php

LUFAライブラリを参照してください アトメル例とソースコードについても参照してください。
関連する問題