승코딩당당당

[임베디드] 임베디드 소프트웨어 개발 기초 본문

개발/임베디드

[임베디드] 임베디드 소프트웨어 개발 기초

승코딩당당당 2026. 2. 3. 20:24

 

AVR

AVR이란?

  • 1996년 아트멜 사에서 개발된 하버드 구조를 가진 8비트 RISC 단일칩 마이크로컨트롤러이다.
    • 하버드 아키텍처: 명령용 버스와 데이터용 버스로 물리적으로 분할한 컴퓨터 아키텍처
      • 명령을 메모리로부터 읽는 것과 데이터를 메모리로부터 읽는 것이 동시에 가능
  • 출시 당시 AVR은 프로그램을 저장하기 위해 단일칩 플래시메모리를 사용한 최초의 마이크로컨트롤러 중 하나이다.
    • 당시 다른 마이크로 컨트롤러는 ROM, EPROM, EEPROM을 사용했다.

 

AVR의 종류 6가지

  • tinyAVR - ATtiny 시리즈
    • 0.5~8 kB 프로그램 메모리
    • 6~32핀 패키지
    • 제한된 주변 장치(peripheral) 세트
  • megaAVR - ATmega 시리즈
    • 8~256 kB 프로그램 메모리
    • 28~100핀 패키지
    • 확장된 명령어 집합 (곱셈 명령어, 큰 프로그램 메모리를 처리를 위한 명령어)
    • 확장된 주변 장치(peripheral) 세트
  • XMEGA - ATxmega 시리즈
    • 16~384 kB 프로그램 메모리
    • 44~64~100핀 패키지 (A4, A3, A1)
    • 확장된 성능 (DMA, "Event System", 암호와 지원)
    • 확장된 주변 장치(peripheral) 세트 (ADC)
  • Application-specific AVR
    • megaAVR을 기반으로 다른 AVR 계열에서 찾을 수 없는 LCD 제어, USB 제어, 진화된 PWM, CAN, 등의 모듈 추가
  • FPSLIC (AVR에 FPGA 추가)
    • FPGA 5K~40K 게이트
    • AVR 코어는 50 MHz 이상에서도 실행
  • 32-bit AVRs
    • 2006년에 Atmel은 32비트를 기반으로 AVR32 구조를 만들었다. SIMD과 DSP 명령어를 추가하여 오디오와 비디오 처리를 할 수 있다.
    • 32비트 계열은 ARM과 경쟁관계에 있다. 명령어 집합은 다른 RISC와 비슷하지만 원래 AVR이나 다양한 ARM 코어와 호환되지 않는다.

 

AVR의 특징 및 장단점

  • 하버드 아키텍처
    • 프로그램 메모리와 데이터 메모리가 분리되어 있다.
    • 명령어를 읽어오는 동시에 데이터를 읽어올수 있어 처리 효율이 좋다.
    • 다만 메모리 활용도는 낮다.
      • 프로그램 메모리가 비어있어도 데이터 메모리가 꽉차면 메모리 에러
  • 단일 클럭 사이클 명령어
    • MHz당 1MIPS의 성능을 낸다. = 빠르다.
    • 8051은 MHz당 1/4MIPS의 성능을 낸다. = 느리다.
    • 왜냐면 RISC 구조이기 때문
  • 풍부한 범용 레지스터
    • 8비트 MCU 치고는 이례적으로 레지스터가 32개나 있다.
    • 연산할때마다 RAM을 왔다 갔다 할 필요 없어 연산속도가 매우 빠르다.
    • PIC16의 경우 Working Register 1개 뿐이다. ← 1원, 10원 아끼고자함
  • 단일 전원 및 온칩 기능
    • 칩안에 ADC, TIMER, UART, I2C등 웬만한건 다있다.
    • 요새 대개의 칩들이 이렇게 나와서 크게 메리트는 없다.
  • 뛰어난 C언어 최적화
    • 애시당초 C언어와 같은 고수준 언어에 최적화되도록 만들어졌다.
    • 예전 MCU는 C보다 어셈이 훨씬 빨랐다.

 


 

HAL의 소개 및 필요성

  • HAL이란?
    • HAL = Hardware Abstraction Layer = 하드웨어 추상화 레이어
    • HAL은 하드웨어와, 운영체제의 소프트웨어 그 사이에 들어가는 추상계층을 의미한다.
    • HAL은 하드웨어의 차이를 숨겨서 응용 프로그램이 작동할 수 있는 일관된 플랫폼을 제공한다.