디바이스 레지스터(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);
'프로그래밍 > 리눅스 드라이버' 카테고리의 다른 글
쓰레드 동기화(synchronization) (0) | 2013.08.14 |
---|---|
make 간단 설명 (0) | 2013.08.14 |
GCC 옵션 간단하게 정리하기 (0) | 2013.08.14 |
모듈 프로그래밍 #2 (0) | 2013.08.14 |
모듈 프로그래밍 #1 (0) | 2013.08.14 |