임베디드 강좌 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 (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]

신고

임베디드 기초 강좌 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

 

 

신고

임베디드 기초 강좌 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

 

 

신고

임베디드 강좌 3 부록 - 대표적인 embedded 용 MCU 개요

임베디드 강좌 3 부록 - 대표적인 embedded 용 MCU 개요

 

본글은 http://blog.naver.com/jimypage 에서도 볼 수 있습니다.

 

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

 

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

 

icbanq 의 홈페이지에 가 보시면 MCU 카테고리에 많은 종류의 MCU들이 존재 하는것을 알 수 

 

있습니다.

 

이번회에는 대표적인 embedded용 MCU인 atmel의 AVR시리즈와 microchip의 PIC시리즈중에서 

 

가장 일반적인(또는 일반적 이었던) 제조사의 과거 베스트셀러 MCU에 대해서 알아 보겠습니다. 

 

그리고 다음회에는 좀더 나가서 ARM코어 제품군에 대해서 알아 보도록 하겠습니다.

 

이번에 살펴볼 것은 atmel 의 AVR 시리즈중 AT90S2313과 

 

microhip의 PIC 시리즈중 pic16f84a 입니다.

 

둘다 현역에서 은퇴한 MCU 이지만 90년대에 널리쓰인 베스트 셀러 칩입니다.

 

(사실 은퇴라고하기에는 조금 애매 합니다.


아직 판매가 되는 MCU이지만 현재는 가격대비 성능이 더 좋은 제품들이 많이 나와있기 때문에


실제 현업에서는 많이 쓰이고 있지 않는다 정도로 이해 해 주시면 좋겠습니다.) 

 

즉 가장 범용적으로 쓰일 수 있다는 점에서 베스트 셀러 였구요. 그래서 간략하게 알아보겠습니다.

 


 

(그림 icbanq 의 MCU 카테고리 항목들)

 

위의 그림에서 보시면 많은 카테고리의 MCU들이 있다는 것을 알 수 있습니다. 

 

각 제조사마다 개발 방법은 거의 동일하기 때문에 일반적인 임베디드 개발을 할 경우에는 

 

먼저 목적, 기능에대한 검토를 한후 어떤 기능이 꼭 필요한지, 어떤 기능이 향후에 필요 할 수 있는지

 

IO 핀은 최소 몇개 정도가 있어야 하는지, 클럭은 어느정도로 동작해야 하는지를 결정하고, 

 

이후에 칩 선정을 하고 펌웨어 프로그램을 작성하게 됩니다. 

 

각 제조사마다 거의 비슷한 기능을 하는 칩들이 다수 존재하기 때문에 일반적으로 

 

AVR에 익숙한 사람들은 AVR을 PIC에 익숙한 사람들은 PIC을 사용합니다. 

 

물론 이 두 제조사의 MCU조차도 해당하는 기능이 없는경우 

 

TI, freescale(motorola 에서 이름을 바꾼 회사 입니다.)등 제3의 MCU를 알아본다던가 

 

그마저도 여의치 않은 경우에는 원하는 기능이 있는 다른 MCU 를 추가하거나, 

 

아니면 제어용 IC, CPLD, FPGA등을 추가하게 됩니다.

 

그렇지만 대개는 위 두 회사의 제품군이 다양하기 때문에 다른 MCU를 추가할 필요없는 경우가 

 

많습니다.

 

 

 

아무튼 atmel과 microchip의 대표적인 제품인 at90s2313과 pic16f84a는 그 보편성 때문에 

 

트레이닝 보드에서도 많이 사용되었을 뿐 아니라, 

 

취미용 제품에서 상용제품까지 (아마도) 가장 많이 제조되고 팔렸을 겁니다.

 

 

 

먼저 각 제품의 스펙문서에 나온 개략적인 기능설명을 보겠습니다.

 

첫번째로 atmel의 AT90S2313 입니다.

 

 

 

(AT90S2313 개요문서)

 

 

그리고 다음은 microchip 의 pic16f84a 입니다.

 

 

(pic16f84a 개요문서)

 

 

위의 두 문서를 보시면 몇몇 기능을 제외하고는 거의 차이가 없다는 것을 알 수 있습니다.

 

먼저 공통점을 살펴 보자면 

 

1. high performance RISC 칩이라는군요. -> 소형화를 위해 명령세트를 줄인 CPU 입니다.

 

2. 8비트 타이머 및 그 인터럽트가 존재합니다.

 

3. 20핀 DIP 패키지로 자작 기판에서도 손쉽게 사용할 수 있습니다.

 

4. 프로그램을 FLASH 메모리에 저장합니다.

 

5. 수십, 수백의 작업용 데이터 메모리가 존재합니다.

 

6. 비휘발성 메모리로서 EEPROM이 존재합니다. 

 

7. 시리얼 방식으로 프로그램 메모리에 기입합니다.

 

 

이번에는 차이점을 살펴보겠습니다.

 

AVR은 UART가 존재합니다.

 

AVR은 16비트 카운터가 존재합니다.

 

AVR은 analog comparator가 있습니다.

 

PIC은 가격이 저렴합니다.

 

 

먼저 AVR은 명령어가 118개나 되어서 powerful 하다고 합니다. 

 

그러나 PIC은 명령이 오직 35개밖에 안되어서 배우기 쉽다고 합니다.

 

그러나 AVR은 머신코드가 겹치는 명령을 따로 나누어 놓았기 때문에 실제 명령어 수는 

 

저것보다 적습니다. 그것을 고려하면 명령어수도 좀더 비슷해 집니다.

 

 

또한 AVR은 기본 4Mhz 모델이지만 PIC은 20Mhz까지 가능하다고 합니다. 

 

