메모리 맵을 볼 수 있는 방법은???

익명 사용자의 이미지

User level의 API 함수를 이용하여 Device의 레지스터를 읽고 쓰려고 합니다.
근데, Address 0xd0065838 out of bounds(gdb에서 debugging시)라며
세그멘테이션 오류가 발생을 합니다.

Base Address(0xd0065800) 자체가 User level에서 볼 수 있는 메모리 영역을
벗어나는건지...?
그렇다면... Linux에서 사용하고 있는 메모리 맵을 알고 싶습니다.

이런 경우 , 어떻게 접근을 해야 하는지 조언 부탁드립니다.

익명 사용자의 이미지

또 궁금이 wrote..
User level의 API 함수를 이용하여 Device의 레지스터를 읽고 쓰려고 합 니다.
근데, Address 0xd0065838 out of bounds(gdb에서 debugging시)라며
세그멘테이션 오류가 발생을 합니다.

Base Address(0xd0065800) 자체가 User level에서 볼 수 있는 메모리 영 역을
벗어나는건지...?
그렇다면... Linux에서 사용하고 있는 메모리 맵을 알고 싶습니다.

이런 경우 , 어떻게 접근을 해야 하는지 조언 부탁드립니다.

0xc0000000 이상부터는 커널영역입니다..

님 말씀대로지요..

그리고 memory-mapped된 register를 건들려면 아마도 커널 프로그래밍을
해야 할겁니다..

그냥 io port인 경우는 user level인 iopl함수를 써서 io권한을 낮춘 다음
에 쓰면 됩니다..