임베디드 강좌 6 부록 - 각종 메모리

임베디드 강좌 6 부록 - 각종 메모리

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]

 

안녕하세요. 고명호 입니다.

지난번에는 임베디드 MCU에 내장된 메모리의 종류및 용도에 관해서 알아보았습니다.

이번에는 임베디드 이외의 각종 전자기기에 쓰이는 메모리의 역사및 종류에 관해서 

알아 보겠습니다.

 

데스크탑에서는 다음과 같은 메모리 모듈이 사용됩니다. 메모리 여러개를 교체하기 

쉽도록 모듈로 구성한 것입니다.

 

 

(그림1 - 컴퓨터용 메모리 - 출처 wikipedia)

 

그렇지만 임베디드 메모리는 위의 램 하나하나를 각 부품형태 그대로 

판매하므로 칩형태로 판매됩니다.

ICBANQ의 메모리 카테고리를 살펴보면 다음과 같은 카테고리로 메모리가 분류되어 

있습니다.

(그림0 - icbanq 사이트의 메모리 카테고리)

 

다음은 컴퓨터에 사용되는 메모리를  종류를 나열한 표입니다.

https://ko.wikipedia.org/wiki/%EB%B0%98%EB%8F%84%EC%B2%B4_%EB%A9%94%EB%AA%A8%EB%A6%AC

메모리는 휘발성 메모리와, 비휘발성 메모리로 크게 나뉘어 지는데 각각 

RAM, ROM으로 불리웠었습니다.

 

대체적으로 RAM은 속도가 빠르며 그 수명이 반 영구적이고, ROM은 읽기 속도는 

RAM과 거의 비슷하지만 쓰기 속도가 느린 특징을 가지고 있습니다. 

그렇지만 현재는 RAM 이면서도 비휘발성인 메모리가 존재하며 (f-ram), ROM 이면서도 

쓰기 속도가 그다지 느리지 않은 메모리 (EEPROM Flash memory중 일부) 또한 

존재하기 때문에 휘발성 메모리, 비휘발성 메모리의 구분없이 그냥

ICBANQ 내부의 카테고리를 각각 설명드리겠습니다.

 

< DRAM >

휘발성 메모리의 대표적인 것이 dram 입니다. 

지난번에 설명드린 MCU에 사용된 휘발성 메모리는 sram 이었는데 어떤 차이가 있을까요?

DRAM 은 dynamic random access memory 의 약어이고, SRAM은 

static random access memory의 약어 입니다. dynamic vs static 의 차이네요..

둘다 전원을 차단하면 저장된 내용이 사라지는 공통점이 있습니다만 d-ram은 저장된 

내용을 유지하기 위해서 메모리를 끊임없이 계속적으로 액세스 해 줘야(dynamic) 하는 

반면에 s-ram은 저장된 내용을 유지하기 위해 외부에서 별도로 해 주어야 하는 작업이 

필요 없습니다. 

그렇다면 d-ram보다 s-ram이 항상 좋은것 같지만 그렇지는 않습니다. 

d-ram에 쓰이는 반도체는 다음회로처럼 1개의 capacitor와 1개의 TR이 필요합니다.

따라서 1 bit를 1cell 에 저장할 수 있으며 이때 capacitor 에 저장된 전하는 

시간이 지나면서 방전이 됩니다. 따라서 기록된 내용을 유지하기 위해서 

내부의 capacitor의 방전를 주기적으로 재 충전해 주는 refresh라는 작업이 필요합니다.

 

하지만 s-ram에 쓰이는 반도체는 다음회로에서처럼 6개의 TR이 필요합니다.

내부의 플립플롭에 1 비트가 저장이 되며 플립플롭은 외부 입력이 없이 저장된 비트를 

유지할 수 있습니다. 그렇지만 기록 밀도는 d-ram보다 낮습니다.

d-ram 은 외부에서 추가적인 회로가 필요하지만 같은 면적에 더 큰 용량을 만들수 

있으므로 일반적인 데스크탑 컴퓨터에서는 (더 큰 용량을 얻기 위해서) d-ram이 

많이 쓰입니다. 일부 속도가 필요한 경우에만 s-ram이 쓰이고 있습니다. 

물론 가격도 d-ram이 s-ram에 비해서 훨씬 저렴합니다.

 

그렇지만 MCU에서는 d-ram보다 s-ram이 주로 쓰입니다. (데스크탑 컴퓨터와 비교하여) 

MCU 자체의 크기가 작을 뿐만아니라 코드 프로그램의 크기도 작고, 

수행되는데 필요한 메모리의 용량도 크지 않기 때문에 사용하기 편리한 

s-ram 이 내장된 것입니다. 

 

램에 읽고 쓰는 작업은 MCU내부에서 일어나는 일이므로 외부에서 특별하게 부가해야 

하는 회로가 없기 때문에 MCU에서는 d-ram 보다 s-ram이 적합합니다.

 

d-ram은 데스크탑 컴퓨터의 발전과 더불어 발전을 하였습니다. 

위의 표에서 살펴본바와 같이 EDO DRAM, SDRAM, DDR SDRAM. DDR2 SDRAM. DDR3 SDRAM, DDR4 SDRAM 등이 있고,

 

각각은 EDO DRAM - Extended data out DRAMSDRAM - synchronous DRAMDDR SDRAM - double data rate synchronous dram 의 약어입니다. 

 

이 약어를 잘 유추해 보면 각각의 dram이 가진 특징을 알 수 있고, 그것이 각 램의 

특성이 되겠습니다.

edo dram의 경우 메모리에서 데이터가 출력되면서 다음데이터의 출력을 위한 어드레스 

입력을 받을수 있으므로 속도를 빠르게 할 수 있습니다. 

SDRAM 에서의 synchronous는 성능을 향상시키기 위해서 CPU의 클럭과 연동

(synchronoous)되어있다는 의미이고 DDR의 double data rate 라 함은 클럭과 연동되어 

있으며 전송 속도를 늘리기 위해서 클럭의 상승 및 하강 엣지에서 데이터가 입출력 되도록

한 d-ram 이므로 이론상 같은 클럭에서 sdram보다 2배의 성능향상이 있게 됩니다.

 

< EEPROM >

EEPROM은 Electrically Erasable Programmable Read-Only Memory의 약자로 전기적으로 지우고 새로 쓸수 있는 ROM 입니다.

지난 강좌에서도 설명드렸듯이 전원차단후에도 보존되어야 할 데이터를 

기록하는 용도의 메모리 입니다. 

 

EEPROM은 EPROM의 한 종류입니다. EPROM에는 EEPROM과 UVEEPROM이 있습니다.

 

< EPROM >

EPROM에는 OTP EPROM, EEPROM과 UVEEPROM이 있다고 설명드렸습니다.

예전의 ROM은 한번만 기록할 수 있거나 (OTP ROM) 기록된 내용을 지우려면 

자외선이 필요한 (UVEPROM) ROM 이었습니다.

OTP EPROM 은 one time eprom의 약어로 한번기록후에는 데이터를 지울수 없어 

딱 한번만 기록이 가능한 롬 입니다. 

마치 공씨디 처럼 1회 기록만 가능합니다.

또한 UVEPROM은 EPROM에 저장된 전하를 방전시키기 위해서 자외선을 사용합니다. 

메모리 반도체에 창문이 있는 반도체는 UVEPROM이 유일합니다.

불과 20여전 전에는 현재와 같은 EEPROM , FLASH memory가 상용화 되기 전이었기 

때문에 MCU의 코드 메모리에서도 UVEPROM이 쓰였습니다.  

즉 내용을 재 기입하기 위해서는 자외선 노출을 하고 이후에 재 기입을 해서 

새로운 프로그램을 구동시켰습니다. 

한눈에 봐도 딱 구별되는 외관입니다. 창문이 있는 MCU 반도체네요..^^

 

 

(그림 4 - PIC16C74)

 

그렇지만 EEPROM 및 FLASH memory 기술이 상용화 되면서 UVEPROM은 

현재는 별로 사용되지 않고 있습니다. 

단지 일부 구형 게임기의 롬 업그레이드를 위해서 필요할 뿐입니다. 

현재 생산은 중단되었으나 아직까지도 시중에서 구할 수는 있습니다.

http://www.icbanq.com/P000093113

엄청 비싸네요.. 하나에 오만원!!~ 

 

< FIFO >

FIFO는 first in first out 의 약자로 처음에 들어간 데이터가 처음에 나오는 반도체인데 

엄밀히 말하면 메모리의 종류는 아닙니다. 

UART 등의 데이터 버퍼로 사용되는데 이 카테고리에는 주로 SRAM 들이 있습니다.

 

< Flash Memory >

플래시 메모리는 2000년대부터 사용되기 시작된 비휘발성 반도체 입니다. 

비교적 저렴한 가격에 높은 기록 밀도를 가지고 있어서 현재의 메모리 반도체의 

주류이며 대용량 보조기억 저장매체로도 많이 쓰이고 있습니다.

워낙 종류가 많고 방대하기 때문에 다음에 다시 자세히 설명드리겠습니다.

 

아무튼 최근 임베디드 MCU의 내장 메모리는 거의 전부 Flash memory라 보심 됩니다.

임베디드 MCU등에서 EPROM이 사용된 모델은 대개 C(CMOS)의 약어를 쓰고 

Flash 기술을 사용한 반도체는 F(Flash)의 약어를 사용합니다. 

PIC16C72, PIC12F675 처럼 말이죠...

 

< FRAM >

FRAM (F-RAM) 은 Ferroelectric Random Access Memory 의 약자로 

d-ram의 단위 cell 에 사용되는 capacitor를 강 유전체 물질을 사용하여 

비휘발성을 가지도록 한 메모리로 비교적 최근에 개발되었으며 따라서 속도도 빠릅니다. 