그러나 AVR은 1클럭에 1명령이 실행됨에 반해서(정확히 1클럭 1명령은 아닙니다) 

 

PIC은 4클럭에 1명령이 실행되므로 속도가 1/4 입니다. 

 

이마저도 비슷해 졌네요.

 

 

PIC은 점프명령을 제외한 모든 명령이 4 클럭에 실행되는 반면 

 

AVR 은 명령의 클럭수가 일정치 않습니다. 따라서 정확한 타이밍이 요구되는 분야에서는 

 

PIC이 좀더 유리합니다.

 

 

 

이렇게 놓고보니 두 칩은 명령어 세트는 다르지만 성능은 거의 비슷한 것 같이 보입니다. 

 

따라서 선호하는 제조사의 하드웨어를 먼저 공부하고 나중에 다른것을 

 

공부하더라도 상관이 없습니다.

 

요즈음은 아두이노등 플랫폼이 많이 쓰이기 때문에 

 

상대적으로 AVR을 잘 알아두면 나중에 아두이노 프로그래밍에도 

 

사용할수 있어서 유리합니다.

 

 

각 MCU를 자세해 살펴보려면 다음의 링크를 참조해 주세요.

 

AT90S2313

 

http://blog.daum.net/unininu/7165272

 

 

PIC16F84A

 

http://www.ktechno.co.kr/pictech/picframe.html

 

 

 

감사합니다.

 

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

 

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

 

이번에는 각 제조사의 과거 플래그십 MCU를 살펴보았습니다. 

 

다음번에는 임베디드의 새로운 트렌드인 ARM칩에 관해서 알아보겠습니다.

 

 

 

관련 사이트

 

http://blog.daum.net/unininu/7165272


 

 

관련 제품

 

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

 

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


신고

[아이씨뱅큐 ICbanQ 파워블로거 2기] 임베디드 기초 3 - 임베디드 MCU개요

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

 

임베디드 MCU 개요에 대한 설명을 드리겠습니다.

 

 

본글은 http://blog.naver.com/jimypage 에서도 볼 수 있습니다.

 

 

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

 

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

 

이제부터는 본격적인 임베디드 시스템에 대해서 알아보는 것입니다.

 

임베디드란 특수 목적으로 설계된 하드웨어및 이 하드웨어를 제어하는 소프트웨어를 통합하여 

 

지칭하는 말입니다.

 

임베디드의 반대 개념으로는 일반적인 범용 운영체제 시스템을 들 수 있습니다.

 

범용운영체제 (윈도우, 리눅스, OSX)의 경우 하드웨어의 변경없이도 실행시키는 

 

소프트웨어에 따라 다양한 작업을 수행할 수 있습니다.

 

즉 운영체제라는 기본 서비스 환경하에서 임의의 작업들이 수행됩니다. 이에반해 

 

임베디드 시스템의 경우에는 목적이 먼저 선택된후 

 

이 목적을 위해서 하드웨어와 소프트웨어가 개발됩니다. 

 

따라서 특정 목적에 부합하는 하드웨어(MPU및 주변장치)가 먼저 선정되고, 

 

이 하드웨어에 필요한 소프트웨어를 개발하여 최종 결과물을 생성하게 됩니다.

 

일반 범용 운영체제와는 달리 매우 단순한 작업에서부터 아주 복잡한 작업에 이르기까지 

 

그 분야가 상당히 넓으며, 따라서 MPU및 주변장치도 특정 목적및 기능에 부합하도록 

 

다양한 가격대, 다양한 제조사의 다양한 종류가 있는것이 특징입니다.

 

 

예전 가전제품등 전자기기의 경우 비교적 단순한 작업만을 수행하기 때문에 

 

MCU(Micro Controller Unit)가 필요없는 경우가 많았습니다. 

 

MCU가 필요없는 경우라 함은 임베디드 제어 프로그래밍도 필요없다는 말입니다.

 

 

 

예를 들어보겠습니다.

 

지난번 LED 강좌에서 설명드린 세그먼트 LED를 이용해서 전자 시계를 만들었다고 가정해 봅시다.

 

전자시계가 하는 일은 단지 시간을 표시해 주는 것입니다.

 

이러한 단순한 작업은 MCU의 가능에 의존하지 않고 일반적인 논리 소자의 조합으로 

 

얼마든지 구현할 수 있습니다.

 

이런 경우에는 회로의 설계및 완성이 제품의 완성으로 이어지며 제어용 프로그램은 

 

필요하지 않습니다.

 


(TTL을 이용한 clock 회로도 그림)


(회로도상에서 CPU,MCU는 보이지 않습니다. 

단지 논리 소자의 조합으로 시계의 역할을 수행합니다)

 

 

그렇지만 특정작업을 수행하는데 제조사의 요구가 다양해 진다거나

 

(예를 들어서 위의 시계에 알람기능이 추가 되는 경우) 

 

아니면 다양한 모델을 개발해야 하는 경우 단순 논리 소자의 결합만으로는 그 일을 할 수 없습니다. 

 

왜냐하면 간단한 기능을 추가하는데에도 회로설계를 다시하고, 기판설계를 다시하고, 

 

기판 제조를 다시하고, 테스트를 다시 수행해야 하기 때문입니다. 

 

즉 특정부분의 사양 변화에 소요되는 시간및 비용이 만만치 않다는 것이 문제가 된 것 이었습니다.

 

결국은 범용성이 있는 다양한 기능을 수행할 수있는 중앙 연산장치의 필요성이 증가하였고 

 

이것이 CPU가 탄생된 계기가 되었습니다.

 

 

실제로 최초의 CPU라고 알려져 있는 intel사의 4004라는 4bit CPU 모델의 경우 

 

