프리 스케일 MPC8306에서 LED 드라이버를 개발 중입니다. 드라이버 코드에서 GPIO 레지스터에 ioremap을 수행하고 재 매핑 된 GPIO 레지스터 주소에 remap_pfn_range를 호출 한 다음 사용자 공간에서 mmap을 호출하여 GPIO 레지스터를 사용자 공간에 매핑합니다. 전에이 작업을 수행하지 않았으며이 방법이 작동하는지 여부를 알고 싶습니다. 좀 도와 줄 수 있어요? 미리 감사드립니다.하드웨어 레지스터를 사용자 공간에 매핑 할 수 있습니까?
답변
더 쉬운 방법은 mmap
사용자 공간 프로그램에서 /dev/mem
의 관련 오프셋을 직접 입력하는 것입니다. 이를 통해 물리적 메모리 레이아웃을 검색하여 액세스 할 수 있습니다.
AFAIK, 이것은 사용자 인터페이스 프로그램에서 사용할 수있는 GPIO 메모리 매핑 I/O 레지스터를 만들기 위해 RaspberryPi 개발자가 수행 한 작업입니다.
안녕하세요, 당신의 제안이 효과가 있습니다. 당신의 도움을 주셔서 감사합니다. –
* 큰 *주의 사항 : 사용자 공간에 액세스하기에는 안전하지 않은 사항이 있습니다. 레지스터의 읽기 - 수정 - 쓰기. (주변기기를 바꿀 때 메모리 장벽을 사용해야하기 때문에 rPi에서 더 재미있어진다. 커널 코드가 할 수 있으면 좋겠지 만 다른 사용자 공간 스레드는 그렇게 용서할 수 없다.) –
GPIO 레지스터에 액세스하려면 /dev/mem
인터페이스를 사용해야합니다. 다른 임베디드 보드의 GPIO를 통해 LED를 제어하는 데 유용한 참조 번호는 here입니다.
- 1. kmalloc 메모리를 사용자 공간에 매핑
- 2. 하드웨어 레지스터를 읽고 쓸 수 없습니다 (메모리 맵핑) 하드웨어 레지스터
- 3. 파이썬 - 하드웨어 처리, 하드웨어 레지스터를 객체의 속성으로 효율적으로 구현하는 방법
- 4. 사용자 프로세스에서 하드웨어 액세스
- 5. 주소를 함수의 결과에 매핑 할 수 있습니까?
- 6. 리눅스 타이밍 커널 및 사용자 공간에 걸쳐
- 7. C#을 사용하여 하드웨어 레지스터를 읽고 쓰는 방법은 무엇입니까?
- 8. VS2008 IDE에서 CPU 레지스터를 수정할 수 있습니까?
- 9. IIS 가상 디렉터리를 클라우드의 Azure CDN에 매핑 할 수 있습니까?
- 10. 사용자 공간에 플랫폼 서명 앱을 설치할 수 있습니까?
- 11. 커널 공간에 libc가 있습니까?
- 12. vim의 작은 삭제 레지스터를 사용할 수 있습니까?
- 13. 상업용 매핑 API를 권장 할 수 있습니까?
- 14. 1 형식의 네온 레지스터를 다른 형식으로 변환 할 수 있습니까
- 15. Linux에서 캐싱 할 수없는 메모리 블록을 사용자 공간에 할당 할 수 있습니까?
- 16. 레지스터를 루프 카운터로 사용할 수 있습니까?
- 17. 사용자 정의 HW의 메모리 매핑
- 18. 아파치가 URL의 공간에 + 기호를 처리 할 수 있습니까?
- 19. NHibernate 매핑 문제 - 여러 어셈블리를 매핑 할 수 있습니까?
- 20. 헤드셋 버튼을 다시 매핑 할 수 있습니까?
- 21. 배열의 일부만 매핑 할 수 있습니까? (Array.map())
- 22. 가능하면 곡선이있는 이미지를 매핑 할 수 있습니까?
- 23. NHibernate는 열을 테이블에 매핑 할 수 있습니까?
- 24. Vim에서 어떻게 클릭을 매핑 할 수 있습니까?
- 25. 요소를 가능한 구성원으로 매핑 할 수 있습니까?
- 26. 리소스를 다른 컨트롤러에 매핑 할 수 있습니까?
- 27. 도메인을 특정 페이지에 매핑 할 수 있습니까?
- 28. AutoMapper가 정적 속성을 매핑 할 수 있습니까?
- 29. mod_rewrite URL을 역순으로 매핑 할 수 있습니까?
- 30. NHibernate에서 지능적으로 DTO를 매핑 할 수 있습니까?
사용자 공간이 원하는 경우'/ sys/class/gpio' 인터페이스를 사용하는 것이 훨씬 더 간단합니다. 왜 바퀴를 다시 발명하는지, http://elinux.org/GPIO 참조 –