물론 비교적 최근의 기술이라서 메모리당 가격도 비싸네요..

 

< NVRAM >

NVRAM 은 NVSRAM의 다른 말입니다. non-volatile static random-access memory의 

약어로 실제로는 s-ram 이지만 s-ram의 외부에 몇가지 부가 회로를 추가하여 

전원이 차단 되어도 기록된것이 유지되도록 하게 한 반도체 입니다.

따라서 s-ram과 동일한 동작속도를 가지며 데이터는 10년간 보존을 보증한다고 하네요..

이정도면 non volatile이라 불릴만 합니다.

 

반도체 칩의 내부에 S-ram과 EEPROM이 존재하네요.~ 따라서 전원이 차단되면 

s-ram의 내용을 EEPROM으로 옮겨 보존하고 전원이 들어오면 EEPROM의 내용을 다시 

s-ram으로 옮겨 옵니다. 뭔가 CPU나 MCU가 해야 할 일을 대신해 주는 편리한 ram 이네요

 

(그림 5) 

출처 http://www.cotsjournalonline.com/articles/print_article/100709


< SRAM >

S-RAM은 위에서 D-RAM을 설명드릴때 같이 설명드렸으므로 다시 설명드리지는 

않겠습니다.. 임베디드 MCU의 내부 레지스터나 내부 메모리로 많이 사용되며 

특수한 경우에(캐시 메모리) 데스크탑의 메인 메모리로도 사용됩니다.

 

< ROM >

위에서 ICBANQ 의 반도체 메모리 카테고리를 설명드리면서 비휘발성 메모리인 

ROM 종류도 포함하여 설명드렸으므로 다시 설명드리지는 않겠습니다.

 

메모리 반도체는 RAM, ROM의 구분외에도 액세스 방법에 따라 시리얼 메모리와 패러렐

메모리, I2C형, SPI형 등등이 있고, 전압, 속도에 따라서도 다양한 모델이 존재합니다.

따라서 최소한의 배선으로 최적의 메모리를 선택하기 위해서는

 

여러가지 요구사항들을 다 고려 해 보는것이 좋겠습니다.

devicemart 사이트에는 ICBANQ 사이트보다 카테고리별로 잘 세분화가 되어있으므로 

한번 참고해 보시면 좋을 것 같습니다.

http://www.devicemart.co.kr/goods/list.php?category=001021004

이번에는 임베디드 MCU의 외장 메모리 종류에 대해서 

간략히 알아 보았습니다.

메모리에대한 간략한 이해가 되셨는지요?

 

그럼 이번 강좌를 마치도록 하겠습니다. 

감사합니다~~

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]


신고

임베디드 기초강좌 6 - MCU 의 내장 메모리

임베디드 기초강좌 6 - MCU 의 내장 메모리 

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]

 

안녕하세요. 고명호 입니다.

지난번에는 모든 전자기기의 필수적인 요소인 클럭에 관해서 알아 보았습니다.

이번 강좌에서는 임베디드에 사용되는 각종 메모리 혹은 내장 메모리의 종류및 

사용법을 알아보고 부록 강좌에서는 일반적인 메모리의 역사및 종류에 대해서 

알아보겠습니다.

 

임베디드에 사용되는 각종 메모리는 크게 두종류로 나뉩니다.

첫번째로 전원을 차단하면 그 내용이 지워지는 램(RAM - random access memory)과 

전원이 차단 되어도 지워지지 않는 롬(ROM - read only memory)이 

바로 그 두 종류 입니다.

 

임베디드 MCU에는 램과 롬을 동시에 내장하여 추가로 부가적인 램과 롬을 

MCU의 외부에 장착하지 않고도 원하는 프로그램을 실행 시킬수 있는 장점이 있습니다. 

그렇지만 램과 롬의 용량이 부족해 지는 경우에는 어떻게 하면 될까요?

첫번째로 MCU의 외부에 메모리를 추가로 장착하면 됩니다. 

 

그렇게 하면 메모리를 액세스 하기위해서  I/O 핀이 추가로 필요해 지게 됩니다.

(제어와 데이터의 이동에 사용되는 핀이 필요하기 때문입니다.)

 

두번째로 더 간단한 방법인데요. 

스펙문서를 살펴 보시면 같은 종류의 MCU라 하더라도 램과 롬의 용량이 각각 다른 

MCU가 존재 합니다. 이러한 경우에는 좀더 상위의 MCU를 사용하여 프로그래밍을 

하면 됩니다.

 

MCU 제조회사에서는 대개 같은 패밀리의 MCU중 메모리의 용량만 다른 경우에 

똑같은 스펙문서를 공유합니다. 

따라서 같은 스펙 문서를 보고 좀더 상위의 MCU를 사용하시면 됩니다. 

이러한 상위의 MCU도 없다면 비슷한 패밀리의 MCU를 대치하여 사용하면 됩니다. 

이때 각 핀들이 MCU마다 각각 다를수 있으므로 스펙문서를 보고 핀의 위치를 변경하는

추가적인 작업이 필요할 수도 있습니다.

 

예를 들어 보겠습니다.

다음사이트의 스펙 문서를 참고해 주세요

http://www.atmel.com/images/doc8161.pdf

atmel AVR 시리즈의 스펙 문서 입니다.

하나의 스펙 문서에 4종류의 MCU를 기술하고 있습니다.

 


(그림1)

 

스펙문서에는 각각의 MCU는 서로 핀 호환이 되며 3종류의 내장 메모리 크기만이 

다른것을 알 수 있습니다.

 


(그림2 - 스펙문서에 기술한 4종류의 MCU의 핀아웃은 동일합니다.) 

 

 

이 경우에 프로그래밍은 가장 작은 용량의 MCU로 시작해서 점차 기능이 추가되는경우 

상위의 칩을 사용하면 원본 프로그램을 거의 수정하지 않고도 원하는 기능을 

추가 할 수 있는 장점이 있습니다.

(완전히 수정할 필요가 없는것은 아닙니다.  스택포인터 조정을 위해서 한두개의 

명령어는 수정할 필요가 있습니다. 그렇지만 아두이노의 경우에는 부트로더에서 

이러한 일을 수행해 주므로 아두이노의 코드는 거의 수정없이 사용할 수 있습니다.)

 

자 그럼 이번에는 핀조정이나 기판 레이아웃이 달라지는 경우의 예를 살펴 보겠습니다

다음 주소를 참조해 주세요.

http://ww1.microchip.com/downloads/en/devicedoc/39632c.pdf

마이크로칩의 PIC18F2550으로 프로그램을 작성했다고 가정해 보겠습니다.

 

 

(그림 3)

 

PIC18F2550과 PIC18F4550은 내부 메모리의 크기가 다르지만 

또한 핀아웃도 다릅니다. 핀의 갯수가 다르네요..

(그림 4) 

 

대개 상위칩은 하위칩의 모든 기능을 가지고 있는 경우가 많습니다. 

따라서 18F2550으로 회로를 설계 하였다면 이경우에는 좀더 큰 용량의 칩으로 

바꾸면서 추가적으로 회로의 변경이 필요해 집니다.

 

위의 경우만 비교해 본다면 AVR시리즈가 좀더 migration이 편리한 듯 보입니다만, 

각 칩 제조사의 제품군이 매우 다양하기 때문에 어떤경우에는 MICROCHIP의 

제품의 micration이 더 편리한 경우도 있습니다.

 

하나하나 따져보고 추후 코드의 추가가 될 수 있는지 여부를 확인해 보아야 하겠습니다.

 

위의 두 스펙문서를 보시면 

High Endurance Non-volatile Memory Segments

– 4/8/16/32K Bytes of In-System Self-Programmable Flash progam memory

(ATmega48PA/88PA/168PA/328P)

– 256/512/512/1K Bytes EEPROM (ATmega48PA/88PA/168PA/328P)

– 512/1K/1K/2K Bytes Internal SRAM (ATmega48PA/88PA/168PA/328P)

– Write/Erase Cycles: 10,000 Flash/100,000 EEPROM

 

이런 글귀하고 

Program Memory Data Memory

Flash(bytes), # Single-Word Instructions

SRAM(bytes), EEPROM(bytes)

 

이런 문장이 있습니다. 

뭔가 메모리의 종류가 3종류가 되는것 같습니다.

공통적인 부분만을 뽑아내 보면 Flash programming memory, SRAM, EEPROM 

이렇게 3종류의 메모리가 내장되어 있다는 것을 알 수 있습니다.

 

자 그럼 왜 이렇게 다양한 종류의 메모리가 한꺼번에 내장되어 있을까요? 

그것은 각 종류의 메모리가 하는 역할이 각각 다르기 때문입니다.

 

맨 처음에 메모리는 크게 2종류로 나뉘어 진다고 말씀 드렸습니다. 램 혹은 롬 

위의 3종류의 메모리는 SRAM 은 램 종류이고, 

Flash programming memory, EEPROM 은 롬 종류입니다.

 

먼저 프로그램이 저장될 코드 메모리가 필요합니다. 

코드 메모리는 MCU의 전원이 꺼지더라도 지워지지 않아야 하기 때문에 

롬에 저장되며 FLASH라는 종류의 롬에 저장 됩니다.

그리고 또한 프로그램이 실행되는 중에 필요한 각종 정보를 저장하는데에도 메모리가 

필요할 것입니다. 이러한 메모리는 프로그램이 수행중에만 필요하므로 전원이 차단된 

경우 그 내용을 유지할 필요가 없습니다. 

이런 경우에는 램이 필요하고 MCU에는 SRAM이라는 종류의 램이 사용되었다는 

의미입니다.

 

그리고 마지막으로 프로그램이 수행중에 필요하기는 하지만 전원이 꺼진경우에도 