일본 비지콤이라는 회사의 '계산기'에 쓰일 목적으로 처음 개발이 되었습니다.

 

 

(인텔 4004 CPU 그림)

 

그렇지만 CPU를 제조하고 보니 단순히 덧셈 곱셈등의 계산기능만을 위한 것이 아닌 

 

그 이상의 다양한 기능을 할 수 있다는 가능성이 발견되었고 

 

점차 더욱 빠르고 강력한 기능을 가진 CPU가 개발되어 오늘날에 이르게 되었습니다.

 

인텔은 이후 8bit CPU인 8080을 개발하였고 이 8080 cpu는 8bit CPU에서 대박을 친 Z80시리즈의

 

원조가 되었습니다. 7,80년대의 8bit CPU보다 향상된 16bit, 32 bit CPU가 개발및 사용 되었으며 

 

최근에는(2010년 이후) 32bit cpu의 한계를 넘는 64bit CPU가 개발되어 개인용 컴퓨터에 

 

쓰이고 있습니다.

 

이렇게 인텔, AMD로 대표되는 데스크탑 컴퓨터의 CPU가 발전을 하는동안 

 

또다른 종류의 CPU의 필요성이 대두 되었습니다.

 

일반 CPU의 성능이 비약적으로 발전했으나 이정도의 고 성능이 필요하지 않은 

 

단순한 제어를 위한 CPU의 필요성이 증가된 것이었습니다.

 

 

물론 단순한 제어를 위한 용도의 CPU는 데스크탑 CPU의 원조격인 구형 z80 등 8bit의 

 

일반 CPU 등을 이용할 수도 있습니다. 

 

그렇지만 일반 CPU의 경우에는 데이터 버스, 어드레스버스등이 외부에 노출되어 있어서 

 

메모리장치에는 직접 연결이 가능하나 메모리 이외의 시리얼 단자라든가 병렬포트등의 

 

기타 주변장치와 연결을 하기 위해서는 어드레스 디코더및 특정 IO 기능을 담당하는 

 

주변 IC 칩이 필요해 집니다. 

 

(예를 들자면 Z80이라는 8비트 CPU의 경우 주변장치와 병렬 통신을 하기 위해서는 

 

Z80 SIO라는 특정한 반도체가 필요합니다. 

 

또한 마찬가지로 Z80 CPU 에서 병렬 통신을 위해서는 8255등 주변 IC가 필요합니다.)

 

 

그렇지만 소형, 단순한 장치를 개발하는 경우 위와같은 주변칩이 필요하다는 것은 

 

비용및 개발기간 상승의 원인이 됩니다

 

따라서 80년대 초반이후 기존 CPU와 IO를 담당하는 주변 기기의 기능을 하나로 합친 

 

CPU들이 생산되게 되었습니다.

 

이러한 CPU를 특별히 MCU라 부릅니다(micro controller unit)

 

이때의 MCU의 의미는 기존의 CPU에 제어용의 유닛(controller unit)이 내장되었다 하여 

 

그렇게 이름붙여지게 되었습니다.

 

- 결국 기존 8bit CPU 제조사는 (대표적인 기업은 z80을 생산하던 zilog) 새로운 변화에 


대응하지 못하여 성능에서는 인텔 8086시리즈에 밀리고, 


가격에서는 MCU 칩제조사에 밀려 근근히 명맥만을 유지하는 상태가 되었습니다.-

 

이 시기의 MCU중 대표적인 기업이 (아두이노 시리즈로 유명한) ATMEL, motorola, 

 

그리고 microchip, TI 등이 있습니다.

 

기존의 CPU는 메모리영역이 데이터영역과 코드영역의 접근방식이 동일한 폰 노이만 구조를 

 

많이 사용합니다.

 

그러나 MCU는 기존의 CPU와는 달리 RISC구조, 하버드 아키텍쳐를 가지는 것들이 대부분입니다.

 

 

소형화, 경량화를 위해서 명령어 세트를 단순화한 RISC방식을 채택하고 있으며, 

 

메모리 버스자체가 외부에 노출되어 있지 않기 때문에 

 

항상 고유한 주소를 가지고 코드영역에 접근해야 할 필요성도 없습니다. 

 

따라서 코드메모리, 데이터 메모리와 IO 영역이 분리된 형태의 버스 구조(하버드 아키텍쳐)를 

 

채택하고 있습니다.

 

데스크탑 CPU와는 다르게 목적에 따라 다 품종이 생산이 되며 

 

다양한 가격대의 다양한 기능을 지닌 MCU들이 생산이 되기 때문에, 

 

가격과 목적에 맞는 MCU를 선택할수 있는 선택의 폭이 매우 넓습니다.

 

 

오늘날은 몇몇 제조사들만이 임베디드 MCU를 생산합니다.

 

살아남은 MCU 들은 ATMEL 의 AVR 시리즈, intel 의 8051 시리즈, microchip 의 PIC 시리즈, 

 

TI 의 MSP시리즈등이 있습니다. 

 

모토롤라의 MC68시리즈는 90년대까지 쓰이다가 현재는 잘 안쓰이고 있습니다.

 

 

위의 MCU들을 제조하는 제조사는 자사의 고유한 MCU구조와 명령어 세트를 가지고 있는데 

 

각 제조사 마다 명령어 세트는 거의 동일하며 

 

상위기종으로 갈수록 명령어가 더 추가되는 정도의 변화만 있습니다.

 

위의 시리즈는 대개 8bit CPU들이나 최근에는 임베디드 기기도 고성능이 필요한 경우가 

 

종종 있기 때문에  각 제조사들은 32bit 코어를 라이선스 하여 

 

