달력

112024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

제목에도 있듯이 아두이노와 라즈베리파이의 차이는 연산 처리하는 Process Uint의 차이며 이는 곧 능력의 차이이다.

능력의 차이는 사용하는 목적의 차이이고 사용하는 목적이 달라짐으로써 Peripheral(주변기기)가 달라지게 된다.

 

1. 탄생설화

Arduino

 

  • 2005년 이탈리아 Ivrea에서 초기 프로젝트로 시작
  • 2008년 10월 Arduino Duemilanove가 출시
  • 2009년 3월 Arduino Mega가 출시

 

아두이노는 오픈 소스를 기반으로 한 단일 보드 마이크로컨트롤러로 완성된 보드(상품)와 관련 개발 도구 및 환경을 말한다. 이탈리아 북부의 Ivrea라는 작은 도시에 IDII(Interaction Design Institutelvera)라는 디자인 전문학교가 있었다. 이 학교는 디자이너와 IT의 융합 교육을 표방하고 있었고 예술과 기술을 접목시키는 과정에서 공학에 문외한인 예술전공 학생들을 가르치는데 많은 어러움이 있었다. 2002년 프로그램을 설계하는 소프트웨어 아키텍트였던 마시모 반지가 IDII의 부교수로 오게 되고 반지 교수는 이 문제를 해결하기 위해 아주 기초적인 지식만으로도 쉽게 프로그래밈을 짤 수 있고 꼭 필요한 기능만 넣어 아주 값싸게 구입해 이용할 수 있는 마이크로컨트롤러 보드가 없을까 고민을 거듭한다.

2005년 수강생 한 명이 과제로 개발한 자그마한 회로 보드 하드웨어와 미국 MIT가 컴퓨터 그래픽 개발용으로 만든 프로세싱을 변용한 개발 소프트웨어를 결합해 '와이어링(Wiring)'이라는 시제품을 개발해 냈고 아두이노의 시작이었다.

처음에 AVR을 기반으로 만들어졌으며, 아트멜 AVR 계열의 보드가 현재 가장 많이 판매되고 있다. ARM 계열의 Cortex-M0(Arduino M0 Pro)과 Cortex-M3(Arduino Due)를 이용한 제품도 존재한다.

아두이노는 다수의 스위치나 센서로부터 값을 받아들여, LED나 모터와 같은 외부 전자 장치들을 통제함으로써 환경과 상호작용이 가능한 물건을 만들어 낼 수 있다. 임베디드 시스템 중의 하나로 쉽게 개발할 수 있는 환경을 이용하여, 장치를 제어할 수 있다.

아두이노 통합 개발 환경(IDE)을 제공하며, 소프트웨어 개발과 실행코드 업로드도 제공한다.

아두이노의 가장 큰 장점은 하드웨어에 익숙하지 않은 학생들이 자신들의 디자인 작품을 손쉽게 제어할 수 있게 하려고 만든 제품이었기에 마이크로컨트롤러를 쉽게 동작시킬 수 있다는 것이다. 아두이노는 컴파일된 펌웨어를 USB를 통해 쉽게 업로드 할 수 있다. 또한, 아두이노는 다른 모듈에 비해 비교적 저렴하고, 윈도를 비롯해 맥 OS X, 리눅스와 같은 여러 OS를 모두 지원한다. 아두이노 보드의 회로도가 CCL에 따라 공개되어 있으므로, 누구나 직접 보드를 만들고 수정할 수 있다.


RaspberryPi

라즈베리 파이는 영국 잉글랜드의 라즈베리 파이 재단이 학교와 개발도상국에서 기초 컴퓨터 과학의 교육을 증진시키기 위해 개발한 신용카드 크기의 싱글 보드 컴퓨터이다.

라즈베리 파이 재단은 데비안과 아치 리눅스 ARM 배포판의 다운로드를 제공하고 있지만 그 외에 우분투 등 리눅스 계열 OS 및 Windows 10 등 다양한 OS를 사용할 수 있다. 주요 프로그래밍 언어로 파이썬의 사용하기 때문에 파이라는 이름이 붙여졌다. 파이썬 외에 C/C++, 자바, 펄, 루비 등 다양한 언어를 사용할 수 있다.


라즈베리 파이는 그래픽 성능이 뛰어나면서도 가격이 저렴한 것이 특징이다.

라즈베리 파이는 모두 동일한 비디오코어 IV GPU와, 싱글코어 ARMv6에 호환되는 CPU 또는 신형의 ARMv7에 호환되는 쿼드코어(라즈베리 파이 2), 1 GB의 RAM(라즈베리 파이 2), 512 MB(라즈베리 파이 1B와 B+), 또는 256 MB(모델 A와 A+, 구형 모델 B)의 메모리를 포함한다. 이들은 SD 카드 슬롯 (모델 A와 B) 또는 부팅 가능한 매체와 지속적인 정보 저장을 위한 마이크로 SDHC를 갖추고 있다.