그 값을 저장할 필요가 있는경우에는 어떻게 해야 할까요?

예를 들자면 모니터의 밝기 정보같은 경우 

(매번 모니터를 켜자마자 밝기를 다시 조정하고 쓰는 분들은 없을 것입니다.)

이렇게 전원이 차단된 경우에도 정보를 가지고 있을 필요가 있는경우에는 

그 정보를 EEPROM에 저장을 합니다.

 

이렇게 3종류의 메모리가 1개의 MCU에 사용된 이유는 각 종류의 메모리의 액세스 속도가 다르고 쓰기 가능 횟수가 차이가 있기 때문에 그러합니다.

 

Flash programming memory, EEPROM 의 경우 각각 10,000 회 100,000 회의 기록을 

보장합니다. 즉 그 이상은 기록할 수 없는 것입니다. 내장 프로그램의 경우에는 최초 1번

기록이 되면 대개 (디버깅을 행하는 경우를 제외하고) 바꿀 필요가 없기 때문에 

10,000 회의 경우에도 넉넉합니다.

 

또한 EEPROM의 경우에도 100,000 회라면 MCU의 수명이 다하는 날까지 쓰더라도 

(하루에 100번 기록한다 하더라도 1000 일입니다.)

 

이것도 각 cell당 숫자이므로 모든 cell을 100,000회 이상 기록해서 쓰는 경우는 

많지 않을 것입니다.

 

- 모니터의 밝기를 하루에 100 번씩 바꾼다면 1000 일 후에는 모니터의 밝기 정보가 저장 되지 않겠네요.^ ^ -

그렇지만 매번 바뀌는 종류의 정보들 - 예를 들자면 모니터에서 표시되는 내용을 담고 

있는 메모리들 - 은 하루에도 수십만번 이상 그 내용이 바뀔 것입니다. 

이러한 정보들은 SRAM에 저장을 하며 모니터의 전원이 차단된후 다시 전원이 들어오면 

내부 프로그램에 의해서 다시 초기의 값들로 돌아오게 됩니다.

 

자 그럼 요약 하겠습니다.

 

 embedded MCU 의경우 대개 3종류의 메모리가 내장되어 있으며 

코드 프로그램의 메모리가 더 필요한 경우 FLASH memory 가 큰 것을 선택한다.

내장 프로그램의 실행시 임시 메모리가 부족한 경우 SRAM이 더 큰것을 선택한다.

내장 프로그램의 실행시 전원이 꺼져도 유지해야 하는 데이터가 더 필요한 경우 

EEPROM 이 더 큰것을 선택한다.

 

입니다. 

 

그렇지만 제조사는 아예 3종류의 메모리 전부가 더 큰 모델을 생산하므로 아무거나 

메모리가 부족하면 상위 모델로 대치하면 됩니다.

 

MCU의 내장 메모리에 대해서 약간의 감이 잡히셨나요.

 

이번시간에는 MCU의 메모리에 대해서 알아 봤습니다.

다음에는 일반적인 메모리의 종류가 어떤것이 있는지 알아 보겠습니다.

감사합니다.~~

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]

신고

눈길 끄는 이색 RENT 제품: 드론/3D프린터도 빌려 써보고 구매

[출처] 중앙시사매거진 http://jmagazine.joins.com/economist/view/308582

 

삼성전자 태블릿 ‘갤럭시탭’은 5일에 2만8000원, LG전자 노트북 ‘울트라북’은 3일에 4만원, 캐논 카메라 ‘EOS’는 1일에 3만원…. 국내 한 렌털 전문 업체가 홈페이지를 통해 올린 렌털 제품 시세다. 갤럭시탭을 닷새간 쓰려면 2만8000원만 내면 된다는 얘기다. 이런 제품들의 수요는 최근 급격히 늘면서 렌털 시장 자체가 급성장하는 데 큰 영향을 미쳤다. 여기에서 그치지 않는다. “이런 제품도 빌릴 수 있나 싶어 찾아봤는데 정말 없는 게 없었어요. 친구 결혼식 때 빌려 요긴하게 쓸 수 있었습니다.” 직장인 김우현(34)씨의 말이다. 김씨는 최근 한 가지 이색 제품을 대여해 하나뿐인 친구의 결혼식을 한층 뜻 깊게 만들었다.

그가 빌린 제품은 요즘 시중에서 인기리에 팔리고 있는 촬영용 무인 비행기 드론(Drone)이었다. 김씨는 “가장 친한 친구의 결혼을 앞두고 술자리에서 ‘드론을 띄워 결혼식 장면을 상공에서 찍어보면 어떨까’라고 제안했는데 내 경우도 그랬지만 주변에도 드론을 가진 친구가 없었다”며 “고성능 제품으로 구매를 하자니 너무 비싼데, 다시 쓸 일은 없을 것 같아 구매 대신 렌털이 가능한지 알아봤다”고 말했다. 이후 김씨는 인터넷에서 한 업체를 통해 1박 2일간 3만원을 주고 드론을 빌릴 수 있었다. 친구 결혼식 전날 ‘맹훈련’을 한 결과 결혼식 당일에도 무사히 드론을 띄워 친구와 친구 가족으로부터 감사 인사를 받았다.

드론처럼 신기술이 집약된 제품의 경우 소비자가 관심을 가져도 막상 구매를 결정하기까지는 고민이 깊어질 수밖에 없다. 저가형 제품도 나오지만 웬만하면 기능이 우수하고 오래 쓸 수 있는 제품을 사야 하는데 그러려면 돈이 많이 든다. 그런데 내게 정말 맞는 제품인지 미리 알 방법이 없다. 이런 경우 렌털은 구매보다 효과적인 소비 방법이 된다. “충동구매했다가 후회한 적이 한두 번이 아니라 고민 끝에 사지 않고 빌렸습니다. 빌려서 며칠 써보니 이건 꼭 사야겠다 싶어 사게 됐죠.” 3D프린터 동호회에서 활발히 활동 중인 박현성(37)씨의 이야기다. 어떤 제품을 구매할 때 생기기 쉬운 시행착오를 렌털이 막아준다는 것이다. 박 씨는 3D프린터를 뉴스로 접할 때마다 관심을 갖고 있다가 렌털을 통해 처음 3D프린터의 무궁무진한 세계에 입문했다.

 

충동구매의 시행착오 방지

 

과거에는 자동차(렌터카)나 정수기, 비데 정도가 렌털 제품의 전부로 여겨졌지만 이제는 아니다. 이들 제품이 렌털 시장의 ‘전부’가 아닌 ‘일부’가 돼가고 있다. 드론이나 3D프린터의 경우처럼 다양한 이색 제품들이 렌털 시장에 속속 선을 보이고 있어서다. 이제는 이색 제품이라 칭하기도 민망한 매트리스가 최근 한층 인기를 모으고 있는 대표적인 렌털 제품이다. 천연 라텍스 소재의 매트리스는 제품 크기에 따라 월 1만~3만원대 정도에 대여할 수 있다. 1인 가구 증가로 그 수요가 더욱 늘었다. 관련 업계에 따르면 매트리스 렌털 시장은 약 5000억원 규모 국내 침대 시장의 10% 이상을 차지할 만큼 비중이 커졌다. 자전거나 킥보드, ‘키덜트’ 소비자들을 위한 장난감도 최근 인기를 모으는 이색 렌털 제품이다. 주부들이 좋아할 만한 탄산수 제조기와 도정기, 연수기, 음식물 처리기, 전기레인지, 커피정수기 등도 있다. 관련 업계에 따르면 올 10월 현재 국내에 등록된 렌털 업체 수만 2만 곳이 넘는다. 그만큼 다양한 제품이 취급된다.

이색적인 고가 제품일수록 렌털 시장에서 잘나간다. 드론이나 3D프린터보다도 비싼 수백만원짜리 고가 안마의자도 월 5만원가량이면 빌릴 수 있어서 경제적이다. 경기도 일산에 사는 주부 장현주(53)씨는 한 렌털 업체를 통해 3개월째 안마의자를 빌려 사용 중이다. “올 초 교통사고를 당한 이후 근육통으로 고생하는데 안마의자를 써보면 어떨까 싶었어요. 구입하자니 워낙에 고가라 엄두가 안 났는데 렌털을 했더니 비용 부담이 크지 않아 좋아요.” 장씨는 안마의자의 성능엔 만족하지만 렌털 기간이 끝나도 구입할 생각은 없다. 사고 후유증을 달래기 위해 일시적으로만 쓰는 제품이기 때문이다. 이런 경우에도 렌털은 일반 구매보다 합리적인 소비 형태가 된다.

틈새시장을 잘 노린 이색 제품도 눈에 띈다. 국내 한 기업이 렌털 형태로 공급하고 있는 피톤치드 삼림욕기는 국내산 편백나무 천연 피톤치드리필액을 통해 집안에서 탈취와 살균이 가능하도록 한다. 이 업체는 강아지와 고양이 등 반려동물을 키우는 가정이 늘면서 반려동물의 악취로 고민하는 경우도 늘었다는 점에 착안, 제품을 적극 홍보하고 있다. 업체 관계자는 “부패성 악취는 가스입자를 계속 만들어내기 때문에 집에 들어서기만 해도 냄새가 심하게 나는 경우가 많다”며 “강한 향만으로 냄새를 잡으려 해 근본적 악취 제거는 못하는 일반 탈취제와 다르게 간편하게 부패성 악취를 잡아낼 수 있다는 점을 어필하고 있다”고 설명했다.