전혀 다른 명령어 세트를 가진 고성능의 MCU도 생산하고 있는 추세입니다.

 

(microchip 은 MIPS core를 , ATMEL 은 ARM core 를 라이선스하여 제조하고 있습니다.)

 

 

 

임베디드 프로그래밍이란 예전에는 각 제조사에 맞는 어셈블리 언어를 이용하여 

 

프로그래밍 하는 능력을 의미했습니다.

 

그렇지만 최근에는 MCU 성능의 비약적인 발전및 그에 따른 C 컴파일러의 보급으로 

 

하드웨어적인 코드, 데이터 메모리제약이 거의 없습니다. 

 

(부족한 경우에는 더 상위의 칩을 쓰면 됩니다.) 

 

따라서 최근의 임베디드 프로그래밍은 각 MCU의 하드웨어의 특성을 이해하며 

 

C 언어로 프로그래밍을 하는 능력을 의미하게 되었습니다.

 

 

 

저는 임베디드용의 MCU의 성능이 미약하던 시절부터 프로그래밍을 해 왔기 때문에 

 

각 제조사의 MCU 아키텍쳐 각각의 어셈블리 언어를 전부 이해하고 있습니다만 

 

어셈블리 언어로 작성된 프로그램의 경우 일단은 배우기 어렵고 난해하며

 

각 기종간 이식성이 거의 없다는 단점이 있습니다.

 

따라서 현재는 매우 최적화가 필요한 경우가 아니라면 범용성을 위해서 

 

임베디드 프로그래밍도 거의 C 언어를 이용하는 편입니다.

 

 

즉 예전의 임베디드 프로그래밍은 특정 제조사 MCU 어셈블리 언어를 얼마나 

 

잘 사용하는가, 그리고 하드웨어 자원을 얼마나 효율적으로 이용하는가가 중요한 문제였습니다.

 

이러한 능력은 일반적인 데스크탑 컴퓨터에서의 개발 언어를 습득하는 것 보다도 훨씬 

 

배우기 어렵고, 시간도 많이 걸리는 일이어서 임베디드 개발자들의 인원수가 

 

범용 운영체제의 개발자들보다 훨씬 적었고, 

 

따라서 연봉등으로 더 대우를 받게 된 계기가 된 것입니다.

 

 

그렇지만 최근에는 MCU 의 성능이 비약적으로 향상되어 

 

어셈블리 언어를 전혀 알지 못하고도 프로그래밍이 가능한 시대가 되었습니다. 

 

오로지 C 언어만 가지고도 원하는 작업을 수행할 수 있게되어 

 

이제는 임베디드 프로그래밍 이라고 하면 특정 제조사 MCU 하드웨어를 얼마나 잘 이해하고 있는가, 

 

그리고 얼마나 적은량의 리소스를 가지고 

 

목적에 합당한 기능을 수행하느냐의 문제(최적화 알고리듬)가 되었습니다.

 

임베디드 MCU에 대한 대략적인 이해가 되셨는지요?

 

 

 

이번회에서는 임베디드 MCU의 개략적인 개요에 대해 살펴보았습니다.

 

다음회에는 임베디드용으로 사용되는 MCU의 대표적인 칩및 제조사의 하드웨어에 대해서 

 

몇가지를 알아보고 각 제조사별 대표적인 칩의 핀맵에 대해서 간단히 살펴 보겠습니다.

 

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

 

 

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

 

 

 

관련 사이트

 

https://jawadsblog.wordpress.com/page/5/


 

 

관련 제품

 

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


 

 

신고

[아이씨뱅큐 ICbanQ 파워블로거 2기] 임베디드 기초 2 - LED 부록

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

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

 

안녕하세요. 

고명호 입니다. 

지난번에는 정보를 표시하는 용도의 LED를 살펴 보았습니다. 

이번에는 조명용으로 사용되는 LED에 대해서 알아보겠습니다.

조명용의 LED는 일반적인 실내 조명이외에도 사용되는 분야가 많은데

대표적인 장치는 액정 모니터를 들 수 있습니다.

 

 

액정 모니터에는 액정판넬 이외에도 조명을 위한 백라이트부분이 필요합니다.

이러한 백라이트는 CCFL 또는 LED, 인버터 또는 LED driver, 도광판 등등이 필요한데 

인버터는 CCFL에서 필요한 

고압을 만드는데 이용되며 도광판은 CCFL에서 발생한 빛을 화면전체에 확산 시키는 역할을 합니다.

CCFL과 인버터, LED와 LED driver, 도광판에 대해서 간략히 알아 보겠습니다.

 

 

백색 LED가 모니터의 조명으로 사용되기전 액정모니터의 광원으로는 CCFL이 사용되었습니다.

(2000년대 초 ~ 2000년대 중반)

CCFL은 형광등이지만 일반 형광등과는 약간 다릅니다. 

액정모니터의 광원에 사용되는 형광등을 CCFL이라 부릅니다.

일반 형광등은 열음극관(Hot Cathode Fluorescent Lamp-HCFL)으로 불리는 것으로 

전극을 가열하여 열전자를 방출하고 이 열전자가 형광등 벽면의 형광물질에 부딪혀 빛을 냅니다.

 

이와 달리 냉음극관(Cold Cathode Fluorescent Lamp-CCFL)은 음극을 가열하지 않고 

전자를 방출하는데 대신에 전자를 방출하기 위해서 고압의 전압이 필요합니다. 

냉음극관의 경우 효율은 열음극관보다 떨어지지만 수명이 길고, 열발생이 적기 때문에 

자주 교체를 할 수 없는 초창기의 액정모니터에서의 광원으로 쓰였습니다.

 

