2013-11-01 1 views
0

프리 스케일 MPC8306에서 LED 드라이버를 개발 중입니다. 드라이버 코드에서 GPIO 레지스터에 ioremap을 수행하고 재 매핑 된 GPIO 레지스터 주소에 remap_pfn_range를 호출 한 다음 사용자 공간에서 mmap을 호출하여 GPIO 레지스터를 사용자 공간에 매핑합니다. 전에이 작업을 수행하지 않았으며이 방법이 작동하는지 여부를 알고 싶습니다. 좀 도와 줄 수 있어요? 미리 감사드립니다.하드웨어 레지스터를 사용자 공간에 매핑 할 수 있습니까?

+2

사용자 공간이 원하는 경우'/ sys/class/gpio' 인터페이스를 사용하는 것이 훨씬 더 간단합니다. 왜 바퀴를 다시 발명하는지, http://elinux.org/GPIO 참조 –

답변

0

더 쉬운 방법은 mmap 사용자 공간 프로그램에서 /dev/mem의 관련 오프셋을 직접 입력하는 것입니다. 이를 통해 물리적 메모리 레이아웃을 검색하여 액세스 할 수 있습니다.

AFAIK, 이것은 사용자 인터페이스 프로그램에서 사용할 수있는 GPIO 메모리 매핑 I/O 레지스터를 만들기 위해 RaspberryPi 개발자가 수행 한 작업입니다.

+0

안녕하세요, 당신의 제안이 효과가 있습니다. 당신의 도움을 주셔서 감사합니다. –

+1

* 큰 *주의 사항 : 사용자 공간에 액세스하기에는 안전하지 않은 사항이 있습니다. 레지스터의 읽기 - 수정 - 쓰기. (주변기기를 바꿀 때 메모리 장벽을 사용해야하기 때문에 rPi에서 더 재미있어진다. 커널 코드가 할 수 있으면 좋겠지 만 다른 사용자 공간 스레드는 그렇게 용서할 수 없다.) –

1

GPIO 레지스터에 액세스하려면 /dev/mem 인터페이스를 사용해야합니다. 다른 임베디드 보드의 GPIO를 통해 LED를 제어하는 ​​데 유용한 참조 번호는 here입니다.

관련 문제