꽃 시장에 주목한 기업도 있다. 기존 생화나 조화의 장점만 따서 고안한 드라이플라워 등을 대여해준다. 프러포즈 등 이벤트를 앞둔 소비자들이 많이 찾는다. 올 여름 딸의 돌잔치 때 드라이플라워를 빌렸던 직장인 이재현(36)씨는 “보통 돌잔치 때 아이 입힐 옷만 빌릴 수 있는 줄 알았는데 잔치 장소를 장식할 꽃도 빌릴 수 있다는 걸 알고 빌렸더니 분위기가 확 살아났다”며 “예식장 등 특별한 날 꽃을 장식하는 비용으로 거금을 요구하는 업체들이 많은데 꽃만 따로 빌려 간소하게 잔치를 여는 것도 좋은 것 같다”고 전했다.

 

 

 

수천만원대 고가 장비도 대여 가능

그런가 하면 일반 소비자가 아닌 창업자들을 고객층으로 둔 렌털 제품도 각광받고 있다. 창업에 필요한 각종 제품을 대여해주는 것으로, 창업 초기 비용 부담에 민감한 창업자들의 호응을 얻고 있다. 제품에 따라 다르지만 보통 월 수만원대면 대여는 물론이고 애프터서비스(AS)까지 무상으로 받을 수 있다. 이런 창업 지원형 렌털 제품에는 청소 용역 업종에서 창업을 했다면 반드시 구비해야 하는 산업용 청소장비, 안경점을 연 안경사라면 필수로 갖춰야 하나 보통은 수천만원을 호가할 만큼 비용 부담이 만만찮은 검안기 등이 있다. 이들 장비를 대여해주는 업체들은 장비 상담에서부터 판매와 유지 보수까지 원스톱으로 서비스를 제공한다. 창업자들로서는 과거라면 자기 회사의 대차대조표상에 자산으로 포함시켜야 했을 장비들을 지금은 대여하면서 비용 처리를 할 수 있어 마다할 이유가 없다. 기업은 법인세를, 개인사업자는 소득세를 아낄 수 있다.

신고

LG전자, 세계최초 4단 접이식 블루투스 키보드 '롤리' 출시

출처: 동아일보 http://it.donga.com/22679/

 

LG전자(www.lge.co.kr)가 19일 세계최초 4단 접이식 블루투스 키보드인 '롤리키보드(Rolly Keyboard)'를 국내 출시한다. LG전자는 이 제품을 온라인 쇼핑몰을 통해 판매하고, 향후 베스트샵 등 오프라인으로 판매 채널을 확대할 계획이다.

지난 9월 독일에서 열린 IFA 2015(베를린 국제가전박람회)에서 공개된 롤리 키보드는 사용편의성과 휴대성을 모두 갖춘 블루투스 키보드로 호평을 받았다. 일반 노트북 키보드 정도의 크기(263×103.7×14.8mm)지만, 두루마리 말듯이 4단으로 접으면 2.5cm 두께의 막대 형태가 돼 휴대하기 좋다.

 

 

 

 

또한 사용자가 간단히 펴고 접는 동작만으로 전원을 자동으로 켜거나 끌 수 있으며, 스마트폰, 태블릿PC 등 2개 기기까지 블루투스로 동시에 연결할 수 있다. 키보드 앞쪽에는 최대 10인치 태블릿PC를 거치할 수 있는 접이식 거치대를 내장해 스마트폰, 태블릿PC 등에서 장문 타이핑도 크게 불편하지 않다. 롤리 키보드는 AAA 건전지 하나로도 하루 평균 4시간 사용했을 때 약 3개월이상 사용 가능하다. 구글 안드로이드, 애플 iOS, MS 윈도우 운영체제를 탑재한 모든 스마트폰, 태블릿PC 등과 호환된다. 

롤리 키보드는 KES 2015(한국전자산업대전)에서도 제품의 창의성과 혁신성을 인정받아 '이노베이션 어워즈'를 비롯해, 일본 최고 권위의 '굿디자인 상'도 수상했다.

LG전자 한국HE마케팅FD담당 허재철 상무는 "탁월한 휴대성과 편의성을 갖춘 롤리 키보드로 블루투스 키보드 시장을 공략할 것"이라고 강조했다. 가격은 12만 9,000원이다.

 

 

 

신고

시중 3D프린터보다 6배 빠른 READYBOX [레디박스]가 나타났다!

안녕하세요, 아이씨뱅큐 입니다!

 

 

오늘 전해 드릴 소식은 현재 KICKSTARTER에서 진행 중인 3D프린터 제품인데요, 시중에서 판매 중인 3D프린터보다 무려 6배 빠르다고 자랑하는 READYBOX 입니다. 많은 소비자들이 3D프린터를 집에서 이용하는 날을 바란다는 READYBOX는 소비자용 프린터가 산업용 프린터 만큼 빠르고 안정적이여야 한다고 생각했다고 합니다.

 

 

 

 

 

 

그렇다면 READYBOX의 특징은?

 

 

현재 3D프린터 마켓에서 소비자용 프린터로 유명한 제품들보다 6배 빠름!!

크로깅 문제 해결을 위해 고압 extruder로 설계!

프린터 출력 전 매번 오토 calibration 과 cleaning

- 높은 정확도를 자랑하는 calibration probe

- 기타 접착제 필요 X

- Heated build plate

- 제품이 빌드되는 플레이트 넓이가 13" x 13" x 13"

SD카드가 지원되는 FULL LCD 스크린   

32비트 ARM 컨트롤보드  

 

 

 

 

 

 

 

 

현재 진행되고 있는 킥스타터의 이 프로젝트는 11월 4일에 마감된다고 합니다. 벌써 목표달성한 건 함정! 디테일이 살아있는 READYBOX의 3D프린터, 한번 만나보세요오

 

 

 

 

https://www.kickstarter.com/projects/brettpotter/readybox-fastest-consumer-3d-printer?ref=nav_search

 

 

 

 

 

 

 

 

 

 

 

 

신고

3D 프린터로 뭘 만들까...인기 아이템 톱5

3D프린터, 요즘 많은 곳에서 찾으시고 활용하고 계시죠??

그럼 사람들이 무슨 아이템을 가장 많이 제작하는데에 3d프린터를 쓰고있을까요?

여러분들은 이 중에서 써보신 아이템이 있으신지....

 

3D프린터로 만드는 인기아이템 TOP5 제품을 확인해 보세요!

 

출처: https://www.youtube.com/watch?v=23c4IPgHpWQ

 

신고

임베디드 기초 강좌 5 부록 - 여러종류의 clock source

임베디드 기초 강좌 5 부록 - 여러종류의 clock source

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]

 

안녕하세요. 고명호 입니다 

 

 

글의 내용은 http://blog.naver.com/jimypage 에서도 확인하실수 있습니다.

 

 

지난번에는 임베디드 MPU를 다루는데 있어서 심장부가 되는 클럭에 대해서 알아보았습니다.

 

이번에는 임베디드 기기에서 클럭 소스로 사용될 수 있는 회로나 부품은 어떤것이 

 

있는지 알아보고 각각의 장단점을 살펴 보도록 하겠습니다.

 

될수있으면 고 정밀도의 고성능 부품을 사용하면 좋겠으나 각각 비용과 효율성 측면이 있으므로

 

여러가지를 다 알고 있다면 선택에 도움이 되리라 생각해서 글을 써 보았습니다.

 

 

 

 

클럭소스는 임베디드 보드에서의 프로그램이 일정한 시간으로 수행되는데 

 

필요한 클럭을 제공하는 발진 회로를 의미합니다.

 

CPU, MPU가 등장하면서 프로그램을 순차적으로 수행하는데 클럭은 필수적인 요소가 되었지만

 

임베디드 프로그래밍 또는 컴퓨터의 사용전에도 발진회로는 많은곳에서 쓰였습니다.

 

그중 대표적인것이 라디오 전파의 송 수신용도였습니다. 반송파를 만드는데 발진회로가 필요하기 

 

때문이었습니다.

 

 

 

 

최초의 발진소자는 수동소자의 성질에 의해서 발명이 되었습니다.

 

저항, 커패시터, 인덕터등의 수동소자들중 저항을 제외한 두 소자는 

 

각각 전압의 변화에 대해서 저항이 커지는 성질과 저항이 작아지는 성질을 가지고 

 

있습니다. 이러한 커패시터와 인덕터를 병렬로 배치한 후 전원이 차단되면 커패시터에서 

 

충전된 전하는 인덕터를 거치면서 자기장을 형성하여 유도 기전력을 만들고 

 

커패시터의 방전이 이루어진 경우 유도 기전력은 다시 커패시터를 충전시키는 현상을 

 

반복함으로써 발진을 하게 됩니다.

 

https://en.wikipedia.org/wiki/LC_circuit

 

 

 



 

 

이러한 현상을 이용하여 몇몇 발진기들이 발명되었는데 수동소자의 경우 에너지의 소모를 

 

보충할 방법이 없기 때문에 중간에 능동소자인 트랜지스터를 추가하여 계속적으로 발진하는

 

발진기를 만들 수 있었습니다. 

 

콜피츠 발진기, 클랩 발진기, 하틀리 발진기 등이 이러한 종류의 발진기에 속합니다.

 

 

 

 

 

 

 

 

http://www.wizmac.com/2015/lecture/board01_view.htm?No=4&Sub_No=8

 

(위의 사이트에서 그림을 가져왔습니다)

 

 

또한 멀티 바이브레이터 회로를 이용하여 발진을 시킬수도 있습니다.  이것은

 

두개의 트랜지스터가 각각 성질이 다르다는 점에 착안하여 각각의 트랜지스터가 

 

점멸을 반복하여 발진을 하게 됩니다.

 

 

 

 

 

 

 

http://efxkits.com/blog/multivibrators-types-and-thier-working/

 

 

그렇지만 수동소자를 사용하는 위의 발진기들의 경우에는 수동소자의 성질이나 온도등의 

 

변화에 민감해서 그 정밀도가 매우 떨어지는 단점이 있었습니다.

 