또한 액정 모니터에 사용된 형광등은 화면의 양 테두리에 위치하기 때문에 그 크기가 길고 

가느다란 것이 특징입니다. 

 

 

일반 형광등에 비해서 수명이 길지만 역시 이것도 수명이 존재하기 때문에 시간이 지날수록 

백색 균일도가 떨어지고, 화면의 백색이 누렇게 바래지다가 나중에는 화면이 안들어 옵니다.

이것은 형광등의 수명이 다하여 액정은 작동하지만 화면의 광원은 꺼진상태 입니다.

(자세히 보면 화면의 내용은 보입니다.) 

 

또다른 고장으로는 인버터의 수명이 다한 경우도 있는데 

이 경우에도 마찬가지로 백라이트가 작동하지 않습니다.

2000년대 중반의 모니터는 이런식의 고장이 많이 났었습니다.

그래서 CCFL만 전문적으로 판매하는 곳도 있었고, 수리를 해 주는 곳도 있었습니다.

 

저도 CCFL을 사용한 모니터가 있었는데 거금을 들여 구입한 모니터라 애착이 많이 가서

고쳐 쓸 수 있는 방법을 연구했었습니다.

저는 제 모니터를 LED 백라이트로 바꾸는 기사를 국내 최초로 게재하였고, 

이후 많은 분들이 그 아이디어를 따라하게 되었습니다.

 

(참고사이트)



<인버터>

 

냉음극관(Cold Cathode Fluorescent Lamp-CCFL)은 음극을 가열하지 않고 전자를 방출하기 때문에 

전자를 방출하기 위해서 고압이 필요하다고 하였습니다. 이러한 고 전압을 만드는 장치가 

바로 인버터 입니다. 

 

따라서 인버터 역시 고장이 쉽게 나며 수명이 존재 합니다. 

인버터는 CCFL을 사용하는 액정 모니터에서 밝기 조절의 역할도 해 주는데, PWM방식을 사용하거나 

또는 출력 전압을 조절하는 방식으로 밝기를 조절합니다.

LED모니터에서는 이러한 밝기 조절을 LED driver가 대신 합니다. 

 

 

<도광판>

 

일반적으로 액정의 측면에서 빛을 비추는 방식을 엣지형이라고 부르는데, 엣지형의 경우에는 

빛을 화면상에 얼마나 균일하게 퍼 뜨리느냐가 중요합니다. 

이렇게 측면에서 들어온 빛을 화면 전체에 균일하게 뿌려주는 판을 

도광판이라고 부르며 액정모니터의 뒷면에 투명한 아크릴판이 바로 도광판입니다.

(그냥 단순한 아크릴판이 아니고 수많은 홈들이 촘촘히 파여 있어서 가장자리에서 들어오는 빛을 

전체 화면으로 균일하게 퍼 뜨리는 역할을 해 줍니다)

 

 

(도광판 사진)

 

 

 

최근의 모니터들은 전부 LED를 광원으로 사용하기 때문에 그 수명이 길고, 또한 

백색 균일도도 거의 일정합니다.

그래서 저는 진열장용 LED bar를 이용하여 모니터의 백 라이트를 교체 하였으나, 

현재는 CCFL이 사용된 모니터를 LED로 바꿀수 있는 킷트류가 판매되어서 

구형 CCFL 모니터를 훨씬 간편하게 LED 액정 모니터로 바꿀수 있게 되었습니다.

최근에 제가 구입한 키트입니다.

 

 

(LED 키트 사진)

 

사진을 보시면 길다란 띠에 백색 LED가 촘촘히 박혀서 CCFL형광등이 들어가는 자리에 맞추어 

넣을 수 있도록 되어 있습니다. 

정보를 표시해 주는 액정화면은 동일하며 단지 CCFL인가 LED 인가의 차이만 있기 때문에 

CCFL을 LED로 교체해 주는것 만으로도 색감이 달라집니다.

즉 CCFL을 LED로 교체하여 색감및 수명이라는 두마리 토끼를 다 잡을수 있는 것 입니다.

 

CCFL 액정 모니터의 인버터가 해 주는 역할은 'LED driver' 라는 것이 대신 해 줍니다.

인버터처럼 고압을 발생시키는 것은 아니지만 상당한 전류를 소모하기 때문에 대응 회로가 

필요합니다.

LED에 가해지는 전압을 조절하거나 PWM 방식으로 화면의 밝기를 조절 할 수 있습니다.

 

 

 

예전에 제가 LED bar로 작업할 때에는 이러한 LED driver가 없어서 화면을 항상 같은 밝기로 놓고 

사용할 수 밖에 없었습니다.

저는 CCFL 대신에 진열장용 LED bar를 사용하였고, 당시에 LED 드라이버가 없어서 그냥 12V에 

직결하여 LED모니터로 개조를 하였습니다. 

이런식으로 모니터를 살려서 15년전 모니터를 아직도 잘 사용하고 있습니다.

현재도 고전게임할때 간간히 쓰이고 있습니다.

예전처럼 부품구하러 다닐 필요가 없이 인터넷 쇼핑몰에서 구입이 가능합니다.

 

 

또한 LED는 자동차의 전조등에도 쓰이며 빔 프로젝터의 할로겐 램프도 대체하고 있습니다. 

빔 프로젝터에 쓰이는 광원의 경우 매우 밝은 빛을 내기 때문에 예전에는 백열등 대신에 

할로겐 램프를 이용하였고, 항상 높은 열이 발생하여 수명이 길지 않다는 단점이 있었습니다. 

따라서 빔 프로젝터에는 냉각용 팬 및 전구를 교체할 수 있도록 개폐식 기구물을 가지고 있었습니다.

 

 

(구형 액정 프로젝터 사진)

 

 

