ioremap()함수와 phys_to_virt()함수는, 둘다 물리주소를 가상주소로 바꿀때 쓰인다.
하지만 차이점은 존재한다.
ioremap()함수는 요구된 물리 주소로 시작하는 영역을 커널 모드에서 사용할 수 있도록 가상 주소 공간으로 등록 하지만,
phys_to_virt() 함수는 PAGE_OFFSET과 같은 값을 이용하여 변환 처리만 계산하기 때문이다.
void* ioremap(unsigned long offset , unsigned long size);
반환 값: 가상 주소의 선두 주소
offset : 물리 주소의 시작 주소
size : 크기
void* phys_to_virt(unsigned long address);
반환 값 : 변환된 가상주소
address : 물리 주소
* PAGE_OFFSET 매크로 상수값 : 물리 주소와 가상 주소간에 변환을 위해 쓰이며, #include <asm/page.h>에 정의된다.
하지만 차이점은 존재한다.
ioremap()함수는 요구된 물리 주소로 시작하는 영역을 커널 모드에서 사용할 수 있도록 가상 주소 공간으로 등록 하지만,
phys_to_virt() 함수는 PAGE_OFFSET과 같은 값을 이용하여 변환 처리만 계산하기 때문이다.
void* ioremap(unsigned long offset , unsigned long size);
반환 값: 가상 주소의 선두 주소
offset : 물리 주소의 시작 주소
size : 크기
void* phys_to_virt(unsigned long address);
반환 값 : 변환된 가상주소
address : 물리 주소
* PAGE_OFFSET 매크로 상수값 : 물리 주소와 가상 주소간에 변환을 위해 쓰이며, #include <asm/page.h>에 정의된다.
'Device Driver > Memory' 카테고리의 다른 글
물리메모리 가상메모리 매핑방법 (0) | 2009.06.22 |
---|---|
램디스크를 쓸것인가? MTD를 쓸것인가? (0) | 2009.06.08 |
MTD(Memory Technology Device) (0) | 2009.06.08 |
Common Flash Interface(CFI) (0) | 2009.06.08 |
WRITTEN BY
- RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.
,