라즈베리 파이 2를 제외한 라즈베리 파이 모델들은 브로드컴의 BCM2835 단일 칩 시스템을 사용하며, 이 칩에는 ARM1176JZF-S 700 MHz 싱글코어 프로세서(일반 데스크톱은 보통 2500 MHz~3500 MHz), 비디오코어 IV VGA와 512 메가바이트 RAM이 들어 있다. 그리고 라즈베리 파이의 프로세서는 오버클럭시 최대 1000 MHz까지의 성능을 발휘할 수 있으며, 하드 디스크 드라이브나 솔리드 스테이트 드라이브를 내장하고 있지 않으며, SD 카드(B+,2B+ 모델은 Micro SD Card를 사용)를 외부 기억장치로 사용한다. 새로 출시한 2 모델 B는 ARM Cortex-A7 0.9 GHz 프로세서와 램 용량이 1GB로 성능이 업그레이드되어 출시되었다. 



2.  아두이노 vs 라즈베리파이

< 아두이노 주변장치 연결 : 출처 SlideShare >

 

< 라즈베리파이 주변장치 연결 : 출처 SlideShare >

 

< 라즈베리파이 활용사례 레트로 게임기 : 출처 SlideShare >

  • 아두이노는 OS의 구동없이 동작이 가능하며, 라즈베리파이는 OS가 있어야 동작이 가능하다.
  • 라즈베리파이는 운영체제가 설치되어 있기 때문에 운영체제 내에서 프로그래밍하여 Application이나 외부기기 제어까지 가능하다.
  • 아두이노는 개발언어가 C기반이지만 라즈베리파이는 여러 언어를 설치하여 사용할 수 있다.
  • 아두이노는 마이크로 컨트롤러로 GPIO로 주변장치인 외부기기를 직접 제어하는 강점이 있다.
  • 라즈베리파이는 트렌지스터를 이용하여 외부기기를 제어한다.
  • 라즈베리파이는 마이크로프로세서로 비디오 등 복잡한 수치 계산과 그래픽 처리, 데이터 처리에 적합하다.
  • 아두이노는 센서, LCD, 모터와 같은 주변기기 제어에 적합하다.

 

3. MCU와 CPU/MPU의 차이점

Embedded에서 사용하는 반도체 Chip에는 많은 종류가 있다. CPU는 알고 있는데 MCU와 MPU는 뭐지? MICOM은 SoC, DSP, FPGA, ASIC는 대체 뭐지?

 

SoC( System on Chip ) : 하나의 Chip안에 IC 제어, 연산장치, 저장장치, 입출력 장치 등이 싹 다 들어가 있는 Chip을 뜻한다. 보통 MCU와 MPU에 많이 있다.

 

CPU( Central Processing Unit ) : 가장 많이 들어본 이름, 산술, 논리 연산 유닛인 ALU와 명령어를 읽어오고 해석하여 제어하는 CU를 묶은 형태. 인텔, AMD, ARM의 cortex-A, 애플의 AP 등이 있다. 프로그램, 데이터, 입출력은 CPU에서 제어하지만 CPU 자체는 I/O, Memory를 가지고 있지는 않다. 즉 CPU 하나만 가지고는 아무것도 못한다. MainBoard가 있어야 한다. 

 

MPU( Micro Processing Unit ) : 쉽게 말해 CPU의 축소판!, CPU가 고속 대형 Chip이라면 MPU는 소형의 Chip을 의미한다. 역시 CU + ALU 형태이며 I/O, Memory가 없다. 특정한 기능만 수행하는 전자기기( Embedded )를 위해 사용한다.

 

MCU( Micro Controller Unit ) :  Controller라는 말은 MCU의 I/O를 사용하여 주변 장치들을 제어하기 때문에 붙은 말이다. 대표적인 SoC형태로 Chip안에 CU, ALU, I/O, Memory 모두 가지고 있다. 추가적인 로직 회로 없이 모든 것을 Chip하나로 할 수 있기 때문에 PCB의 부피를 줄일 수 있다. MICOM이라고도 부른다. 즉 Micom과 MCU는 동일한 말이다. 아두이노의 심장인 ATmel사의 ATMEGA가도 MICOM이다. MICOM은 특정 기능만 하는 Embedded 시스템에 많이 사용한다. MICOM의 종류는 CPU종류보다 많다.

 

