임베디드/linux kernel with udoo

5.입출력 장치

박재완 2022. 7. 5. 13:41
728x90
반응형

프로세서와 정보를 교환하는 장치

디지털 신호 또는 아날로그 신호를 포함한다.

프로세서와는 메모리 장치와 같이 디지털 신호인 더으레스, 데이터 및 제어 신호를 통해서 연결 된다.

 

입출력 장치 제어

입출력 장치를 제어하기 위해서는 어드레스 할당이 필요하고 데이터를 교환하기 위한 데이터 버스와 제어 신호 사용

 

표준 I/O 맵 방식(I/O-mapped peripheral)

전용의 입출력 장치 주소 공간을 할당하여 사용

인텔의 x86 CPU 계열이 대표적

 

메모리 맵 방식(Memory mapped peripheral)

메모리 주소 공간의 일부를 활용하여 사용

대부분의 임데디드 프로세서에서 사용 됨

 

메모리 맵 방식과 I/O 맵 방식

구분 메모리 맵 방식 I/O 맵 방식
대표적인 프로세서 ARM, MIPS, PowerPC, M68K … x86 계열
입출력 장치의 영역 메모리의 일부를 I/O 장치로 사용 메모리 영역과는 별도의 I/O 번지 영역이 존재
명령어 메모리와 I/O 장치 모두 메모리 동작 명령으로 억세스 하며, 각 영역의 구분은 어드레스로 한다. 메모리 억세스 명령과 I/O 억세스 명령(in/out)이 구분
하드웨어 어드레스를 해석하는 디코더 회로에 따라 메모리 혹은 I/O 장치가 선택 메모리 번지와 I/O 번지를 구분하는 신호가 존재.
주의 사항 -  I/O 영역은 Non-cacheable 
   설정해야 한다

-  I/O 영역 변수는 volatile type으로
   선언해야 한다.
 

 

입출력 장치의 자원 관리

폴링 방식

> 한 프로그램이나 장치에서 다른 프로그램이나 장치들이 어떤 상태에 있는지를 지속적으로 검사하는 전송 제어 방식

>입출력 장치의 접속 여부 및 데이터 전송의 요청과 종료를 검사한다.

 

인터럽트

> 프로세서는 일련의 처리를 수행하고, 주변장치에서 입출력 처리 동작이 필요한 경우 프로세서에게 진행 중 이던 명령을 멈추고 새로운 동작을 할 수 있도록 한다.

>프로세서는 한번에 한개의 명령만을 수행할 수 있다.

>인터럽트를 이용하면 멀티태스킹을 지원할 수 있도록 한다.

>사용자는 모든 작업이 동시에 수행되는 것처럼 보이게 동작한다.

 

DMA 방식

>DMA(Direct Memory Access)방식은 CPU의 개입 없이 입출력 장치와 기억 장치사이에 데이터를 전송하는 방식

즉 프로세서 개입 없이 입출력 장치와 기억 장치 사이의 데이터를 전송하는 방식으로 다른 버스 마스터가 주기억 장치를 접근 하지 않는 동안에 데이터를 교환

 

인터럽트 인터페이스

제어기

>입출력 장치에서 발생되는 인터럽트의 요청을 제어한다.

>하드웨어에 따라 인터럽트 응답을 위한 신호도 제공된다.

 

인터럽트 요청 (interrupt Request)

>외부 장치에서입출력 동작에 대한 처리를 프로세서에 요청

>인터럽트의 발생은 하드웨어적으로 이루어 진다. 따라서 인터럽트가 발생하면 프로세서가 스스로 프로그램의 개입 없이 일련의 동작을 수행해야 한다.

 

>인터럽트  Vector -> 인터럽트 서비스 루틴을 처리하기위한 명령 또는 위치가 저장된 메모리 공간

인터럽트 Vector 주소 지정 방식 

> 고정 인터럽트(Fixed interrupt) -> 인터럽트가 발생시 처리할 어드레스가 지정되어 변경이 않 된다.

>지정된 어드레스에 인터럽트를 처리하기 위한 명령 또는 위치가 저장되어 있다.

>벡터 인터럽트(Vectored interrupt) ->일반적인 마이크로프로세서 장치에서 여러 개의 주변 장치가 시스템 버스에 연결되어 사용되는 경우

>주변장치가 인터럽트를 처리할 주소를 제공

 

>인터럽트의 요청에 따라 프로세서는 정해진 절차에 의하여 발생 된 인터럽트의 처리 여부를 결정하고 인터럽트를 서비스하는 절차(ISR : Interrupt Service Routine)를 수행한다.

 

인터럽트 발생의 예

>시리얼로 데이터 입력 완료

>시리얼 데이터 전송 준비 환료, 또는 전송 에러 발생

>이더넷 데이터 수신 완료, 이더넷 전송에러 등

 

728x90
반응형

'임베디드 > linux kernel with udoo' 카테고리의 다른 글

8.ARM  (0) 2022.07.08
7. 임베디드 시스템 설계 절차  (0) 2022.07.07
4. 메모리  (0) 2022.07.04
3.프로그램  (0) 2022.07.01
2.마이크로 프로세서와 SoC  (0) 2022.06.30