MICOM과 MPU

Posted on
micom mpu

개요

카메라 관련 업무로 ARM Cortex A7 Single 모델을 주로 사용하지만 A53, MICOM 과의 인터럽트 충돌 문제가 일어날 때가 있다. UART 부트 및 LVDS 채널 변경, 더 나아가 카메라 센서의 초기화까지 마이컴에서 담당하게 되는 시나리오가 있어 마이컴이 정확히 어떤 것인지 한번은 짚고 넘어가야 했다.

마침 한 블로그에 마이컴에 대해 간략하게 정리가 되어 있고 연관된 토픽 별로 정리해놓은 페이지가 있어 필요한 부분만 간추려 본 페이지로 정리하기로 한다.

본문

출처 내용 그대로 uC는 MicroController, uP는 MicroProcessor, “Adv"는 Advanced Topic의 줄임말로서 사용한다.

[uC] 마이컴 vs. 마이크로 프로세서

마이컴은 마이크로컨트롤러(Microcontroller)를 줄여서 부르는 말이다. 마이컴은 소형 범용 컴퓨터라고 할 수 있다. 마이크로프로세서와 마이컴의 가장 큰 차이점은 마이크로프로세서는 주변 장치(메모리, I/O 등등)와 함께 하나의 시스템을 구성하도록 설계되어 있으나 마이컴은 앞서 언급한 것처럼 그 자체가 하나의 컴퓨터로서 동작할 수 있도록 설계되어 있다.

PC의 성능/기능을 기대할 수는 없지만 프로그래밍이 가능한 롬이 있기 때문에 마이컴칩과 간단한 주변회로 만으로 특정 기능을 수행할 수 있다. 마이컴은 주변에서 흔하게 찾아볼 수 있는데 냉장고, 세탁기, TV, VCR, 마이크로웨이브 오븐 등 임베디드 시스템 환경에 적용되어 있다.

[uC] 마이컴 주변회로

8비트 마이컴은 연산을 처리하는 ALU와 메모리 인터페이스 부분 그리고 주변회로로 이루어져 있다. 주변회로에는 인터럽트, 타이머, UART 등이 있다. 32비트 마이컴의 주변 기기도 8비트와 크게 다르지 않다.

[uC] 타이머(Timer)

타이머는 흔히 알고 있는 스톱워치와 비슷한 기능을 가지고 있으나 처이가 있다. 스톱워지는 시간이 얼마나 흘렀는지를 측정하지만 타이머는 지정한 시간이 경과하면 알려주게 되어있다. 예를 들어 마이컴이 1/100초에 한번씩 키패드를 스캔해야 한다고 가정하면 마이컴은 키가 언제 눌러지는지 알 수 없으므로 항상 키패드를 일정 시간 간격으로 스캔(polling)해야 한다.

타이머가 없다면 프로세서는 시간이 얼마나 흘렀는지 알기 위해 자기가 수행한 명령어를 카운트해야 하는데 이 일이 프로세서에게는 상당히 비효율적이기 때문에 인터럽트를 제공하는 타이머를 사용한다.

[uC] Reset Vector

리셋 벡터는 마이컴에 리셋이 인가되었을 때 마이컴이 처음으로 실행되는 어드레스를 말한다. 마이컴에 전원이 인가되었을 때 마이컴이 어떻게 동작하는지 살펴보려면 리셋 벡터를 공부해야한다. 이 용어에서의 벡터는 물리시간에 배운 크기와 방향을 같는 의미의 벡터와는 무관하다.

[uP] Register File

레지스터가 여러 개 모여있는 것을 레지스터 파일이라고 부른다.

[uP] DMA

주변 기기에서 메모리로 데이터로 옮길 때는 CPU가 주변기기에서 데이터를 CPU로 가져온 다음에 메모리를 써야 한다. 즉, 주변기기에서 데이터를 읽어온 뒤 메모리로 보내는 작업을 프로세서가 해야하는데 이렇게 데이터를 옮기는 동안에는 CPU가 다른 작업을 할 수 없다. 때문에 DMA는 별도의 하드웨어에 이 작업을 맡기는 것이고 CPU는 주변장치로부터의 데이터를 메모리에 쓰기 위해 사이클을 낭비할 필요가 없어진다.

[uP] Super Scalar

벡터(Vector) 프로세서의 반대말이 스칼라 프로세서이다. 스칼라 프로세서는 한번에 하나의 명령어만 실행하며 슈퍼스칼라는 벡터와 스칼라 중간 정도에 해당한다. 즉 한번에 여러 개의 명령어를 실행할 수 있다.

[uP] Trap and Interrupt

프로그램 실행 중에 오버플로우나 언더플로우 같은 특이한 사항이 발생하는 경우 프로그램은 미리 설정해 놓은 특정 번지로 점프하여 그곳의 명령을 실행하게 되는데 이렇게 프로그램이 자동으로 특정 번지로 점프하여 그곳의 명령을 실행하는 것을 트랩이라 하고 해당 번지에 있는 핸들러를 트랩 핸들러라고 한다.

이러한 트랩과 인터럽트의 주된 차이점은 트랩은 어떤 프로그램을 실행 시켰을 때 항상 고정된 위치에서 일어나나 (외부)인터럽트는 언제 발생할지 모른다는 점이다.

출처