마이크로컨트롤러의 Program memory(Flash memory)와 Data memory(SRAM) 비교

Program memory(Flash memory)는 
비휘발성 메모리(Non-Volatile)이고, 

Data memory(SRAM)은 
휘발성 메모리(Volatile)입니다.

비휘발성 메모리(Non-Volatile)

전원이 입력되지 않아도 
데이터가 사라지지 않고 저장할 수 있는 메모리입니다.

주변에서 볼 수 있는 
SD 카드, SSD 메모리, HDD메모리, CD, DVD와 같은 
저장매체와 비슷하다고 생각할 수 있습니다.

마이크로컨트롤러에서는 Flash memory라고 부르며 
데이터를 저장할 수 있는 크기는 
수백 Bytes에서 수 MBytes까지 다양합니다.

일반적으로 마이크로컨트롤러의 핀수가 적거나 
기능이 적을수록 
Program memory(Flash memory)의 크기가 작고,
마이크로컨트롤러의 핀수가 크고 기능이 많을수록 Program memory(Flash memory)의 크기가 큽니다.

휘발성 메모리(Volatile)

전원이 입력되지 않으면 데이터가 사라집니다. 
통상 전원이 입력되었을 때 
초기 값은 Unknown상태입니다.

Unknown상태는 
SRAM의 각 비트값이 '1'이 될 수도 있고
'0'이 될 수 있음을 의미합니다.

따라서 전원이 입력되었을 때 
반드시 SRAM의 데이터를 초기화해야 합니다.

일반적으로 마이크로컨트롤러의 핀수가 적거나 
기능이 적을수록 Data memory(SRAM)의 크기가 작고,
마이크로컨트롤러의 핀수가 크고 기능이 많을수록 Data memory(SRAM)의 크기가 커지게 됩니다.


Data memory(SRAM)의 크기는 
Program memory(Flash memory)에 비하여 
약 1/10이하로 내장되는 경우가 대부분입니다.

단, 영상이나 이미지처리를 목적으로 만들어진 
마이크로컨트롤러는 
Data memory(SRAM)이 
Program memory(Flash memory)에 비하여 
크게 내장된 경우도 있습니다.

또는 영상이나 이미지를 저장하기 위해 
Data memory(SRAM)이외에 DDR메모리가 
별도로 내장하기도 합니다.

Posted by KennyShin
,
마이크로컨트롤러의 주변장치(Peripheral) 연결

        
주변장치(Peripheral)라고 부르는 
GPIO, ADC, Timer, EEPROM, SPI, I2C, UART 등등은 
CPU와 SRAM사이에 연결된 데이터 버스(Data Bus)에 
함께 연결되어 있습니다.

            즉, CPU와 SRAM사이가 8비트로 구성된 
8비트 마이크로컨트롤러일 경우 주변장치(Peripheral)도 
8비트로 연결되는 것을 의미하며, 
            공통으로 함께 연결되기 때문에 CPU에서 SRAM을 읽고 쓰는 동안에는 주변장치(Peripheral)에 접근하지 못합니다.

Posted by KennyShin
,

8비트/16비트/32비트 마이크로컨트롤러의 구분방법

            
마이크로컨트롤러에서 8비트, 16비트, 32비트를 구분하는 것은 
CPU와 SRAM사이에 연결된 데이터버스(Data Bus)크기입니다.

            즉, CPU에서 SRAM을 한번에 얼마나 
큰 데이터를 읽거나 쓸 수 있는가를 의미합니다.

            예를 들어 8비트 마이크로컨트롤러는 SRAM이 8비트(bit), 
16비트 마이크로컨트롤러는 SRAM이 16비트(bit), 
32비트 마이크로컨트롤러는 SRAM이 32비트(bit)단위로 
접근할 수 있습니다.

            레지스터(Register)라는 부분도 
8/16/32비트 마이크로컨트롤러에 따라 
각각 레지스터(Register)가 8/16/32비트로 구성됩니다.

            Flash Memory와 CPU사이는 
8비트 마이크로컨트롤러인 경우에도
 8비트로 구성되는 것이 아니라 
명령어를 나타내는 길이만큼으로 구성됩니다.

            예를들어 8비트 마이크로컨트롤러라도
 Flash memory와 CPU사이의 버스(Bus)는 
