기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하십니까

cs1 에 디바이스를 달아서 사용하려고 합니다.
cs1 을 0xd1000000에 맵핑하였습니다.
{ 0xd1000000, 0x08000000, 0x100000, MT_DEVICE },
이와같이 매핑 하였는데요.

부팅후 소스에서 0xd1000001에 write를 하면
Unable to handle kernel paging request at virtual address d1000001
라는 세그멘트 오류가 납니다.
아마도 가상 매핑이 잘못된듯하여 살펴 보는중인데 원인을 모르겠네요.

조언 부탁합니다.

고현철

2008.04.11 05:08:04
*.32.117.22

겹치는 넘이 있는지 함 확인해 보시기 바랍니다.....

profile

김재훈

2008.04.11 08:15:27
*.46.167.11

가상 어드레스 영역이 겹치면 저런 문제가 나오는 걸로 알고 있습니다.
가상 테이블에서 겹치는 영역이 없는지 잘 계산해 보시는 것이 어떤지요.

문철민

2008.04.17 20:58:38
*.41.109.56

이상하게도 테이블에는 겹치는 부분이없으나 접근이 안됩니다.
일단은 불편하지만 ioremap으로 해결은 하였습니다.

문철민

2008.04.23 02:13:29
*.41.109.56

제가 사용한 커널이 2.6.24 버전인데요
struct map_desc 를 이용한매핑시
{ virt, pfn, size, MT_DEVICE },
로 되어야합니다.
__phys_to_pfn 를 사용하여 물리주소를 pfn으로 변경해야하니까 되네요.
List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인