Embedded : 임베디드는 특정목적을 가지고 전자장비에 내장된 프로그램 또는 시스템을 말한다. 기계나 기타 제어가 필요한 시스템에 대해, 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템으로 장치 내에 존재하는 전자 시스템이다. 즉, 임베디드 시스템은 전체 장치의 일부분으로 구성되며 제어가 필요한 시스템을 위한 두뇌 역할을 하는 특정 목적의 컴퓨터 시스템이다. PDA, 스마트폰도 Embedded 시스템이다.

 

GPU( Graphics Processing Unit ) : 그팩을 위한 CPU이다.  CPU는 정수연산은 최강이지만 그래픽을 그리기 위한 소수점 연산은 취약한 면이 있다. 그래픽 카드에 들어가는 그래픽 전문( 정확히 말해 소수점 계산 전문 ) CPU가 GPU이다.

 

DSP( Digital Signal Processor ) : DSP 의 주된 용도는 신호처리이다. TI사가 가장 유명하다. 아날로그 신호를 디지털로 고속 변환하여 계산, 사용하기 때문에 DSP라고 한다. 일반적으로 CPU, MPU, MCU들은 명령어의 해석 및 처리도 하고 계산도 하고 멀티플레이지만 DSP와 GPU는 오직 계산이 주목적이다. GPU는 소수점을 DSP는 아날로그 신호를 디지털 값 계산을 하는 것이 주목적이다.

 

FPGA( Field Programmable Gate Array ) : Chip상에 논리회로를 구성하여 자신이 원하는 기능을 회로로만드는 것이다. 물리적으로 회로도도 만들지 않고 Chip상에서 구현할 수 있다. C 프로그램하듯이 H/W를 프로그래밍할 수 있다. H/W에서 구현된 알고리즘은 실행 속도가 빠르므로 암호 알고리즘 또는 영상처리에 주로 쓰인다. Chip 벤더 회사에 따라 VHD, Verilog 언어가 있다.

 

ASIC( Application Specific Integrated Circuit ) : 특정한 기능, Application에 딱 맞춰 생산하는 주문자 반도체이다. 

 

F/W( Firmware ) : H/W와 S/W라는 말은 많이 들어봤어도 F/W라는 말은 생소할 수 있다. F/W는 임베디드 시스템들어가는 모든 S/W( H/W가 아니라 소스코드로 이루어진 )를 뜻하며 1968년에 생겨난 용어로 컴퓨팅과 공학 분야에서 특정 하드웨어 장치에 포함된 소프트웨이다. F/W를 읽어 실행하거나, 수정되는 것도 가능 하지만 일반 S/W와는 달리 ROM이나 EEPROM에 저장되며, 하드웨어보다는 교환하기가 쉽지만, 소프트웨어보다는 어렵다. F/W를 업데이트하는 일은 일반적으로 소켓 형태의 ROM, 펌웨어를 포함하는 기억 매체를 교체하거나 ROM Write라는 것을 사용하여 ROM에 직접 WRITING 한다. 보통 롬 라이트로 굽는다는 표현을 쓴다.

 

BSP( Board Support Package ) : BSP, Board Support Packge는 SoC 제조업체가 임베디드 시스템의 설계를 위해 또는 Board를 사용하기 제공하는 프로그램 모음으로 생각하면 된다. 쉽게 말해 BSP는 Chip회사에서 제공하는 SoC Chip이 내장(Embedded)되어 있는 보드를 구동시키는 프로그램이다. 운영체제를 로드하기 위한 최소한의 장치를 지원하고, 하드웨어 보드의 모든 장치를 위한 드라이버를 말한다. 몇몇의 공급자들은 루트 파일 시스템, 임베디드 시스템에서 실행하는 프로그램을 만들기 위한 툴체인( 컴파일 방법, makefile ) 그리고 장치들을 위한 configurator를 제공한다.

BSP는 일반적으로 Bootloader, OAL, Device Driver로 구성되어 있다.

  • Bootloader : 시스템의 하드웨어를 초기화하고 운영체제의 이미지를 RAM에 올려주는 역할을 하는 시스템 프로그램으로 하드웨어 의존성이 강하다.
  • OAL(OEM Adaption Layer) : HAL(Hardware Abstraction Layer : 컴퓨터의 H/W와 S/W 사이에 존재하는 추상화 계층 ) 아래에 위치하며, 하드웨어 초기화 및 관리를 지원한다.
  • Device Driver : 특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로 동작하는 프로그램으로, 각각 장치 드라이버가 프로그램 되어 커널에 통합되어 실행된다.

 

 

 

'karma( 업 ) > Embedded' 카테고리의 다른 글

납땜에 필요한 준비물  (1) 2020.04.29
SMT? SMD?  (2) 2020.04.24
전력제어 회로란?  (0) 2016.06.03
모터의 종류 - AC motor  (0) 2016.05.04
CPU의 기본구조  (0) 2016.04.22
Posted by 생짜
|