14비트 또는 16비트 등으로 구성됩니다.
    
8비트 마이크로컨트롤러
CPU와 SRAM사이에 연결된 데이터버스는 8개의 선으로 연결됩니다.

16비트 마이크로컨트롤러
CPU와 SRAM사이에 연결된 데이터버스는 16개의 선으로 연결됩니다.

32비트 마이크로컨트롤러
CPU와 SRAM사이에 연결된 데이터버스는 32개의 선으로 연결됩니다.

Posted by KennyShin
,
펌웨어(Firmware) 개발과정의 의미

마이크로컨트롤러를 이용하여 제품을 개발하는 과정을 요약하면 
"코드를 만들고 테스트하는 과정을 반복"하게 됩니다.

이 과정은 범용마이크로컨트롤러를 이용하여 
자신만의 전용마이크로컨트롤러를 만드는 과정입니다.

명령어나 논리연산자 그리고 수학적 연산을 수행하는 CPU, 
연산 결과값을 임시 저장하기 위한 SRAM, 
어떤 동작을 할지를 담고있는 FLASH 메모리가 있습니다.



또 이외에도 주변장치라고하는 
ADC, PWM, DAC, Timer, EEPROM 등등 
수많은 장치가 내부에 존재합니다. 

하나의 IC에 수많은 기능이 내장되어있어 
짧은 시간에 모든 기능을 습득하는 것이 어렵기도 합니다.

Posted by KennyShin
,
마이크로컨트롤러의 기본구성

마이크로컨트롤러는 크게 
Program memory(Flash memory), 
Core(CPU), 
Data memory(SRAM) 
3가지로 구분됩니다.


Program memory(Flash memory)

Program memory는 CPU가 어떤 동작을 할지에 대한 
프로그램 명령어를 저장하는 역할을 합니다.
Program memory의 크기는 CPU가 수행해야할 
명령어의 갯수를 의미합니다. 

해야할 동작이 복잡하거나 명령어를 많이 써야한다면 
Program memory의 크기가 큰
마이크로컨트롤러를 선택해야 합니다. 

Core(CPU)

Core(CPU)는 Program memory에서 
명령어를 가져와서 명령어를 수행합니다. 

명령어를 수행 후 만들어지는 
임시 데이터는 SRAM에 저장하게 됩니다.
사람에 비유하면 두뇌와 같은 역할을 합니다. 

Core(CPU)옆에 연결된 Oscillator는 Core(CPU)가 동작하기 위한 
엔진(Engine)과 같은 역할을 합니다.

Oscillator는 흔히 Clock이라고 하며 
Clock 주파수에 따라 Core(CPU)를 
얼마나 빠르게 동작하게 할지 결정할 수 있습니다.

Data memory(SRAM)

Data memory는 명령어가 수행된 후 
결과값을 저장하는데 사용됩니다.
예를 들어 temp = 3 + 5; 라는 명령가 실행되여 
8이라는 결과가 만들어지면 
그 결과값은 SRAM에 저장되게 됩니다. 

Posted by KennyShin
,
처음 마이크로컨트롤러를 시작할 때 필요한 것들

마이크로컨트롤러를 이용한 개발을 Firmware라고 합니다. 
네이버지식백과에서 Firmware를 아래와 같이 정의합니다.

            "펌웨어는 소프트웨어와 하드웨어의 중간에 해당하는 것이며 소프트웨어를 하드웨어화한 것이라고 할 수 있다." 
펌웨어(Firmware)란?
(출처 - 네이버 지식백과)


            "펌웨어가 소프트웨어와 하드웨어의 
중간에 있다는 것"은 
소프트웨어와 하드웨어에 대한 
지식이 모두 있어야하는 것을 의미합니다.

            단지 프로그래밍 언어에 대한 지식으로 
Firmware개발을 시작하면 깊이있는 개발을 하기 어렵습니다. 

그 이유는 프로그레밍 코드뿐만아니라, 
마이크로컨트롤러 주변에 연결된 
다른 디바이스(Device)나 저항(Resistor), 
캐패시터(Capacitor), 트렌지스터(Transistor) 등에 대한 이해도 
필요하기 때문입니다.

            또 "소프트웨어를 하드웨어화한 것"은 소프트웨어를 이용하여 
