가상/물리메모리 주소에 대한 질문
글쓴이: declspec / 작성시간: 월, 2012/02/06 - 3:48오후
안녕하세요
일반 유저 애플리케이션을 만들때
직접적으로 원하는 물리 메모리에 접근할 방법은 없겠죠?
그렇다면 커널 레벨의 디바이스 드라이버를 작성할때는 가능한가요?
예를들어 실제 메모리 카드의 원하는 물리주소 (예:0x12345678) 번지에
read/write 를 하는게 가능한가요?
char* p=0x12345678;
(*p)=1;
이런 코드가 디바이스 드라이버 코드중에 있다고해도
여기서도 결국 0x12345678 번지는 MMU 에 의해서
변환되는 가상메모리주소인가요?
프로그램 코드에서 임의의 실제 메모리주소를 직접 접근할수는
없나요?
Forums:
유저 어플리케이션에서 물리메모리에 접근할 수
유저 어플리케이션에서 물리메모리에 접근할 수 있습니다.
mmap이란 함수를 찾아보세요^^ 특정 물리메모리를 가상메모리번지에 매핑시켜주는 함수입니다.
커널역시 가상메모리를 사용합니다.
단지 mmu가 참조하는 페이지 베이스 어드레스가 유저영역과 다른걸로 알고있습니다.^^
감사합니다
답변 감사합니다
하지만 제가 알기로 mmap 은 파일이나 장치의 IO 를 가상메모리에 매핑시키는 것이라고
아는데 이것이 물리메모리와 가상메모리의 매핑도 가능하게 해주는건가요??
그럼 mmap 함수를 사용해서 물리메모리를 가상메모리에 매핑하고자할때
file descriptor 는 뭐를 줘야하나요?
자기실력이 좋다고 느껴지는건 공부를 안하고 있다는 신호.
/dev/mem ?
/dev/mem ?
/dev/mem을 사용하시면 되요^^
/dev/mem을 사용하시면 되요^^
커널 레벨에서는 물리 주소 접근 가능합니다.
커널 레벨에서는 물리 주소 접근 가능합니다.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
댓글 달기