프로그래밍/리눅스 드라이버
I/O Method
얼땅불땅
2013. 8. 14. 09:37
디바이스 레지스터(Device Register)들에 대한 접근 방법은 Memory-Mapped I/O와 I/O Mapped I/O 가 있다.
Memory-Mapped I/O : 메모리의 일부 공간을 디바이스의 레지스터 공간으로 mapping 한다.
I/O mapped I/O: 메모리와 I/O 영역이 별도의 공간의 저장되어 Memory-Mapped I/O처럼 메모리 용량이 줄어드는 문제는 없어진다. 메모리에 대한 데이터 Access는 Load, Store 로 이뤄지며, I/O 입출력은 Input, Output 으로 이뤄진다.
I/O mapped I/O: 메모리와 I/O 영역이 별도의 공간의 저장되어 Memory-Mapped I/O처럼 메모리 용량이 줄어드는 문제는 없어진다. 메모리에 대한 데이터 Access는 Load, Store 로 이뤄지며, I/O 입출력은 Input, Output 으로 이뤄진다.
Memory-Mapped I/O의 레지스터 접근 예)
violatile dword *PMM;
PMM = (volatile dword *)0x000111F3
I/O Mapped I/O 레지스터 접근 )
unsigned inb( unsigned port);
void outb(unsigned char byte, unsigned port);