하드웨어를 설계하는 것을 의미합니다. 

            결국 펌웨어(Firmware)는 하드웨어를 설계하는 것입니다.

            따라서 펌웨어(Firmware)에는 
소프트웨어 엔지니어와 하드웨어 엔지니어를 
구분하여 부르기 어렵습니다. 

            펌웨어(Firmware) 엔지니어는 
소프트웨어 엔지니어이면서 하드웨어 엔지니어입니다. 
즉, 두 가지 모두 지식이 있어야만 합니다.


Posted by KennyShin
,

ARM Cortex Family에 대한 기본 이해


ARM Core라는 용어에 대해 임베디드를 하시는 분이면 많이 들어보셨을 것입니다. 그런데 ARM이 어떤 것의 약자인지 알고 계셨나요? 이번 글에서는 ARM이 의미하는 것이 무엇인지에 대해 알아보겠습니다.


ARM 로고

출처: 위키백과

먼저 Cortex Family는 다음 3가지로 분류합니다.


Cortex-A (Application)

Cortex-R (Real-time)

Cortex-M (MCU)


 위에 파란색으로 표시해 보았는데요. Cortex-A, Cortex-R, Cortex-M Family의 맨 뒤에 글자를 따서 ARM이라는 단어가 탄생했다고 합니다.

 각각의 Family는 위의 분류와 같이 'A'는 Application, 'B'는 Real-time, 'M'은 MCU를 위한 제품군입니다. 이제 ARM Core의 제품 분류만 보셔도 사용하고 있는 제품군이 어떠한 것을 Target 하여 만들어졌는지 한 번에 확인할 수 있겠죠?


조금 더 자세하게 알아볼까요?


Cortex-A (Application)

 리눅스(Linux)와 같은 OS(Operating System)사용이 가능한 제품군입니다. 이 제품군은 디바이스에 Flash memory나 RAM을 별도로 추가하여 사용하는 것이 일반적입니다. 주로 큰 시스템에 사용됩니다. 스마트폰과 같은 것을 만드는데 사용됩니다.


Cortex-R (Real-time)

 Cortex-R은 Cortex-A 와 비슷한 기능으로 사용되지만 Device 내부에 Flash memory나 RAM을 모두 내장하고 있습니다. Cortex-A보다 Flash memory와 RAM의 size를 사용자가 선택하여 설계하는 측면에서는 유연성이 떨어질 수 있지만 한 칩에서 모두 구현할 수 있다는 장점이 있습니다. 주로 하드디스크나 오토모티브 제품군 안에서 빠른 실시간 처리를 하는데 사용됩니다.


Cortex-M (MCU)

Cortex-M MCU 제품군입니다. Cortex-M은 여러 시리즈를 가지고 있습니다. 

M0나 M0+는 32비트 저가형 마이크로컨트롤러 애플리케이션 용도입니다.

M0+는 M0에 비하여 더 빠릅니다. 그리고 M0에 비하여 저전력으로 구동할 수 있습니다. M0 이후버전이라고 생각하셔도 됩니다.

M3는 HW divide와 연산을 위한 파이프라인이 더 추가됩니다.

M4는 floating point(FPU)와 디지털 시그널 프로세싱을 위한 DSP가 포함되어 있습니다.

M7은 멀티로 연산을 하기 위한 daul-precision FPU와 superscalar pipelining 기능을 가지고 있습니다.

Posted by KennyShin
,

무료 임베디드 교육

 

 

마이크로컨트롤러, 블루투스, WiFi, DCDC컨버터, USB 디바이스, 보안인증, 터치, 모터 등등의 무료기술교육을 찾고 계신가요?

 

한국마이크로칩에서는 기술교육을 무료

서울대구에서 진행하고 있습니다.

 

서울에서는 매주 2~3회의 무료교육이 있고,

대구에서는 한달에 1~2회 무료교육이 있습니다.

 

교육과정에 따라 4~8시간 진행되고,

필요시 실습도 포함됩니다.

 

교육비는 무료이지만,

사전 신청은 필수입니다.!!!

 

연간 교육일정 및 교육신청은 아래의 링크를 참조해 주세요.

http://www.microchipkorea.com/html/seminar/rtc.asp

 

 

교육장소

 

서울 (삼성역 7번출구)

 

 

대구 (동대구KTX역)

 

Posted by KennyShin
,