그렇지만 최근에는 LED를 광원으로 사용하게 되어 밝기는 조금 떨어지지만 

거의 반영구적인 수명을 갖게 되었고 따라서 냉각팬및  

개폐식 전구 교환장치는 더이상 필요하지 않게 되었습니다.

 

 

(최근 구입한 중국산 액정 프로젝터 사진) 

 

 

 

이렇게 LED는 우리 실생활에 점차 넓게 쓰여가고 있습니다.

이번에는 LED가 조명으로 사용된 몇몇 분야에 대해서 알아 보았습니다.

다음에는 본격적으로 임베디드 디바이스및 MPU에 대해서 알아 보도록 하겠습니다.

이상으로 글을 마치겠습니다.


감사합니다.

 

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

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

 

관련 사이트

 

https://en.wikipedia.org/wiki/LED-backlit_LCD_display


http://blog.naver.com/jimypage/220396579174


관련상품

 

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

http://www.icbanq.com/shop/product_detail.asp?prod_code=P000173330&catg_code=100115106

 

 

신고

[아이씨뱅큐 ICbanQ 파워블로거 2기] 임베디드 기초 2 - 출력장치(LED)

임베디드 기초 2 - 출력장치(LED)

 

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

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

 

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

지난번에는 임베디드 디바이스 입력장치의 기초인 버튼(스위치)에 대해서 알아보았습니다.

이번에는 임베디드 디바이스의 출력장치, 그중에서도 가장 제어가 간단한 LED에 대해서 

알아보겠습니다.

 

LED는 Light emitting diode 의 약어로 발광 다이오드라는 뜻인데

한방향으로 전기를 흐르는 '다이오드'이면서 을 내기 때문에 위와 같은 이름으로 불립니다.

반도체에서의 전자의 흐름으로 빛을 내기때문에 열로 손실되는 에너지가 거의 없이 

에너지 효율이 좋기때문 다양한 분야에서 이용되고 있습니다.

LED의 초기 용도는 주로 정보를 표시하는 용도 였으나 최근에는 고효율 고휘도의 백색 LED가 

상용화 되어 현재는 LED는 정보표시의 용도뿐만 아니라 조명용으로도 쓰이고 있습니다.

 

 

LED의 구조 - 출처 wikipedia >

 

맨 처음 LED가 개발된것은 1900 년도(electroluminance 현상 발견)이나 본격적으로 

상용화 된것은 1962년으로 비교적 짧은 역사를 가지고 있습니다.

LED가 상용화 되기 전에는 정보의 출력은 주로 꼬마전구등 작은크기의 백열등이 그 역할을 

담당하였으며, 또한 조명용으로는 할로겐등이나 형광등, 광원용 백열등이 주로 사용되었습니다.

 

LED가 백열등을 대체할수 있는 이유는 그 에너지 효율성에 있습니다.

백열등역시 에디슨의 발명이래 계속 성능이 향상 되었음에도 

(태생적인 한계상) 에너지 효율이 좋지 못했기 때문에 

각종 전자기기및 기계장치에서의 정보의 표시는 점차 LED로 대치 되었습니다. 

 

마찬가지로 조명용 LED는 형광등 및 백열등을 점차 대치하고 있는 추세입니다만,

조명용 LED는 비교적 최근에 개발되었고, 따라서 비쌉니다. 

비록 에너지 효율은 우수하지만 그 높은 가격때문에 아직 형광등을 전부 대치하지는 못했습니다.

현재는 컴퓨터 모니터 및 신축 건축물의 조명에 쓰이고 있는데 

컴퓨터 액정모니터의 백라이트에 사용된 형광등(CCFL)은 대부분 LED로 대치가 되었으며, 

거의 반 영구적인 수명을 가지고 있다는 장점이있지만 가격이 비교적 고가이기 때문에 

실내 조명용으로는 아직 형광등, 백열등을 전부 대치하지는 못하고 있습니다.  

오히려 기존 조명기구와 공존하는 형국으로 형광등 백열등 소켓에 삽입가능한 어댑터가 부착된 

LED 램프형식으로 판매되고 있습니다.

 

 

<백열등 소켓에 삽입 가능한 led 전구 - 출처 wikipedia>

 

에너지 효율만 보아서는 더 우수하지만 초기 비용때문에 현재는 형광등, 백열등도 함께 

사용되고 있습니다.

즉 정보표시용은 거의 LED만이 사용되는 반면에 조명용은 아직 

형광등, 백열등, LED 등이 혼재하여 사용된다고 볼 수 있습니다. 

 

조명용의 고휘도 LED의 경우 빛의 3원색전부가 개발된 것은 비교적 최근의 일로 

2000년대 초반, 중반까지도 여전히 백열등 또는 형광등이 많이 이용되었습니다.

최초 1976년 고휘도 적색 LED가 개발되었고, 1994년 고휘도 청색 LED가 개발되면서 

빛의 3원색을 전부 표시할수 있게 되어 드디어 백색광 LED가 개발및 상용화 되었고 

조명용의 LED가 본격적으로 사용되기에 이르렀습니다.

 

컴퓨터에 사용된 형광등은 일반 조명용 형광등과 약간 다릅니다.

일반 조명용 형광등은 HCFL(Hot Cathode Fluorescent Lamp-HCFL) 이라 불리우며 

고열에서의 전자가 방출되는 원리를 이용하여 빛을 내는데,  

컴퓨터 모니터에 사용된 형광등은 CCFL(Cold Cathode Fluorescent Lamp-CCFL)라 불리우며

고압에서의 전자가 방출되는 원리를 이용하여 빛을 내는 차이가 있습니다.

