ioremap : 동적으로 물리주소와 가상주소를 매핑시켜주는 함수
커널영역에서 뿐만 아니라 유저영역에서도 실제 물리 주소를 직접 제어할수 없다.
그래서 사용하고자 하는 물리주소와 그 크기를 인자로 넘겨 주어서 그 도메인의 가상주소를 리턴 받아
그 담부터는 가상주소로 접근해서 실제 물리주소를 제어할 수 있게 하는 것이다.
Device제어할때 크게 4가지 자원을 이용
I/O memory, I/O port, interrupt, DMA
이 중에서 I/O memory를 사용하려면 해당 메모리를 접근할 수 있어야 한다. 그러려면
해당 I/O 메모리를 메모리 공간에 mapping 시켜주어야 한다.
ioremap은 장치에 있는 I/O메모리를 가상메모리 공간으로 mapping을 시켜주는 일을 합니다.
디바이스의 물리 메모리는 직접 접근이 불가능합니다. 왜냐면 가상메모리의 페이지 테이블 관리 기법 때문이죠
그래서 ioremap을 호출해서 실제메모리를 가상 메모리로 할당 받아서 그 메모리베이스 기반으로 inb(?)나 outb등을 사용하는 것 입니다.
port = ioremap(원래의 port 주소, 0)
memory = ioremap(원래의 메모리, 0)
아 모르겠다.
할껀 디따 많구 모르는건 더 많구. ㅋㅋㅋㅋㅋㅋ
'프로그래밍' 카테고리의 다른 글
구조체 동적 배열 (0) | 2011.07.16 |
---|---|
동적배열 (0) | 2011.07.16 |
How to cross-compile BASH for Android (0) | 2011.06.08 |
UML 기초 (0) | 2011.05.07 |
Maximum segment size(MSS) (0) | 2011.05.07 |