초기의 발진기는 라디오등의 방송에 사용되었는데 라디오 방송의 반송파의 주파수가 

 

정확하지 않아서 반송파의 정확한 발진 주기를 만드는 것이 큰 문제가 되었습니다.

 

그래서 이것을 튜닝해 주는것이 큰 문제였다고 합니다.

 

 

현대의 발진기가 발명된것은 1880년 압전현상의 발견으로 거슬러 올라갑니다. 

 

 

 

 

 

 

(압전 현상 - 출처 위키피디아)

 

 

 

 

압전 현상이란 물질에 물리적인 에너지가 가해지면 분극이 일어나는 현상으로 

 

물질에 전기에너지가 가해지면 물리적인 변형이 가해지며 이것이 되돌아가는 과정에서 공진

 

현상을 일으킬 수 있는데 수정(crystal)이 대표적인 물질입니다. 

 

https://en.wikipedia.org/wiki/Crystal_oscillator

 

수정 발진자의 경우 위에서 설명한 LC 공진기나 멀티바이브레이터 등과는 달리 온도나 주위환경과는 

 

무관하게 고유한 진동을 일으키며 이 진동의 진동수는 전적으로 수정편의 두께나 결정방향에 

 

의존합니다.  따라서 정밀한 클럭소스로 사용할수 있습니다.

 

 

 

 

 

시계에 사용되는 수정 발진자 

 

 

 

 

 

 

 

시골집이나 옛날 드라마에서 나오는 '괘종시계'는 태엽에 감긴 에너지를 진자의 움직임으로 

 

바꾸어 이것을 이용해서 시간을 표시하는 시계입니다. 

 

 

단지 진자의 기계적인 움직임으로 시간을 측정하는 장치였기 때문에 오차가 많다는 것은 

 

당연한 것이었습니다. 

 

 

그렇지만 수정 발진자가 상용화 되면서 이러한 괘종시계보다 정밀도가 우수한 '쿼츠 시계'가 

 

널리 사용되게 되었습니다. 

 

 

'쿼츠 시계'란 수정발진자를 이용해서 정확한 시간을 표시한 아날로그 시계를 의미합니다.

 

 

 
 

 

이러한 수정 발진기의 상업적인 이용은 1910년 후반부터 이루어 졌습니다.

 

최초의 수정발진자는 천연 수정을 얇게 잘라내어서 사용하였으나 

 

정확한 주파수를 생성하기 위해서 인공적으로 순수한 수정을 결정화 하는 기술이 발명되어서

 

오늘날의 수정 발진기는 전부 인공적인 수정으로 만들어 지고 있습니다.

 

 

 

 

 

 

 

(수정 발진자 그림)

 

 

따라서 주위환경의 변화에 무관하게 대단히 고 정밀도의 클럭을 얻을 수 있게 된것입니다.

 

그렇지만 수정 발진자에도 단점이 있는데 수정편을 무한정 얇게 만들수는 없으므로 

 

현재의 기술로는 50Mhz 정도까지가 발진 한계로 인식되고 있습니다.

 

수정발진자가 진짜 수정이 맞을까요?? 

 

뜯어보면..  

 

 

 

진짜로 수정 판이 들어 있네요.. ㅎㅎ

 

 

 

 

 

 

(수정발진자의 내부)

 

 

 

 

압전현상을 이용하는 또다른 발진기로는 세라믹 발진기 (ceramic resonator)가 있습니다.

 

세라믹의 경우에도 압전현상으로 발진을 일으키지만 수정 발진기보다는 좀 덜 정확합니다.

 

그러나 가격이 저렴하다는 장점이 있습니다.

 

 

 

 

 

 

(세라믹 레조네이터)

 

 

발진기의 발진을 일으키기 위해서는 계속적인 전기 자극이 필요합니다. 이러한 전기 자극을 

 

주기 위해서는 수정발진자 주위에 회로가 필요한데 이러한 회로를 하나로 패키지화하여 

 

모아 놓은것을 오실레이터라고 합니니다. 

 

 

 

(오실레이터 그림)

 

 

 

오실레이터는 주변 회로가 간단해지고, 정확하다는 장점이 있어 전자회로의 클럭소스로 

 

많이 쓰입니다.

 

 

 

우리가 임베디드에 사용하는 클럭의 경우에도 위의 여러가지 발진 회로를 사용할 수 있습니다.

 

대개는 수정 발진자를 사용하나 그밖에도 목적에 맞는 다양한 구성으로 클럭을 

 

생성할 수 있도록 하고 있습니다.

 

단지 클럭 입력핀의 양단에 각각 수정발진자나 기타 클럭원과 연결만 하면 

 

MPU 안에 내장되어 있는 나머지 부품과 함께 발진을 하기 때문에   

 

간단하게 클럭을 구성할 수 있습니다. 

 

 

 

AVR의 클럭 설정부분을 참고하면, 몇가지 종류의 클럭소스를 선택 할 수 있습니다.

 

(단 각각의 클럭 소스나 주파수에 따라서 사용되는 수동 소자가 다르기 때문에 

 

MPU의 퓨즈 비트에는 어떤 클럭소스가 사용되었는지 설정하는 비트가 존재 합니다.

 

주의 !! 퓨즈비트의 값을 잘못 설정하면 MPU는 작동을 하지 않습니다.)


클럭소스의 결정은 클럭이 발생하기 이전에 결정되어야 하는 것이기 때문에 

 

MPU 내부의 프로그램으로는 이것을 설정할 수 없고, 퓨즈비트라는 설정용 비트에 그 

 

종류가 설정되어 클럭의 소스로 사용됩니다.

 

http://www.electroschematics.com/9481/avr-clock-source-fuse-bits/

 

 

 

 

 

 

(AVR MPU의 다양한 클럭소스)


 

마찬가지로 AVR 이외의 다른종류의 임베디드 MPU의 경우에도 위에서 설명한 발진기들을 

 

포함한 다양한 클럭소스로부터 클럭을 생성해 낼수 있습니다. 

 

MPU 내부에 클럭 발진에 사용되는 회로를 

 

내장하고 있기 때문에 굳이 비싼 오실레이터를 쓰지 않고도 수정발진자만으로도 정밀한  

 

클럭을 생성할 수 있습니다.

 

(예전의 CPU들이나 MPU의 경우에 클럭 입력핀이 하나밖에 없는 경우가 있는데 이러한 

 

경우에는 수정발진자에 발진 회로를 구성하고 이 출력을 클럭 입력에 입력 해야 했습니다.

 

즉 부가회로가 더 필요했습니다.)


 

 

또한 최근의 MPU나 FPGA의 경우 RC 수동소자로 구성된 발진 회로가 이미 내장되어 있어서 

 

외부 클럭이 없이도 초기의 값을 읽어들이거나 프로그램을 실행할 수 있습니다. 이러한 경우에는 

 

MPU는 외부모듈이 하나도 없더라도 원하는 동작을 수행할 수 있습니다. 

 

- internal rc oscillator

 

ex) ATTiny 시리즈 혹은 PIC시리즈중 일부

 

 

 

MPU의 클럭은 상한선은 있으나 하한선은 거의 없기 때문에 

 

목적에 따라 필요한 클럭소스나 주파수를 선택할 수 있습니다.

 

대개는 레퍼런스에서 사용된 클럭 주파수를 사용하나 전원관리가 중요한 경우 

 

클럭을 좀더 낮추어 사용하기도 합니다.

 

 

 

 

클럭에대해서 어느정도 감이 잡히셨는지요?

 

이번에는 MPU의 클럭원으로 사용되어지는 다양한 발진회로에 대해서 알아 보았습니다.

 

읽어 주셔서 감사합니다.

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]

 

관련 제품

 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P000360693

 

http://www.icbanq.com/P000362952/S

 

http://www.icbanq.com/P000541714

 

 

 

 

 

참고 사이트

 

https://www.sparkfun.com/tutorials/95

 

https://www.maximintegrated.com/en/app-notes/index.mvp/id/2154

 

 

신고

임베디드 기초 강좌 5 - clock


임베디드 기초 강좌 5 - clock

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]


 

안녕하세요. 고명호 입니다 

 이번에는 임베디드 MPU를 다루는데 있어서 심장부가 되는 클럭에 대해서 알아보겠습니다.

 일반적인 TTL등의 descrete IC를 이용하는 전자 기기에서는 클럭이 필요하지 않은 경우도 

 많이 있습니다만 임베디드 MPU를 제어하는데는 정해진 순서대로 프로그램이 

 수행되어야 하는데 이러한 프로그램이 정확한 시간에 수행되기 위해서 

 클럭은 필수적인 요소가 됩니다.

 

 

 

단순한 키트류의 부품또는 CPLD나 FPGA를 제외하고 프로그램이 수행되는 모든 전자기기에는

 클럭이 존재합니다. 

 

 

 

일반적으로 똑같은 MPU를 사용하는경우에 클럭이 빠르면 명령어의 수행이 

 더 빠르게 이루어 지게 됩니다. 즉 6Mhz로 동작하는 회로에서 12Mhz로 동작하도록 

 클럭을 변경하게되면 모든 작업들이 2배로 빨리 실행되게 됩니다.

 (그렇지만 MPU의 정해진 한계클럭이 존재하기 때문에 

 무한정 클럭을 올릴수는 없고 또한 클럭이 올라감과 더불어 소비전력도 비례하여 

 늘어나기 때문에 모바일 기기에서는 될수있으면 똑같은 작업을 하더라도 적은 클럭으로 

 작업을 수행하는 것이 유리합니다.) 

 

 

