Study/임베디드시스템및실험

[Lecture 06] Polling & Pull-up register

ansui 2023. 10. 17. 18:59

Lecture 06_ Polling & Pull-up register

 


< Accessing I/O Devices >

> Memory-mapped I/O

: allows I/O registers to be accessed as memory addresses

: LOAD, STORE 명령어만 사용

 

 

Simple Operations >

- Load (memory → register)

: 메인 메모리의 byte나 word를 register에 복사하여, register의 이전 내용에 overwriting

 

- Store (reigster → memory)

: register의 byte나 word를 메인메모리에 복사하여, 해당 위치의 이전내용에 overwriting

 

- Operate

2개의 registers의 내용을 ALU에 복사하고, 두 words에 대한 arithmetic operation을 수행한다.

(그 결과를 register에 저장하고, register의 이전 내용에 overwriting )

 

- Jump

: 명령어 자체에서 word를 추출하고 PC(Program Counter)에 복사하여 PC의 이전 값에  overwriting

 

 

< I/O Device Interface >

: device와 interconnection network 사이의 circuit

- data 전송, status 교환, control information의 수단을 제공한다.

- LOAD, STORE 명령어로 접근 가능한 data registers , status registers , control registers가 포함된다.

- Memory-mapped I/O를 통해 SW는 이러한 registers들이 메모리에 어떤 위치에 있는 지 볼 수 있다.

 

 

< Common Procedures for I/O >

 

Assume that the I/O devices have a way to send a ‘READY’ signal to the processor

- keyboard: character를 읽을 준비가 되었다고 알린다.

- display: character를 받아서 화면에 띄울 준비가 되었다고 알린다.

- The ‘READY’ signal = status flag in a status register that is polled by processor.

 

 

< Polling I/O >

> Polling

: CPU가 일정한 시간간격마다 이벤트가 있는지 테스트 하는 것

- 간단한 임베디드 시스템에서는 비교적 빨리 처리되어 크게 걱정할 필요 X

 

> Disadvantages

- time wasted on tests that could be spent computing

- Load(memory → I/O register) instruction 계속 진행하기 때문에 비효율적 → Interrupt로 해결

 

 

> An Example of Polling I/O

while 문 → DATA가 준비됐는지 확인
: DATA READY인지 확인하고 DATA READY 아니면, 계속 while문을 돈다

: 무한루프로 volatile 변수를 계속 확인하면 CPU 낭비 (다른 일 못한다)

 

 

< Polling Button Input >

- reset 버튼은 입력으로 쓸 수 없고 CPU reset에만 사용 가능

 

- 버튼을 누르지 않았다면 Floating (unkown state)

*Floating: not connected to any voltage supply, ground or ground-referenced signal source

- 버튼을 누르면 GND와 GPIO핀이 연결 → LOW(0) 신호

 

 

< Pull-up Registors >

: floating 상태일 때 입력값이 HIGH인지 LOW인지 알 수 없는, 불확실한 상태가 발생하지 않도록 하기 위해 사용

 

- known state로 만들기 위해

한 쪽 끝에는 pull-up resistor를 GPIO 핀에 연결 

다른 쪽 끝에는 HIGH voltage(5V or 3.3V, HIGH(1))를 연결

 

- 스위치가 열리면 GPIO input pin은 5V(HIGH(1))에 연결

스위치가 닫히면 GPIO input pin은 0V(LOW(0))에 연결

: 스위치 떼면 high(1), 스위치 누르면 low(0)

 

 

< Pull-up vs. Pull-Down Registors >

- Pull-up register: 스위치 떼면 high(1), 스위치 누르면 low(0)

- Pull-down register: 스위치 누르면 high(1), 스위치 떼면 low(0)

 

 


자료는 이화여자대학교 윤명국 교수님의 임베디드시스템및실험 강의에서 가져온 것입니다.