[Polling vs Interrupt] ) Polling (폴링) : 계속 체크하는 것을 Default로 합니다. ) Interrupt (인터럽트) : 리퀘스트가 들어왔을 때에만 그에 따른 대응을 합니다. Polling Interrupt Slow Fast Wasting CPU Time Efficient Scales Badly Scales Well ) 교수가 교실에서 돌아다니면서 학생 각각을 "도움이 필요한가요?" 라고 물어보면서 체크하는 것을 Polling ) 교수가 할 일을 하고 있다가 학생이 도와달라고 요청이 들어왔을 때, 그 요청을 도와주는 것을 Interrupt 이전 챕터에서 했던 실습에서 https://shanate.tistory.com/entry/7-VGA-Peripheral-2 UART에서..
VGA 페리프럴만 사용하는 것이 아닌 UART까지 사용하는 것을 목표로 합니다. UART로는 외부 디바이스 장치인 키보드를 사용할 것인데, 키보드를 통해 유저가 타이핑을 하면 이를 VGA페리프럴을 통해 모니터에 문자를 출력하게 됩니다. 이전 과정에서는 - 아마 포스팅을 하지 않았을텐데 그에 대한 것은 추후에 수정을 가하도록 할게요. - 어셈블리로 미리 입력한 문자가 모니터에 출력되는 것을 실습하였지만, 이번에는 실시간으로 모니터에 출력하는 것에 의의를 둡니다. 사용하게 되는 메모리 맵은 다음과 같습니다. Memory와 VGA 그리고 UART는 각각 위에 나온 테이블처럼 어드레스를 사용하게 됩니다. UART는 이전에 실습했던 것과 같습니다. 5100_0000부터 시작하게 되는데 데이터가 들어오게 되고, 이..
[VGA] ) Video Graphics Array ) R(RED), G(GREEN), B(BLUE) // R - 3bit, G - 3 bit, B - 2bit ) 두 개의 싱크 시그널(동기화 신호)가 있다. - 수평(H_SYNC)과 수직(V_SYNC) > 즉, 5개의 아날로그 시그널이 존재합니다. 래스터 스캔(Raster Scan) ) 두 싱크 신호가 동작하는 방식. ) 좌상단 부분에서 픽셀 하나씩을 우측으로 차례로 뿌리고 한 줄 끝나면 다음줄로 가서 다시 뿌리는 방식으로 진행해서 한 모니터에서 모든 진행이 끝나면 다시 처음 좌상단 부분으로 돌아와서 이 행동을 반복합니다. ) H_SYNC : 신호가 모든 부분에서 발생하는 것이 아니라 한 줄의 끝에 다다랐을 때 이 신호가 발생함에 따라 다음 줄로 넘어갈..
[Timer] ) Clock Source : 임베디드 SoC에서 시간을 재거나 특정 Event가 발생했을 때의 시간을 기록하는 용도로 사용하는 것을 Timer라고 하는데, 숫자가 커지거나 줄어드는 Timer가 있고, 선택적으로 증감 방향을 결정하는 Timer가 있습니다. 기본적으로 4가지의 카테고리로 나뉠 수 있는데 Clock Source가 필요한데 이는 기준 신호를 기반으로 해서 시간을 잽니다. 다만, 매우 빠른 속도를 갖습니다. ( 수십 Mhz ~ 수 Ghz 급의 속도를 갖습니다. ) ) Prescaler : 빠른 속도를 느리게 만들기 위해 Prescaler를 사용합니다. 느리게 만드는 것을 '분주'라고 한다. 아날로그 회로에서는 PLL이라는 회로로 피드백을 통해 Clock을 분주합니다. 디지털에서는..
UART 통신이기 때문에 기본적으로 통신 프로토콜이다. SoC가 독립적으로 동작할 수 있지만, 외부의 대상과 데이터를 주고 받기 위해서는 통신 프로토콜이 필요하다. 프로토콜은 두 가지의 종류가 있다. [Serial Communication : 직렬 통신] - 매 순간마다 한 비트 단위로 데이터를 송수신한다. - 한 라인에서 독립적으로 보낼 수 있다. - 하나의 라인으로 동작하기 때문에 하드웨어를 구성할 때 필요한 리소스가 적다. - UART, SPI, I2C(I square C), USB, Ethernet, etc. [Parallel Communication : 병렬 통신] - 한 번에 멀티플 비트를 송수신한다. - 각각의 신호 사이에 Cross Talk 또는 Noise 등이 존재하기 때문에 신뢰가 떨어..
지난 챕터에서 SoC를 이루는 3요소로 프로세서, 페리프럴, 버스를 소개했습니다. 이 요소들을 인체기관으로 빗대어보어 각기 대응하면 뇌, 감각·운동기관, 신경기관이라고 소개했었습니다. - 코어가 명령을 내리고 페리프럴에게 잘 전달하고, 페리프럴이 연산을 수행한 후, 그에 대한 리스폰스를 다시 코어에게 전달하는데 이 때마다 전달을 할 수 있게 해주는 역할이 바로 '버스'입니다. 만일, 버스가 없다면 프로세서와 페리프럴이 1:1 대응을 하여 모든 입력과 출력이 동작하게 될 것입니다. 그렇게 된다면 프로세서에서 처리할 인풋과 아웃풋이 매우 많아지겠죠. 하지만 이 때 버스를 이용한다면 공통적인 패스(Path)를 만들기 때문에, 그러한 1:1 대응을 할 필요가 없어지게 된다는 것입니다. Master Read / ..