클럭의 소스로 쓰이는(클럭을 발생시킬수 있는) 부품에는 몇가지종류 또는 회로가 존재합니다.

 (다음회에는 클럭의 원천이 되는 몇 종류의 부품 또는 회로에 대해서 알아 보겠습니다)

 아두이노같이 이미 부품이 실장된 전자 회로의 경우 다음의 모양처럼 생긴 부품들을 본적이 

 있을 것입니다.  

 



 

(그림1. 세라믹 레조네이터 와 수정 크리스탈)

 

 

 

 

아두이노 uno등에서는 2종류의 클럭이 사용되고 있습니다. 

 (하나는 USB 통신용, 하나는 메인 칩용입니다.)

  



 

그림에서의 길고 흰모양의 부품이 Quartz crystal 이라고 하는것으로 비교적 정밀한

 주파수의 클럭을 얻을수 있는 부품인 반면에 ATMEGA chip 바로 위쪽의 작은 부품은 

 ceramic resonator 라 불리는 부품으로 Quartz crystal(수정발진자) 보다는 정밀도가 

 떨어지지만 RC, LC 발진회로보다는 비교적 정밀도가 높기 때문에 

 중등도 타이밍회로, 또는 정확한 타이밍이 요구되지 않는 전자 회로에서 많이 이용되는 

 부품입니다.

 

MPU에서 클럭은 명령을 수행할 때의 타이밍의 기준이 됩니다.

 MPU내부에서 명령을 가져오고 해석하여 최종적인 명령이 수행될때 각각 한클럭씩 소요가 되나

 최근의 MPU들은 명령 인식과 해석및 실행단계에 파이프라인이라는 처리과정을 거쳐서 

 - 각 파이프라인이 각각 독립적으로 작동하여- 파이프라인이 한클럭에 한꺼번에 실행됩니다.

 

 

  

 클럭   

   클럭   

           클럭   

     클럭  

    클럭

 명령을 가져옴

 명령의 해석 

 명령의 수행

 

 

 

 명령을 가져옴

 명령의 해석

 명령의 수행 

 

 

 

 명령을 가져옴

 명령의 해석

 명령의 수행

 

 

      <특정 순간>

 

 

 

 

위와 같은 과정이 무한히 반복됩니다.

 위처럼 3번째의 세로줄을 살펴보면 명령가져오고 해석과 수행이 한번에 이루어져서 

 거의 모든 명령이 한클럭에 실행이 되도록 하고 있습니다. 

 (단 MPU내에는 인터럽터 처리등의 회로가 부가되기 때문에 엄밀히는 위보다 더 많은 

 단계의 파이프라인 처리부분이 존재합니다. 

 

마찬가지로 코드의 분기명령어는 분기후 파이프라인이 재 설정되므로 이런 경우에는 명령이 

 한 클럭으로 완료되지 않습니다.)

 

 

아두이노에서 쓰이는 AVR 계열의 MPU는 레지스터 제어 명령이 1클럭에 수행이 되며 

 분기명령및 기타 메모리관련 명령은 2클럭에 수행됩니다.

 마이크로칩사의 PIC 계열의 경우에는 분기명령을 제외한 모든 명령이 4클럭에 수행이 되며 

 분기명령만 8클럭에 수행이 됩니다. 

 

(타이밍을 맞추는데는 AVR보다 PIC이 좀더 수월합니다. 하지만 PIC계열은 AVR보다 4배나 빠른 

 클럭을 사용해야 합니다.)

 

(물론 C 언어로 프로그래밍을 하는경우에는 각각 컴파일된 코드의 길이가 다르므로 

 정확한 타이밍이 요구되는 경우에는 AVR이던, PIC이던 직접 어셈블리로 

 코드를 작성하여 타이밍을 맞추어야 합니다.)

 

 MPU를 이용해서 일정한 주파수의 소리를 발생시킨다거나, 아니면 UART 시리얼 등으로 

 타 주변기기와의 통신을 하는경우에는 정확한 클럭이 필요하게 되는데, 이때 MPU는 

 클럭에서 발생된 기준클럭을 두배 혹은 세배, 아니면 n 배를 해서 기준클럭의 

 배수가 되는 더 느린 클럭을 만들어서 각종 내부 제어회로에 이용하게 됩니다.

  

MPU내부에서 클럭이 사용되는 경우는 일반적으로 다음과 같습니다.

 

UART, PWM, 카운터, 타이머

 이중 카운터 타이머의 경우에는 정해진 숫자의 값을 카운트 다운 또는 카운트 업 하여 

 정해진 숫자에 도달하면 인터럽트를 발생시켜 필요한 동작을 수행합니다.

 이렇게 하면 모든 IO 핀을 매번 모니터링 하거나 일일히 

 명령의 instruction cycle을 계산하지 않고도 정확한 시간에 정해진 작업을 수행할 수 있습니다.

 

즉 예를 들자면 아두이노등에서의 sleep명령처럼 아무일도 하지 않고 노는 시간에 다른 일을 

 할 수 있는것 입니다.

 

타이머는 대개 내부의 기준 클럭이 일정한 시간에 발생하는 클럭 펄스에 의해서 동작하며

카운터의 경우 외부의 펄스변화를 인식하여 각 펄스가 정해진 갯수가 되는 경우에 인터럽트가

발생합니다.

마찬가지로 UART의 경우에는 전송되는 데이터 값을 어느정도 시간동안 유지해야 하는지를 

결정하는데 클럭이 사용되며

PWM의 경우에는 펄스폭의 길이를 결정하는데 클럭이 이용됩니다. 

 

이때 기준 클럭보다 엄청나게 긴 시간동안의 카운팅이 일어나야 하는데 

프리스케일러라는 내부 회로를 두어서 클럭을 2배 4배 또는 심지어 256 배 정도 까지의 긴 

 

시간동안을 한 단위로 하여 타이밍을 맞추는 데 사용하고 있습니다.

 

설명을 위해서 다음과 같은 프로그램을 봅시다.

 

 

// the setup function runs once when you press reset or power the board

void setup() {

  // initialize digital pin 13 as an output.

  pinMode(13, OUTPUT);

}

 

// the loop function runs over and over again forever

void loop() {

  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)

  delay(1000);              // wait for a second

  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW

  delay(1000);              // wait for a second

}


 

 

위의 예제는 아두이노의 블링크 예제 입니다. 

 

LED를 점등하고 1초를 기다리고, 또 소등하고 1초를 기다리는 프로그램입니다.

 위 프로그램은 기다리는 동안 아두이노는 아무일도 못하고 단지 기다리기만 할 뿐입니다.

 (이러한 루프를 idle loop라고 부릅니다.)

 그렇지만 인터럽트를 이용하면 

 

 

 

// avr-libc library includes

#include

#include

#define LEDPIN 13

 

void setup()

{

pinMode(LEDPIN, OUTPUT);

// initialize Timer1

cli();         // disable global interrupts

TCCR1A = 0;    // set entire TCCR1A register to 0

TCCR1B = 0;    // set entire TCCR1B register to 0 

               // (as we do not know the initial  values) 

 

// enable Timer1 overflow interrupt:

TIMSK1 | = (1 << TOIE1); //Atmega8 has no TIMSK1 but a TIMSK register

 

// Set CS10 bit so timer runs at clock speed: (no prescaling)

TCCR1B |= (1 << CS10); // Sets bit CS10 in TCCR1B

// This is achieved by shifting binary 1 (0b00000001)

// to the left by CS10 bits. This is then bitwise

// OR-ed into the current value of TCCR1B, which effectively set

// this one bit high. Similar: TCCR1B |= _BV(CS10);

 

// enable global interrupts:

sei();

 

ISR(TIMER1_OVF_vect)

{

 

digitalWrite(LEDPIN, !digitalRead(LEDPIN));

// or use: PORTB ^= _BV(PB5);// PB5 =pin 19 is digitalpin 13

}


 

 

 

이렇게 작성할 수 있고, 뭔가 조금 복잡해 보이기는 해도 

 노는 시간동안 아두이노는 다른 유익한 일을 할 수가 있습니다.

 

 

임베디드 프로그래밍도 최적화를 잘 하면 더 상위의 MPU를 쓰지 않고도 원하는 작업이 가능합니다.

 즉 임베디드 하드웨어를 잘 이해하면 이해할 수록 효율적인 프로그래밍이 가능하다는 것입니다.

 

이야기가 길어져서 

 클럭 설명드리다가 인터럽트, 타이머까지 간단히 설명을 드리게 되었습니다.

 모든 제어회로의 기준 시간이 된다는 사실을 말씀드린것 이구요..

 

 

암튼 ..

 

결론적으로 말씀드리면 임베디드 기기에서는 클럭을 선정할때 전원의 소모, 프로그램의 수행시간, 

 그리고 심지어는 UART회로, PWM회로 타이머, 카운터의 거의 모든 회로가 영향을 받기 때문에

 기준클럭을 선정해야할 때 목적에 맞는 최적의 클럭을 선정하도록 해야 합니다.

 

  

예전에는 임베디드 프로그래밍을 할때는 UART통신을 하기 위해서 클럭이 바뀔때 마다 

 통신 제어 레지스터에 일일히 계산을 해서 계산된 값을 입력해 줘야하는 불편함이 있었습니다만

 요즘은 대개 정해진 클럭을 사용하는 상용화 제품들이 많고 (아두이노의 경우에 기준클럭은 16Mhz 

 입니다.) 또한 각 칩마다 클럭에 따라 각각의 계수들을 계산해 주는 도우미 어플리케이션이 

 많이 있어서 

 

(예를 들자면 PIC - http://www.nicksoft.info/el/calc/?ac=spbrg 

 AVR - http://wormfood.net/avrbaudcalc.php

 등의 사이트)

 

현재는 예전처럼 클럭 제어 레지스터를 직접 다루어야 하는 일은 많지 않아졌습니다.

  

이번에는 클럭을 바꿀때 프로그램도 바뀌어야 한다는 것만 알고 가시면 될것 같습니다.

  

도움이 되셨는지요 ??

  

많은 도움이 되셨기를 바라며 이번회의 강좌를 마치도록 하겠습니다.

  

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]


 

 