컴퓨터에서 쓰이는 형광등은 전류를 조금 더 소모하더라도 작고 수명이 길어야 하기 때문에 

CCFL이 사용되며 , 일반 조명의 경우에는 수명보다 효율이 중요하기 때문에 HCFL이 사용됩니다.

 

 

 

< 모니터용의 CCFL, 일반 형광등 - HCFL >

 

 

아무튼 CCFL보다 더 긴수명의 조명이 바로 백색 LED를 이용한 조명인데요, 

이번 임베디드 강좌에서는 조명용 광원은 제외하고 

나머지 다른용도, 즉 정보를 표시하기 위한 용도의 LED에 관해서 살펴볼 것 입니다.

(다음회의 게시물에는 조명용 LED에 대해 살펴 보겠습니다.)

 

예전 꼬마전구나 닉시관(nixie tube)같은 백열등의 경우 

특정 임베디드 프로세서에서 불을 켤수 있을정도로 충분한 전류를 흘려주지 못하기 때문에 

켜고 끄는것이 트랜지스터등의 외부 회로의 도움 없이는 불가능 했습니다. 

그러나 LED의 경우에는 비교적 적은 전류(20mA 이하)만을 소비하기 때문에   

대부분의 임베디드 프로세서의 출력으로 직접 LED를 켜고 끄는 것이 가능하고 

따라서 회로또한 간결해 지는 잇점이 있습니다.

 

 

일반적인 임베디드장치는 대개

 

입력 -> MPU에서의 입력된 정보가공 -> 출력

의 흐름으로 동작을 합니다.

 

TV의 리모컨을 가지고 예를 들어보겠습니다. 

 

 

TV의 리모컨 버튼이 눌림 -> 


눌린 버튼에 따라서 코드발생 -> 


각 코드에 맞게 적외선 LED를 점멸해 줌 




-> TV에서는 이 점멸되는 LED의 적외선을 읽어서 원하는 동작을 수행함..


 

 

마찬가지로 PC에서 사용되는 키보드의 경우에도 내부의 MPU가 거의 비슷한 동작을 합니다. 

눌린 키보드의 키에 대한 정보를 PS/2(USB) 형식의 값(스캔코드)으로 변환한 후 

PC의 키보드 단자(USB단자)를 통해서 스캔 코드를 전송하게 됩니다.

스캔코드의 전송은 클럭펄스및 시리얼 데이터 값이 전송되는데 이러한 값을 전송하기 위해서는 

타이밍및 충돌 검출등의 복잡한 프로그램이 필요합니다. (USB의 경우에는 더욱 복잡합니다.)

그렇지만 LED의 경우에는 단순히 켜고 끄는 동작만으로도 직접 눈으로 확인할 수 있기 때문에 

임베디드 디바이스의 출력장치중에서 가장 간단하고 확인하기 쉽습니다.

 

MPU가 사용되지 않은 가장 간단한 회로는 다음과 같이 구성할 수 있습니다.

 

그림 2-1 간단한 LED 회로 >

 

즉 BUTTON 을 입력받아 입력된 버튼이 눌린경우에는 LED 가 켜지는 회로를 만들면 

버튼이 입력됨과 동시에 LED가 켜지는 것을 확인 할 수 있습니다.

이 회로를 확장하여 입력버튼과 출력 LED 사이에 아두이노등 임베디드 프로세서를 끼워 넣어서 

다음과 같은 회로를 만들수 있습니다. 

 

< 그림 2-2 MPU를 이용한 LED 회로 >

 

이처럼 중간에 끼어 있는 임베디드 프로세서를 이용하여 복잡한 동작을 할 수 있게 됩니다.

예를 들자면 단순히 LED를 켜고 끄는 것 이외에 일정한 속도로 점멸을 시키거나 

그 이상의 아주 빠른 속도로 점멸을 해 주어서 LED의 밝기를 조절 할 수있습니다.

사람의 눈은 1/60초 이상의 빠른 동작은 인식할 수 없기 때문에 밝기가 달라진 것으로 인식하게 

됩니다.

이러한 방식의 밝기 조절을 PWM 방식이라고 합니다.(pulse width modulation - 펄스 폭 변조)

 

그런데 그림에서는 LED만 사용된것이 아니고 직렬로 저항이 삽입되어 있습니다.

LED를 MPU와 직접 연결하기 위해서는 직접 연결하는 것이 아니고 

오히려 중간에 전류 제한용 저항을 달아 주어야 합니다.

직접 MPU에 연결하면 순간적으로 많은 전류가 흘러서 LED를 손상시킬 우려가 있기 때문입니다.

정확하게는 각 LED의 스펙에 맞는 저항치를 선택하여 회로상에 직렬로 연결을 해 주어야 합니다만 

대개는 100옴 이상의 저항을 달아주면 특별한 문제는 없습니다. 

(대개 220, 330 옴 또는 1k 옴 저항을 사용합니다)

저항은 MPU와의 사이에 달거나 아니면 전원과 LED의 사이에 달거나 

둘중 아무곳에 달아도 상관은 없습니다. (전압분배)

버튼에 병렬로 연결하는 풀업저항은 MPU내부의 풀업저항이 있는경우 연결하지 않아도 상관 없으나, 

이와 달리 LED에 직렬로 연결해 주는 저항은 반드시 달아줘야 합니다.

이는 전류제한을 위해서 반드시 필요한 저항입니다.

좀더 자세하게 저항값을 조절하려면 다음 글을 참고하세요.

 

https://learn.sparkfun.com/tutorials/light-emitting-diodes-leds

 

LED도 버튼에서처럼 MPU가 5V(HIGH)를 출력할때 켜지게 하거나 

