2016-07-03 4 views
-1

브레드 보드에 SRAM 칩 블록을 설치했습니다. 그리고 나는 어떤 종류의 USB 인터페이스를 통해 주소와 데이터 버스에 연결함으로써 리눅스에서이 메모리에 직접 접근하고 싶다. 그런 다음 리눅스를 메모리의 일반적인 논리적 블록으로보고 처리하여 프로세스를 생성하고 SRAM 블록을 자체 주소 공간으로 할당 할 수 있도록하고 싶습니다. 메모리가 완전히 외부에 있음을 알 필요는 없습니다.USB 인터페이스를 통한 외부 논리 메모리 블록?

메모리 버스에 직접 연결하기위한 USB 장치가 있습니까? 아마도 블록 장치로 리눅스에 나타나는 것일까? 블록 장치가 주어진다면 mmap()을 사용하여 메모리에 매핑 할 수 있고 거기에서 프로세스가 차이를 알 수 없다는 것을 이해합니다.

그렇지 않다면 가장 간단하고 우아한 방법은 무엇입니까? 나는 버스를 GPIO 핀에 연결하고 인터페이스 장치와 함께 블록 장치 드라이버를 작성하여 거기에서 mmap()을 사용할 수 있습니다. 또는 마이크로 컨트롤러를 프로그래밍하여 메모리 버스와 인터페이스하고 직렬 인터페이스를 통해 명령을 받아들이고 결과를 반환 할 수 있습니다. 그러나 가능하다면 나는 우회로를 걸리지 말고, 이것을 달성하기 위해 가장 빠르고 직설적 인 길을 택하지 않는 것을 선호합니다.

답변

1

USB 스틱은 대용량 저장 장치 클래스 https://en.wikipedia.org/wiki/USB_mass_storage_device_class

리눅스 호스트 드라이버는 대용량 저장 클래스를 알고 (블록 장치로 표시) 구현합니다. (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

에게 또한 참조 LUFA 라이브러리를 참조 http://www.fourwalledcubicle.com/LUFA.php