참고 사이트

 

 

http://www.nicksoft.info/el/calc/?ac=spbrg 

 

http://wormfood.net/avrbaudcalc.php

 

https://www.arduino.cc/en/Tutorial/Blink

 

https://arduinodiy.wordpress.com/2012/02/28/timer-interrupts/

 

 

 

참고 부품

 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P000360693

 

http://www.icbanq.com/P001943166/S

신고

임베디드 기초 강좌 4 부록 - ARM MCU 실습해 보기..

 

 

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성

되었습니다]

 

 

안녕하세요. 고명호 입니다. 

 

지난시간에는 임베디드 분야의 새로운 트렌드인 ARM 코어에 대해서 살펴 보았습니다. 

 

이번에는 ARM코어를 사용한 MCU를 간단히 리뷰해 보고, 

 

코딩하는 방법에 대해서 알아 보겠습니다.

 

ARM 코어가 내장된 시기는 이미 임베디드 분야에서도 MCU의 내장 메모리가 상당히 

 

커진 관계로 어셈블리 언어를 이용할 필요가 별로 없어 졌습니다. 

 

그래서 속도가 필요한 몇몇 루틴을 제외하고는 대부분의 코드를 C 또는 C++로 작성을 

 

하게 됩니다. 

 

예전에는 ARM 코어를 사용한 임베디드 보드를 이용해서 프로그래밍을 하기 위해서는

 

먼저 ARM코어 전용의 업로드 툴을 준비하고, 부트로더부터 작성하고 

 

그이후에 C 런타임 환경을 만든뒤에 C언어의 main루틴을 실행하였습니다.

 

대부분의 칩 제조사에서는 자사의 MCU나 CPU에 맞는 부트 코드를 제공해 주며 

 

또한 프로그래밍에 필요한 컴파일러나 디버깅 툴은 ARM사에서 제공을 해 주었습니다.

 

그런데 ARM사에서 발매한 컴파일러는 성능은 매우 뛰어나지만 가격또한 매우 비쌉니다.

 

마찬가지로 ARM사에서 판매하는 디버깅 도구인 TRACE32 역시 수천만원을 호가하는 

 

매우 고가의 장비라서 임베디드 프로그래밍이 초기투자에는 

 

윈도우 프로그래밍보다도 비용이 더 많이 들었습니다.

 

그렇지만, ATMEL 칩에서와 마찬가지로 GCC

 

(gnu compiler collection - gnu 에서 만든 컴파일러 셋입니다.)컴파일러가   

 

ARM용으로 개발이 되어 무료로 사용할 수 있게 되었고, 또한 저렴한 JTAG 디버거가 발매되어서 

 

개인 개발자도 고성능 임베디드 코어를 이용할 수 있게 되었습니다.

 

이번에 리뷰해볼 Nucleo-F401RE 개발보드는 STMicroelectronics에서 발매된 개발보드인데

 

http://www.icbanq.com/P005661371/S

 

 

 

 

 

 

 

가격이 무려 ... 

 

 

14000원입니다. -,.-

 

14만원이 아니에요.. 개발보드 안에 ST-LINK라는 디버깅및 업로드 툴까지 내장하고도 가격이 

 

저렇습니다.

 

32비트 ARM코어를 내장하고 디버거까지 내장된 개발보드가 아두이노보다 쌉니다.~ 

 

심지어는 아두이노 실드와 호환이 되는 female 핀까지 있어서 - 약간은 수고스러우나 - 

 

프로그래밍을 해 주면 아두이노 실드도 이용할 수 있습니다.

 

아두이노의 경우에는 디버거가 없어서 코드 추적이 불가능한데요... 

 

이것은 가능합니다. 변수 확인도 가능하죠..

 

그렇다면 개발환경이 열악하냐.. 하면 그것도 아닙니다.

 

https://developer.mbed.org/

 

개발도구를 설치할 필요도 없이 그냥 온라인으로 개발이 가능합니다. @.@

 

간단한 개발에는 도구를 설치하느라 걸리는 시간이 거의 없는것 입니다.

 

(물론 개발도구를 설치해서 오프라인으로 개발도 가능합니다. 

 

오프라인으로 개발을 하면 디버깅및 코드 추적이 가능해 집니다.)

 

이번에는 먼저 간단하게 온라인 개발도구를 이용해서 개발을 해 보도록 하겠습니다.

 

기본 사이트에 들어가시면 

 

http://www.mbed.org/

 



(그림1)

 

ARMmbed라고 써있네요. 예전에는 그냥 mbed만 써 있었는데...

 

(ARM사에서 mbed 사이트의 혁신적인 면을 보고서 파트너 쉽 관계를 맺었다고 합니다.)

 

그리고 오른쪽 위의 실제 개발자 사이트로 넘어가는 버튼을 누르면..

 

다음과 같은 개발자 화면이 나옵니다.

 

https://developer.mbed.org/

 

(그림2)

 

여기서 등록을 하시고, 왼쪽 위쪽의 platforms 항목을 눌러서 내가 가진 개발보드를 

 

추가하면 이 개발보드에 맞는 결과물을 얻을 수 있습니다.

 

 

한눈에 보기에도 많은 개발보드를 지원하는 것을 알 수 있습니다.

 

여기서 다시 오른쪽 위의 compiler 버튼을 클릭하면 온라인 IDE 개발도구를 실행시킬수 있습니다.

 

 

 

(그림4)

 

IDE개발도구에서는 내 컴퓨터에 설치된 일반 IDE개발도구를 쓰듯이 그냥.. 쓰시면 됩니다. 

 

NEW를 눌러서 새로운 프로젝트를 만들면 기본적인 템플리트를 지정해 줄 수 있습니다. 

 

 

저는 화면에서 보듯이 일단 LED를 깜박이기 위해서 neucleo_blink_led라는 항목을 선택했습니다만 

 

이 밖에도 I2C나 SPI및 PWM등의 제어에 필요한 예제들을 제공해 주므로 가장 적당한 템플리트로 

 

먼저 시작하시면 됩니다.

 

그리고 여기서 프로그램을 작성한 후 compile 버튼을 누르면 컴파일이 진행 되고 

 

 

 

 

 

 

(그림4)

 

(물밑에서 일어나는 작업들은 알 필요가 없습니다. 개발보드에 맞는 부팅 환경은 사이트에서

 

 다 알아서 해 주죠.)

 

브라우저에서 생성된 binary code 결과물을 다운로드 받게 됩니다. 

 

 

 

 

 

위에 다운로드 받은거 보이시죠??

 

이 결과물을 내가 가진 개발보드에 올리면 바로 실행이 가능합니다.

 

참 쉽죠?? ㅎ ㅎ 

 

처음에는 별로 안쉽더라도 몇번 해 보면 금방 쉬워질 겁니다. ㅡ,.ㅡ

 

쉬운 방법을 알아야 임베디드 개발의 좀더 깊은 곳으로 들어 갈 수 있습니다.

 

이번시간은 여기까지 마치겠습니다. 

 

위에 말씀드린 개발보드가 아니더라도 저렴한 개발보드를 하나 구입해서 실습 해 보시기를 

 

당부드립니다. 

 

감사합니다. ~~

 

 

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 

 

아이씨뱅큐의 지원을 받아 작성되었습니다]

 

 

신고

임베디드 기초 강좌 4 - 새로운 고성능 임베디드 mcu의 등장

임베디드 기초 강좌 4 - 새로운 고성능 임베디드 mcu의 등장

새로운 고성능 임베디드 mcu의 등장

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 

아이씨뱅큐의 지원을 받아 작성되었습니다]

 

안녕하세요 고명호 입니다.

지난번에는 본격적인 임베디드 강좌로 CPU의 개발및 MCU의 개발배경, 

그리고 부록 강좌에서는 예전에 사용되었던 AVR, PIC 칩의 대표적인 MCU를 살펴 보았습니다.

이번에는 비교적 최근의 CPU인 ARM의 등장 배경및 대표적인 CPU를 살펴보고 

다음 강좌에서는 실제적인 MCU의 사용을 해 보겠습니다. 

 

90년대 MCU들은 비교적 작은크기와 적은 메모리 그리고 몇 안되는 IO 개수로 단순했었지만

현세대의 MCU는 그 기능이 매우 많고 방대하여 전부 이해하는 것은 시간이 많이 걸리고 

어려운 일입니다.  간단한 작업을 하는데 고성능의 MCU를 쓸 이유는 없을 것입니다. 

그래서, ARM CPU의 등장배경과 현세대의 MCU의 경우 꼭 필요한 분야가 어디인지 

그리고 어떤 곳에서 쓰이고 있는지 간략히 살펴보는 것으로 마무리를 하겠습니다.

 

 

지난시간에는 인텔 4004 CPU 가 개발된 이후 8비트 CPU의 시조가 된 8080이 개발되었고 

이 8080 CPU 가 8비트 CPU의 대표격인 z80의 원조가 되었다는 말씀을 드렸습니다.

오늘은 그 다음의 이야기인 32비트 CPU와 RISC CPU의 개발 배경에 대해서 말씀드리고, 

현세대의 임베디드의 새로운 트렌드에 대해서 말씀드리겠습니다.

 

인텔은 8080개발이후 16비트인 8086 CPU를 개발하게 되었는데 이CPU가 IBM에서 쓰이면서 

시장을 장악하게 되었습니다. 

 

8086이후 속도를 향상시킨 80286 프로세서를 개발하게 되었고, 이후 32비트 CPU인 80386 를 

