Embedded/AVR2016.08.23 00:52


 처음으로 임베디드 시스템에 관하여 포스팅해보네요~

은 분들이 임베디드에 입문할때 AVR로 시작을 하곤 합니다.

과거에는 비교적 간단한 8비트 인텔 8051 프로세서를 주로 다루었지만 요즘은 시대이니만큼 AVR을 많이 가지고 노는 듯 합니다ㅋㅋㅋ 그 중에서도 비교적 보편화되어 있고 접하기 쉬운 ATMega128 프로세서를 직접 다뤄보면서 공부해봅시다!!




마이크로프로세서(Microprocessor)


 AVR이나 ARM과 같은 프로세서를 마이크로프로세서(Microprocessor)라고 부릅니다.

그렇다면 마이크로프로세서는 정확하게 무엇을 의미할까요?


마이크로 프로세서란?

 ->단일 칩으로 구성되어 입력된 프로그램에 의해 데이터를 입력받아 처리하고 결과를 출력하는 아주 조그마한 장치


 일반적으로 마이크로프로세서는 다양한 분야에서 제어장치로 사용됩니다. 컴퓨터나 가전제품, 로봇, 공장, 사무기기, 장난감, 자동차, 마우스, 모니터와 같은 정말 무궁무진하게 다양한 전자제품에 핵심적인 역할을 하고 있죠.




마이크로컨트롤러(Microcontroller)


 마이크로프로세서와 마이크로컨트롤러의 차이점은 뭘까요?


마이크로 컨트롤러란?

 ->마이크로 프로세서 중에서 자동화기기를 제어하기에 최적으로 구현되어 있는 프로세서


 일반적으로 마이크로 컨트롤러는 1.원칩 마이크로 프로세서 2.원칩 마이크로 컴퓨터(마이컴)이라고 불리기도 합니다. 마이크로 프로세서는 단순히 연산의 기능만을 가지고 있기 때문에 사용자가 원하는 프로그램을 저장할 곳 도 없고 프로그램을 실행하기 위한 RAM이나 데이터 입출력을 위한 별도의 I/O장치도 없습니다. 이러한 장치들을 마이크로 프로세서와 함께 하나의 칩에 구성한 아주 작은 규모의 시스템을 우리는 마이크로 컨트롤러, 마이크로 컴퓨터(마이컴)이라고 하죠!!!


 조금은 이해가 가시나요? 사실 세분화하자면 끝도 없이 분류할 수 있지만 중요한건 아니니 대충 이렇게만 알고 넘어가도 충분할 것 같습니다ㅋㅋ


 그렇다면 간단하게 마이크로 컨트롤러들의 종류에 대해 살펴봅시다.

마이크로 컨트롤러를 만드는 회사는 상당히 많지만 그 중에서도 Intel, ATMEL, Texas Instruments사가 널리 알려져 있겠네요!! 공부하기로한 ATMega128은 ATMEL사 제품이기 때문에 ATMEL 계열만 살짝 살펴보고 넘어갑시다.


1. AT TintyXX 계열 : 간단한 제어를 위해 사용되는 컨트롤러

2. AT megaXX 계열 : 고성능 제어를 위해 사용되는 컨트롤러

3. AT XmegaXX 계열 : 고성능 고속 정밀 제어를 위해 사용되는 컨트롤러


 사실 이외에도 AT90CAN128 처럼 다양한 목적을 위해 사용되는 계열의 컨트롤러가 있지만 너무너무 많기 때문에.... 스킵하고 넘어가죠ㅋㅋㅋ 우리가 사용하는 ATMega128은 거창하게 고성능 제어라고 하지만 뭐... 적당한 성능을 가진 컨트롤러구나~ 정도로만 생각하면 될 것 같아요.



마이컴의 구성요소


 마이컴을 이루고 있는 구성요소는 크게 1.CPU 2.주기억장치 3.입출력제어장치로 이루어져 있습니다. 그 외에도 다양한 페리퍼럴 장치들이 붙을 수 있지만 앞서 말한 3가지만 있으면 최소한의 기본적인 기능은 정상적으로 작동됩니다.

 CPU의 경우는 우리가 잘 알고 있듯이 명령어 처리나 연산기능을 수행하며 주기억장치에는 우리가 만든 프로그램이나 다양한 데이터들이 저장되어 있습니다. 입출력 장치는 프로그램이 필요로하는 입력과 그에 해당하는 출력 값을 받아들이고 표현합니다. 참고로 입출력장치는 일반적으로 마이컴에서 포트(Port)라고 합니다. 


 마이컴 프로그래밍을 하다보면 레지스터를 자주 다루게 되는데, 이 레지스터는 CPU 내부에 아주 작은 기억장치 입니다. 크게는 데이터를 임시로 저장하는 범용 레지스터와 CPU 수행을 위한 (컨택스트 스위칭과 같은) 특수목적용 레지스터가 있습니다. 어셈블리어를 하다보면 자주 접하게 되는 PC(Program Counter)나 SP(Stack Pointer), 플래그 등의 레지스터가 특수목적용 레지스터에 포함되죠.


 또한 임베디드 시스템을 다루게 되면 RAM과 ROM에 대해서도 자주 접하게 되는데 간단하게 우리가 작성한 프로그램은 결국 ROM(주로 Nand 또는 Nor Flash)에 저장되고 시스템이 부팅되면서 RAM에 올라가게 됩니다. 임베디드 시스템에서는 이러한 과정까지도 직접 제어할 수 있는데 이 부분은 나중에 천천히 살펴보도록 하겠습니다. 사실 지금은 저도 기억이 가물가물하네요ㅋㅋㅋ



'Embedded > AVR' 카테고리의 다른 글

1. AVR이란 무엇인가(1)?  (0) 2016.08.23
AVR Studio 4에서 .elf파일이 없다고 나올 때  (0) 2015.12.24
Posted by boxbop@gmail.com boxbop