안녕하세요. 

저는 유영창님의 디바이스 드라이버 책을 공부하고 있는 독자이구요.

여쭤보고싶은것이 있어서 글을 올립니다.



제가 리눅스 소스코드에서(커널 2.4) map_desc구조체 부분을 수정하였거든요. 다음과 같습니다.


  { 0xfff00000,  0x14000000, 0x0000ffff, DOMAIN_IO, 0, 1, 0, 0 }, //CS5 :Serial CS_A A16:L, A17:L, A18:0
  { 0xfff10000,  0x14010000, 0x0000ffff, DOMAIN_IO, 0, 1, 0, 0 }, //CS5 :Serial CS_A A16:L, A17:L, A18:0
  { 0xfff20000,  0x14020000, 0x0000ffff, DOMAIN_IO, 0, 1, 0, 0 }, //CS5 :Serial CS_A A16:L, A17:L, A18:0
  { 0xfff30000,  0x14030000, 0x0000ffff, DOMAIN_IO, 0, 1, 0, 0 }, //CS5 :Serial CS_A A16:L, A17:L, A18:0


CS5를 사용하기위해서 다음과 같이 연결을 하였는데요.

위의 처리는. 리눅스 디바이스 드라이버 단에서 ioremap함수의 기능과 동일하다고 알고 있습니다.


위의 환경에서 virt_to_phys(0xfff00000) 을 하면요. 0x14000000으로 매핑된 물리주소가 나올줄 알았는데요

그렇치않더라구요. 그 이유를 알고싶습니다.




아 그리구요. ioremap()함수와 request_mem_region() 함수와의 차이점또한 알고싶습니다.


읽어주셔서 감사합니다.