개발하면서 부터 32비트 CPU의 시대가 열리게 되었습니다.

 

데스크탑 CPU라 하면 거의 인텔 CPU라고 할정도로 개인용 컴퓨터에는 인텔 CPU가 쓰였습니다.

인텔의 CPU는 CISC라는 구조의 CPU인데 하위 호환을 위해서 CPU의 명령어의 길이가 가변이면서 

또한 상당히 많은 명령어 셋을 가지고 있는것이 특징입니다.

 

이러한 CISC구조는 CPU의 명령이 다양하다는 장점이 있지만 전력소비가 많고 

명령 디코딩에 쓰이는 로직이 복잡하기 때문에 소형화가 어렵다는 단점이 있었습니다.

따라서 전력 소모도 크고 발열량도 상당하다는 단점도 함께 존재 했습니다.

 

- CISC : complex instruction set computing - 

 

이때 컴퓨터공학자들이 그 시대의 CPU를 분석해 보니 실제로 코드에서 사용되는 명령어 중 

자주 쓰이는 것은 20% 미만이고 나머지 80%는 거의 안쓰이거나 낮은 빈도로 쓰이고 있다는 

것을 발견하게 됩니다. 

 

그리하여 명령어의 갯수를 줄인 CPU를 개발하게 되었는데 이것이 RISC CPU입니다. 

RISC란 (reduced instruction set computing)의 의미로 제어와 연산에 쓰이는 꼭 필요한 명령어들만 

남겨놓은 것이 특징입니다.

 

미국의 버클리와 스탠포드에서 각각 독자적인 아키텍처를 개발하여 발전시켜 나갔는데 

스탠포드에서 유래한 CPU는 SPARC, POWER CPU가 있습니다. 

주로 그 시대의 중대형급 서버 컴퓨터에서 쓰였습니다.

 

그리고 버클리에서 유래한 아키텍처가 MIPS CPU 입니다. 

MIPS CPU도 중대형급 서버 컴퓨터에 쓰였습니다. 주로 그래픽 작업용 워크스테이션에 쓰였습니다.

데스크탑 시장에는 비록 도전했으나 인텔의 철옹성영역으로 실패를 하였고, 

아이러니하게도 CPU가 소형화 되면서 임베디드 기기및 게임기에 다시 쓰이게 되었습니다. 

90년대 중반 소니의 게임기 플레이스테이션 1이 서버급 CPU가 쓰였다는 광고를 하였는데

3D 폴리곤 처리 기능까지 갖추고도 저렴한 가격에 대 히트를 치면서 성공을 거두게 되었는데 

이때 사용된 CPU가 MIPS core 입니다. 

 

(정확히는 MIPS R3000 32비트 CPU이고 아이러니 하게도 3D 연산에 필요한 

부동소수점 연산 기능은 없습니다. 그래서 3차원 계산시에는 고정소수점 연산기능을 

이용해야 하는 반쪽짜리 3d CPU였습니다.)

 

MIPS 코어는 아직도 32비트 PIC 시리즈에 사용되고 있습니다.

 

 

MIPS CPU는32비트 RISC CPU이지만 어셈블리 명령어가 난해하고, 효율적이지 못한 단점이 

있었습니다. 

 

한편 Acorn이라는 영국회사에서 Acorn 이라는 RISC 아키텍처를 개발하고 자신의 

컴퓨터에 사용을 해 왔습니다만 한때는 잘 나갔으나 당대의 거물 매킨토시나 IBM에 밀려서 

사세가 기울었고, ARM 아키텍쳐를 애플과 VLSI의 조인트 벤처 기업인 ARM 에 팔았습니다. 

 

오히려 이때부터 ARM CPU의 중흥기가 시작이 됩니다. 

ARM사는 스스로 CPU를 생산하지 않고 ARM 코어를 여기저기 라이선스 해 주는 전략으로 

데스크탑 이외의 각 분야에 ARM 코어를 보급하였습니다. 

 

인텔이 데스크 탑 시장을 장악하고 있는동안 ARM은 그 밖의 시장을 장악했습니다.

게임기, 가전제품, 공유기, PDA에 이르기까지 거의 대부분이 ARM 코어를 사용하고 있습니다.

초창기에는 단지 저전력의 32비트 CPU정도로만 인식되던  CPU가 이후 코어 CPU의 속도가 

대폭 향상되어 일반 데스크탑 CPU에 버금가는 저가형 CPU들이 제조 되었습니다.

 

(라즈베리 파이 1, 라즈베리 파이 2에 쓰인 CPU도 각각 ARM V6, ARM cortex-a9 쿼드 코어급 

CPU가 쓰이고 있습니다.)

 

 

  잠깐 다른주제의 내용을 이야기 하겠습니다.

  라즈베리 파이 1,2 의 운영체제로 사용되는 리눅스는 임베디드 리눅스가 아닙니다. 

  그냥 32비트의 완전한 리눅스 입니다.

 

  임베디드 리눅스란 MMU가 없거나 메모리가 부족한 한정된 분야에서 쓰이기 위해서 

  리눅스시스템의 최소부분만을 남긴 리눅스를 의미하는데

  라즈베리 1,2 의 경우 메인메모리 512~ 1GB, 저장장치 2~32GB ARM 32비트 CPU 등을 

  채용하고 있기 때문에 완전한 리눅스 머신으로 볼수 있으며

  각종 리눅스 패키지의 배포판 (debian, ubuntu, arch linux)을 수정없이 바로 이용할 수 있기 때문에 

  완전한 리눅스 시스템으로 보는것이 타당합니다.

 

  반면에 공유기, 휴대폰, 게임기 등에 쓰이는 리눅스는 그 한정된 메모리나 저성능의 arm코어 

  등을 사용하는점에 비추어 임베디드 리눅스라고 할 수 있습니다.

 

  심지어는 서버의 역할로서 충분히 기능 할 수 있으므로 

  개인용 웹 서버를 운영하는일도 가능할 정도입니다.

 

  현재 불과 몇만원정도에 서버급의 리눅스 머신이 팔리고 있다는 사실은 10년전만해도 상상하기 

  힘든 현실이 되었습니다.  

 

 

 

임베디드 기기의 경우에 대부분 8비트 CPU가 주류였으나 복잡한 계산및 속도가 필요하게 되면서 

임베디드용 MCU에도 32비트급 CPU가 필요해 졌습니다.

그리하여 MIPS의 임베디드 시장 진출이 먼저 이루어 졌고, 뒤이어 ARM core도 임베디드 시장에 

진입하게 됩니다.

 

원래의 ARM CPU는 외부에 메모리등을 추가로 달아줘야 했습니다. (일반적인 CPU) 

이러한 ARM cpu가 임베디드 영역에 쓰이기 위해서는 몇가지 기능이 새로 추가가 되었습니다.

즉 임베디드 시장의 수요가 32비트로 넘어가게 되면서 성능과 저전력을 타협하여 

 

극단적인 고 성능(CLOCK 1GHz 이상)대신에 임베디드 기기에 적당한 클럭(80MHz 이하)을 

가지고 CPU 내부에 메모리와 제어유닛을 포함하는 형태로의 ARM 코어가 발전하게 됩니다.

(ARM cortex-m0 시리즈)

 

이때 ARM 코어 특히 cortex-m0 시리즈는 32비트 CPU의 장점을 가지면서 저전력이고, 

게다가 라이선스만 취득하면 누구나 CPU의 제조가 가능했기 때문에 

수많은 임베디드 CPU제조 업체가 cortex-m0 시리즈 MCU를 생산하기 시작했습니다.

다음 그림은 icbanq 에서 판매가 되고 있는 ARM cortex-m0 코어를 가진 MCU 종류들입니다. 

 

 

(그림 1) ARM MCU


종류도 다양하고 제조사도 다양한 것을 알 수 있습니다. 

심지어 가장 저렴한것은 1000 원대부터 가격이 형성되어 있습니다!!

 

ARM 코어는 저전력의 RISC CPU 이면서도 CISC CPU가 가지는 장점을 추가하고 

또한 C 언어에서 쓰이는 언어 형식(pre increment, post increment) 등을 어셈블리에 

직접 도입하여 명령어의 효율성이 대폭 증대되었습니다.

 

그리고 이시점부터 고성능 임베디드 CPU의 거의 대세가 되다시피 하였습니다.

우리가 실생활에 쓰는 첨단 IT기기의 대부분은(인텔 CPU가 장착된 노트북등을 제외하면) 

ARM 코어를 사용한다고 해도 과언이 아닙니다. 

 

심지어는 초소형 시계, 게임기, 공유기내부에서 쓰이는 CPU도 ARM 코어 입니다. 

애플워치나 아이패드 아이폰에는 어떤 CPU가 쓰였을까요?

ARM 기업의 초기 투자자가 애플사라는것은 아시죠?

그래서 이제는 임베디드를 하면서 ARM 코어에 대한 이해가 없으면 안되는 정도가 된 것입니다.

 

지루한 역사 이야기를 해서 재미가 없으셨죠?

암튼 읽어 주셔서 감사합니다.

 

이번시간에는 현세대 임베디드 CPU의 대표격인 ARM core에 대해 알아보았습니다.

다음 시간에는 ARM core가 사용된 개발보드의 하나를 리뷰해 보고 

사용하는 방법을 간략하게 살펴 보겠습니다.

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 

아이씨뱅큐의 지원을 받아 작성되었습니다]

 

 

관련 사이트 

 

http://www.icbanq.com/shop/product_list.asp?catg_code=102117100&orderby=3&theme_code=&list_type=3&areaPowerList1=

&areaPowerList2=&areaPowerList3=&areaPowerList4=&prod_mfg=&searchtext=

arm&pagesize=10

 

관련 물품

 

http://www.icbanq.com/P005686826/S

 

 

신고