MPU가 0V(GND- LOW) 를 출력할때 켜지게 하거나를 선택할 수있습니다.

 

<1을 출력할때 켜지는 회로>

 

 

 

<0을 출력할때 켜지는 회로>


대개 LED 의 경우에는 큰 전류가 필요하지 않고 MPU의 출력핀 하나당 1개 정도의 

LED만을 구동하기 때문에 fan out이 문제 되지는 않습니다. 

따라서 대부분 5V(3.3V)를 출력할 때 켜지도록 설정을 하고 사용합니다.

단순히 한개의 LED 점멸뿐만 아니라 LED 7 개를 8 자 형태로 배치하여 

각 LED를 켜고 끔으로써 숫자를 표시할 수도 있습니다.

이런 LED를 특히 세그먼트 LED라고 부르며 전자 시계나 기타 전자기기에서 

숫자를 표시하는데 사용되고 있습니다.

 

 

 

임베디드 프로세서의 LED 점멸은 매우 간단합니다. 

그림 1의 회로에서는 I/O 핀에 1 (high)를 출력하면 LED가 켜지며 

그림 2의 회로에서는 I/O 핀에 0 (low)를 출력하면 LED가 켜집니다.

아두이노에서는 다음과 같은 명령으로 켜고 끌수 있습니다.

 

 

digitalWrite(13, LOW);

 

digitalWrite(13, HIGH);

 

 

또한 임베디드 프로세서의 경우 매우 빠르기 때문에 

단순 켜고 끄는것 이외에 매우 빠른 속도로 점멸시켜서 색의 밝기도 조절이 가능합니다.

 

최근의 대형 전광판의 경우 각 화소 하나하나에 고휘도 RGB LED를 대응시켜서 

화소의 펄스폭 변조방법으로 밝기를 조절하여 다양한 색상을 나타낼수 있습니다.

원래 전광판에는 전구가 사용되었습니다. 전광판도 고 효율의 LED로 대치되었습니다.

 

  '전광판'

 

여러 개의 전구를 평면에 배열하고 전류를 통하여 그림이나 문자 따위가 나타나도록 만든 판. 

[비슷한 말] 전광게시판.

 

 

LED를 사용한 전광판 >

 

이상으로 가장 간단히 구성 가능한 출력 장치인 LED에 대해서 알아 보았습니다.

다음번에는 LED가 조명용으로 쓰이는 예인 LED모니터를 분해해 보고 

구형 일반 모니터를 LED로 바꾸는 법에 대해서 알아보겠습니다.

 

감사합니다.

 

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

 

 

관련 사이트

 

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

https://learn.sparkfun.com/tutorials/light-emitting-diodes-leds

 

관련상품

 

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

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005627998&catg_code=

http://www.icbanq.com/shop/product_detail.asp?prod_code=P001586253&catg_code=107112114

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

 

신고

[아이씨뱅큐 ICbanQ 파워블로거 2기] 임베디드 기초 1 부록 - 고장난 버튼 수리

[아이씨뱅큐 ICbanQ 파워블로거 2기] 임베디드 기초 1 부록 - 고장난 버튼 수리

 

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

 

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

 

예전에 제 블로그에 고장난 멤브레인 패턴의 수리에 관련한 포스팅을 올린적이 있었습니다.

 

http://blog.naver.com/jimypage/220089159751

이번에는 임베디드 기초 1의 버튼관련 부록편으로 고장난 러버돔 스위치를 수리하는 법을 알아보려고 합니다.

 

러버돔 스위치는 리모콘이나 멤브레인 키보드에서 많이 쓰이는 스위치 입니다.

 

이렇게 생겼습니다.

 




 

고무가 돔으로 이루어져서(러버돔) 누르면 고무의 반발로 되돌아 가는데 

 

가운데에는 탄소 접점이 있어서 눌린경우에 

 

그 밑의 멤브레인 시트가 도통이 되는 원리의 스위치 입니다.

 

 

 

이러한 종류의 스위치는 구성이 간단하기 때문에 가격이 쌉니다.

 

그렇지만 고장나면 통으로 교체해야하기 때문에 수리가 거의 불가능 합니다.

 

게임기의 방향키등 대부분의 버튼도 두께및 가격상의 이유로 러버돔 스위치를 사용합니다.

 

 

 

다음은 구형 게임기 패미컴의 컨트롤러 입니다. 

 

 

 

이 컨트롤러는 패미컴에 붙어 있기 때문에 수리하지 않으면  게임기 자체를 사용할 수 없습니다.

 

 

 

 

커넥터 없이 이렇게 본체에 붙어 있습니다. 

 

 

 

잘 눌리지 않는 리모콘이나 위와같은 컨트롤러의 경우에는 어쩔수 없이 수리가 필요한데,

 

지난번에 리뷰했었던 컨덕티브펜이 유용하게 쓰입니다.

 

 

 

리모콘이나 오래된 러버돔 버튼의 경우 탄소패턴의 접점이 마모되는데 

 

이 마모된 패턴을 컨덕티브펜의 탄소로 보충을 해 주는 것 입니다.

 

 

 

다음처럼 탄소패턴을 기존의 버튼에 덧씌워주면 됩니다. 

 

 

 

 

엄청 간단합니다.~~~

 

단 주의사항이 있습니다

 

탄소패턴의 정착에 꽤 오랜시간이 소요되기 때문에 칠하고 난뒤 


하루 이상 실온에서 보관을 해야 합니다. 

 

안그러면 패턴이 밑의 기판에 눌어 붙어 버리는 불상사가 생깁니다.

 

 

 

이상 간략하게 버튼 관련 부록 포스팅을 마치겠습니다.

 

 

 

관련 URL

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005537195<ype=R


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

 

신고