8051을 처음 접하시는 분들을 위한 질문과 대답들을 모았습니다.

 ("Q & A 형식으로 엮은 8051 기초부터 응용까지"에 유사한 내용들이 더 있읍니다.)

 

 

Q.01 : 마이콤이 무엇인가요? 마이크로프로세서와는 어떻게 다른가요?

Q.02 : 8051이 8 bit 마이콤에서 차지하는 비중은 얼마나 될까요?  특별히 8051을 선호하는 이유가 있나요?

Q.03 : 8051 과 8052의 차이점은 무엇인가요?

Q.04 : 8052의 8 KByte의 메모리에 얼마 만큼의 프로그램을 담을 수 있을까요?

Q.05 : 8051/8052의 128/256 Byte의 RAM은 충분한 분량인가요?

Q.06 : 8051칩과 PC와의 통신이 가능한가요?

Q.07 : 8051칩으로 어떤 것들을 실험해 볼 수 있나요?

Q.08 : 데이터시트에 나오는 "fully static design"이란 무엇인가요?

Q.09 : 이용 가능한 컴파일러에는 어떤 것들이 있나요?

Q.10 : 8051을 생산하는 회사에는 어떤 회사가 있나요?

Q.11 : 8051 칩 내부에 담긴 프로그램을 다른 사람이 copy하지 못하게 하는 방법이 있나요?

Q.12 : AT89C51ED2와 8051/8052은 어떤 관계인지요?

Q.13 : ATMEL 사의 FLIP 프로그램에 대해 보다 자세한 설명 부탁합니다.

Q.14 : 8051칩을 프로그래밍하기 위해서는 롬라이터가 필요한가요?

Q.15 : ISP(In System Programming)이 무엇인가요?

Q.16 : ISP를 지원하는 8051칩에는 어떤 것들이 있나요?

Q.17 : AT89C51ED2(RD2)와 T89C51RD2는 어떤 관계인가요?

Q.18 : AT89LP 시리즈는 하나의 명령을 하나의 사이클에 처리할 수 있다고 하던데...

Q.19 : 8051에 흔히 사용되는 크리스탈은 왜 11.0592 MHz인가요? (new)

Q.20 : 8051 마이콤에서 UART는 왜 필요한가요? (new)

Q.21 : 8051 마이콤을 익히는 가장 빠른 방법은 무엇인가요? (new)

Q.22 : 8051 마이콤의 패키지에는 어떤 것들이 있으며 각각의 특징은? (new)

Q.23 : 8051 마이콤으로 디자인하는 것과 FPGA로 디자인 하는 것의 차이는? (new)

Q.24 : 8051 마이콤을 공부하는데 어느 정도의 배경 지식이 있어야하는지요? (new)

Q.25 : 8051 마이콤 프로그래밍과 윈도우즈(PC) 프로그래밍은 어떻게 다른지요? (new)

Q.26 : 어셈블리어와 C 언어 중 어느쪽을 택해야 하나요? (new)

Q.27 : 8051의 ISP 가능한 횟수가 1,000번 인데, 충분한 횟수인지요? (new)

Q.28 : 더 이상 ISP가 되지 않는 8051 마이콤은 완전히 동작 불능의 상태인가요? (new)

Q.29 : 8051 마이콤은 데이터 시트에 나와 있는 동작 전압 이하에서는 동작하지 않나요? (new)

Q.30 : 크리스탈(X-tal)과 오실레이터(oscillator)는 서로 다른 것인가요? (new)

Q.31 : 8051에서 C 언어를 사용할 수 있나요? (new)

Q.32 : 8051에도 open source C 컴파일러가 있나요? (new)

Q.33 : 8051 마이콤에서 타이머(timer)란 무엇인가요? (new)

Q.34 : 8051 마이콤에서 인터럽트(interrupt)란 무엇인가요? (new)

Q.35 : PC가 해마다 성능도 좋아지고, 크기도 작아지는데, 앞으로는 마이콤이 자취를 감추게 되지 않을까요? 그렇게 된다면 굳이 8051을 익혀야 할 필요가 있을까요? (new)

 

 

 Q.01 : 마이콤이 무엇인가요? 마이크로프로세서와는 어떻게 다른가요?

A : 마이콤은 마이크로콘트롤라(microcontroller)를 줄여서 부르는 말입니다. 마이콤은 소형의 범용 컴퓨터(general purpose computer)라고 할 수 있습니다. 물론 책상 위의 PC 보다는 기능과 성능이 월등히 떨어집니다. 마이크로프로세서와 마이콤과의 가장 큰 차이점은 마이크로프로세는 주변 장치(메모리, I/O 등등)와 함께 하나의 시스템(컴퓨터)을 구성하도록끔 설계되었으나, 마이콤은 앞서 언급한 것처럼 그 자체가 (또는 간단한 주변장치만으로) 하나의 컴퓨터로서 동작할 수 있도록 설계되었습니다. 그렇다고 해서 마이콤에게 책상 위 PC의 성능/기능을 기대해서는 안됩니다. 마이콤에 직접 마우스나 LCD 모니터를 연결할 수 있는가 하면 그렇지는 않습니다. 마이콤 안에는 프로그램가능한 ROM(요즘은 대부분 플레쉬 메모리)이 있어서, 마이콤 칩과 간단한 주변회로만으로 특정 기능을 발휘할 수 있습니다. 마이콤은 우리 주변에서 흔하게 찾아 볼 수 있는데, 냉장고, 세탁기, TV, VCR, 마이크로웨이브오븐 등등에 하나씩( 경우에 따라서는 여러 개) 들어 있습니다.

 

 Q.02 : 8051이 8 bit 마이콤에서 차지하는 비중은 얼마나 될까요?  특별히 8051을 선호하는 이유가 있나요?

A  : 8 bit 계열의 마이콤에는 8051 이외에 PIC, AVR 등이 있습니다. 이 들 중 어느 것이 더 중요하고 어느 것이 덜 중요하다고 이야기하기는 어렵습니다. 제 생각에는 어느 것을 먼저 접하고 어느 것을 나중에 접하는가의 차이가 있을 뿐, 회사 생활을 오래하다 보면, 위에 언급한 마이콤 전체를 다루어 볼 기회가 있을 것으로 생각됩니다. 회사에서 마이콤을 접해보는 가장 일반적인 경우는 다음 2가지 경우가 아닐까 합니다. 첫째는 마이콤이 들어간 제품을 디자인해보는 것과, 둘째는 마이콤이 들어간 이벨류에이션 키트(evaluation kit)를 통해서입니다. 좀 더 설명 하자면, 첫 번째 경우는 마이콤이 중심이 된 디자인을 해보는 것이며, 두 번째 경우는 이벨류에이션 보드상의 주인공 역할을 하는  IC를 동작시키기 위해 보조 역할을 하는 마이콤을 익히는 것입니다.  한가지 예를 들면, 필립스사의 USB evalution 보드는 8052를 사용하고 있습니다.  한편, 8051 코아가 들어간 칩들도 있는데 사이프레스사의 USB 2.0 칩인 FX2는 칩 내부에 8051을 내장하고 있습니다.

 

 

Q.03 : 8051 과 8052의 차이점은 무엇인가요?

A :  가장 큰 차이라고 하면, 칩 안에 내장된 플레쉬 메모리의 크기입니다. 8051은 4 KByte의 메모리를 내장하고 있고, 8052는 8 KByte의 메모리를 내장하고 있습니다. 또한 내장 RAM의 크기도 차이가 있습니다.(128 byte와 256 byte) 그리고 8052가 8051보다 타이머를하나 더 가지고 있습니다. 이러한 차이는 미소하다고 볼 수 있으며, 실제로 8051을 쓸지 8052를 쓸지를 결정하는 가장 중요한 요소는 프로그램의 크기라고 말할 수 있습니다.

 

 

Q.04 : 8052의 8 KByte의 메모리에 얼마만큼의 프로그램을 담을 수 있을까요?

A :  마이콤의 8 KByte의 메모리는 PC의 메인 메모리 128/256/512 MByte와 비교하면, 상당히 작게 느껴집니다. 그러나 C 언어로 작성한 프로그램을 컴파일한 실행코드가 8 KByte 분량이 되기 위해서는, 상당한 시간을 프로그래밍에 투여해야 합니다. (자신이 직접 프로그램을 작성하는 경우에 그렇습니다. 실질적인 업무에서는 프로그램을 처음부터 끝까지 모든 부분을 다 짜는 경우는 드문일 입니다. 보통의 경우는 골격이 되는 프로그램은 어떤 형태로든 제공 또는 이미 확보되어 있고, 이것을 필요한 용도에 맞게끔 변형시키는 경우가 많습니다. ) 이 경우 소스 코드를 프린트 해 두어도 상당한 분량이 됩니다. 8051계열은 최대 64 KByte의 메모리를 내장할 수 있으므로, 메모리가 부족한 경우는 8 KByte이상의 메모리를 갖는 디바이스를 선택하여 사용하실 수 있습니다.  

 

 

 Q.05 : 8051/8052의 128/256 Byte의 RAM은 충분한 분량인가요?

A : 데스크탑 PC의 메인메모리가 대부분 128 MB 이상임을 고려하면, 8051의 128바이트 메모리는정말 적습니다. 8051이 소꼽장난을 하고 있는 것 같이도 느껴지는데, 과연 128/256바이트의 RAM이  충분한 것일까요? 답은 "그런 경우도 있고 아닌 경우도 있다"입니다. RAM 사이즈는 코드 메모리 사이즈와 균형이 맞게끔 결정되었을 것 같은데, 어플리케이션 종류에 따라, 변수(RAM)를 많이 사용해야 하는 경우도 있고, 그렇지 않아도 되는 경우도 있읍니다. 글쓴이도 코드 메모리는  부족하지 않으나, RAM이 부족한 경우를 경험해 보았읍니다. 이 경우는 같은 패밀리내에서 RAM 사이즈가 더 큰 마이콤을 선택하여 옮겨 갈 수 있읍니다.

 

 

Q.06 : 8051칩과 PC와의 통신이 가능한가요?

A : 8051에는 UART(Universal Asynchronous Receiver Transmitter)가 내장되어 있습니다. 고로 PC의 시리얼 포트를 통하여 PC와 8051 사이에 데이터를 주고 받을 수 있습니다. 물론 PC 상에 하이퍼터미널이나 새롬 데이터맨 같은 프로그램이 있어야 합니다.

 

 

Q.07 : 8051칩으로 어떤 것들을 실험해 볼 수 있나요?

A : 프로그래머는 프로그래밍을 통해서만 배운다라는 말이 있듯이, 디바이스를 직접 다루어 보는 것이 중요합니다. 8051은 비록 8 비트 마이콤이지만, 잘 활용한다면 인터럽트가 무엇이고, 어떤 경우에 인터럽트를 사용하야하는지, 타이머가 무엇이고, 어떻게 사용하며 어떤 경우에 타이머를 사용해야 하는지, 그리고 PC와의 통신을 위한 UART 사용법 등을 익힐 수 있습니다. 인터럽트, 타이머, UART등의 동작법은 32 비트 ARM 코아를 이용한 마이콤에서도 크게 다르지 않습니다.

 

 

Q.08 : 데이터시트에 나오는 "fully static design"이란 무엇인가요?

A : 디지털 회로의 가장 기본적인 구성 단위인 로직 게이트(AND, OR, NOT등을 지칭)를 트란지스타(좀 더 정확하게는 FET)로 구현하는 방법에는 static logic 과 dynamic logic 두 가지가 있습니다. 이 중 static logic의 경우에는 동작 주파수를 DC까지 낮출 수 있습니다. 예를 들면, 12MHz로 동작시키는 칩을 0.5Hz로 동작시키는 것이 가능합니다. 반면, 이상하게 들릴지도 모르겠지만, dynamic logic의 경우는 낮출 수 있는 동작 주파수에 제한이 있습니다. (오버 클럭킹에 한계가 있다는 것은 쉽게 이해가 되나, 언더 클럭킹(?)에도 한계가 있다는 것은 좀 이해하기 어렵지 않나요? DRAM의 refresh 속도(rate)를 생각해보면 그럴 것 같기도 합니다.)

 

dynamic logic의 동작 주파수를 낮추는 데 한계가 있다는 것을 한 가지 비유를 들어 설명해 보겠습니다. 두 사람이 추운 겨울에 등산을 갔다가, 약간의 내리막 경사가 진 빙판길을 만났습니다. 한 사람은 아이젠이 있어서 그 것을 신발에 착용하였는데 반해, 다른 사람은 미처 준비를 하지 못해 아이젠 없이 등산화로 빙판길을 걸어 내려가야 합니다. 아이젠을 착용한 사람은 안정되게 빙판길을 내려갈 수 있으며, 원하면 그 자리에 서서, 얼마든지 휴식을 취할 수 있으나, 등산화만 신은 사람은 빙판길에 그대로 서있을 수 없습니다. 더욱이 미끄러져 넘어지지 않기 위해서는 부지런히 몸의 균형을 잡으면서, 빙판길을 걸어서 내려올 수밖에 없습니다. 그 것도 아주 아슬아슬 하게요. 이 예에서 아이젠을 신은 사람을 static logic에 비유할 수 있습니다. 원하면, 얼마든지 현재의 위치에서 쉴 수 있는 것은 IC에서 동작 주파수를 DC까지 낮추는 것에 비유할 수 있습니다. 등산화만 신은 사람이 넘어지지 않게 부지련히 다리을 움직여 하산하는 것은 dynamic logic에 비유할 수 있습니다. 걸음을 멈추는 순간 미끄러지는 것은 IC에서 동작 주파수가 어느 정도 이상이 되어야 제대로 동작하는 것에 비유할 수 있습니다.

 

 

Q.09 : 이용 가능한 컴파일러에는 어떤 것들이 있나요?

A : 아마도 Keil 컴파일러를 가장 많이 이용하지 않을까 합니다. 이 외에도 많은 회사에 컴파일러를 판매하고 있습니다. 이벨류에이션 버전은 해당 회사 홈 페이지에서 구하실 수 있습니다.

 

 

Q.10 : 8051을 생산하는 회사에는 어떤회사가 있나요?

A : 많은 회사가 8051칩을 생산하고 있습니다. (대표적인 회사가 Atmel이고 이 밖에 필립스, 달라스, 하이닉스 등등 많은 회사에서  생산하고 있읍니다.) 아마도 국내에서 가장 쉽게 접할 수 있는 8051칩은 Atmel 사의 AT89C51이 아닐까 합니다.

(나중에 적은 이야기입니다. 2006년 6월 현재, AT89C51은 AT89S51로 대체되었습니다. AT89S51은 ISP가 가능합니다. 그밖에 기능은 차이가 없습니다. )

 

 

Q.11 : 8051 칩 내부에 담긴 프로그램을 다른 사람이 copy하지 못하게 하는 방법이 있나요?

A : 이 질문은 8051 초보자를 위한 질문은 아닌 것 같습니다만, 답은 그렇게 할 수 있다입니다. AT89C51안에 Lock bit가 있어 이것을 셋팅하면, AT89C51안의 플레쉬 메모리의 내용을 롬라이터로 읽을 수 없습니다. 고로 자신이 프로그램한 내용을 다른 사람이 copy해 가는 것을 보호할 수 있읍니다. Lock bit를 clear하는 유일한 방법은 플레쉬 메모리를 지우는 것입니다.

 

 

Q.12 : AT89C51ED2와 8051/8052은 어떤 관계인지요?

 A : AT89C51ED2는 8052를 근간으로 하면서 더 큰 플레쉬 메모리(64 KByte)와 더 많은 RAM (1792 Byte)을 가지고 있다고 생각하시면 됩니다. 그리고 가장 큰 장점은 In System Programming을 지원하는 것입니다. 즉 PC에서 Atmel사의 FLIP 프로그램을 이용하여, AT89C51ED2의 플레쉬 메모리를 프로그래밍할 수 있습니다.

 

 

Q.13 : ATMEL 사의 FLIP 프로그램에 대해 보다 자세한 설명 부탁합니다.

 A : FLIP은 T89C51RD2/ AT89C51ED2 / AT89C51RD2 등의 디바이스를 RS-232C 포트를 이용하여 프로그래밍 할 수 있는 인 시스템 프로그래밍(In System Programming) 프로그램입니다. 이곳을 클릭하면 FLIP의 스크린샷(Screen shot)을 보실수 있습니다.

 

 

Q.14 : 8051칩을 프로그래밍하기 위해서는 롬라이터가 필요한가요?

 A : 플레쉬메모리를 내장한 8051중 널리 사용되어온 AT89C5x 계열의 칩은 플레쉬메모리를 굽기 위해 롬라이터가 필요합니다. 플레쉬메모리를 굽기 위해서는 일단 8051칩을 보드에서 제거한 다음 롬라이터로 옮겨 플레쉬메모리를 굽습니다. 그 다음 다시 8051칩을 보드의 소켓에 장착합니다.

ISP를 지원하는 AT89S5x 계열의 칩은 보드상에 마이콤을 납땜을 해 둔 상태에서도, 마이콤 내부의 플레쉬 메모리를 프로그래밍할 수 있습니다. 단 ISP를 위한 단자를 미리 마련해 두어야 하겠지만요.

 

 

Q.15 : ISP(In System Programming)이 무엇인가요?

 A : 위에서 설명한 롬라이터로 플레쉬메모리를 굽는 과정을 여러번 반복할 때는 상당히 번거로운 점이 있습니다. 프로그램의 일부를 고쳐서 컴파일하고, 8051을 보드에서 제거한 다음 롬라이터로 옮기고, 굽고, 다시 보드상에 장착하고 등의 과정이 한 두 번 반복하는 것은 참을 만 하나, 이 작업을 프로그램 작업이 끝날 때 까지 반복한 다는 것은 상당히 인내심을 필요로 하는 작업입니다.

ISP(In System Programming)를 지원하는 마이콤은 마이콤을 보드에서 제거하지 않고도 프로그래밍할 수 있습니다. 상당히 편리한 기능입니다.

 

 

Q.16 : ISP를 지원하는 8051칩에는 어떤 것들이 있나요?

 A : Atmel사의 8051 칩 중에는 89S 계열의 칩이 ISP를 지원합니다. (AT89S51, AT89S52, AT89S53)그리고 AT89C51RD2, AT89C51ED2, AT89C51RC2, AT89C51RB2등도 ISP를 지원합니다.

 

 

Q.17 : AT89C51ED2(RD2)와 T89C51RD2는 어떤 관계인가요?

 A : AT89C51ED2는 T89C51RD2의 업버전 칩입니다. AT89C51RD2는 AT89C51ED2와 동일하되, EEPROM만 내장되어 있지 않습니다.

 

 

Q.18 : AT89LP 시리즈는 하나의 명령을 하나의 사이클에 처리할 수 있다고 하던데...

A : 그렇습니다. AT89LP 시리즈는 Atmel 사에서 만든 하나의 명령어를 하나의 사이클에 처리할 수 있는 8051입니다. 이 시리즈 중 일부만이 현재(2005년 3월) 샘플 공급이 가능한 것으로 알려져 있습니다. 아마도 이 칩을 손쉽게 구할 수 있게 될 때까지는 시간이 걸릴 것으로 생각됩니다.

 

 

Q.19 : 8051에 흔히 사용되는 크리스탈은 왜 11.0592 MHz인가요?

11 MHz 도 아니고, 10 MHz 도 아닌 11.0592 MHz란 클럭 주파수가 어디서 나온 것일까요? 만약 8051에 10 MHz나 5 MHz의 클럭을 사용하면 안되는가 하는 의문점을 가져 보신 분들이 계실 것입니다. Atmel 사의 AT89C51-12PC 는 fully static 하게 설계되었으므로 클럭 주파수를 0 Hz 보다 조금 높은 주파수에서, 최대값인 12 MHz 사이의 어떤 주파수에도 동작합니다. 11.0592 MHz는 PC와의 시리얼 통신(RS-232C)을 쉽게 셋팅하기 위한 클럭 주파수입니다. PC와의 시리얼 통신에 사용되는 baud rate는 모든 값을 다 갖는 것이 아나고, 1,200, 2,400, 4,800, 9,600, 19,200, 38,400, 57,600, 115,200 등등과 같은 정해진 값들 만을 갖습니다. 8051이 PC와 통신을 할 때에는 사전에 위의 속도 중 어느 속도로 통신을 할 것인가를 서로(PC측 프로그램과 8051 양 측이)가 약속을 해 두어야 합니다. 8051측에서 11.0592 MHz의 클럭을 사용하면, 위에서 언급한 baud rate(중의 일부)를 오차없이 셋팅할 수 있습니다.

 

 

Q.20 : 8051 마이콤에서 UART는 왜 필요한가요?

A : PC와의 통신을 위해 필요합니다. 그러면, 마이콤과 PC와의 통신은 왜 필요하냐고 물으실 분이 계실텐데, 응용 분야에 따라서서는 마이콤 보드에서 얻은 데이터를 PC로 올려 보내야하는 경우가 있을 수 있고, PC 쪽에서 마이콤 보드로 명령이나 데이터를 내려 보내야 할 경우도 있을 수 있습니다. 또 개발 과정에서는 UART를 이용하여 PC를 디버깅 환경으로 사용할 수도 있습니다. 즉 마이콤 상에서 실행되는 프로그램의 특정 변수값이 어떻게 변하는지를 알아보고 싶을 때, 이 값을 PC로 올려 보낼 수 있습니다. 또 과연 프로그램이 실행되면서, 어떤 함수(예를 들면 인터럽트 핸들러) 안으로 들어가는지 궁금한 경우에도, 이 함수 안으로 들어오면, PC로 특정 문자를 보내도록 할 수 있습니다. 또 보드상에 마이콤이 여러 개 있을 때, 이 들간의 통신 방법으로 UART를 사용할 수도 있습니다.

 

 

 Q.21 : 8051 마이콤을 익히는 가장 빠른 방법은 무엇인가요?

A : 이런 질문을 하시는 분은 개발자라기 보다는 학생일 가능성이 많아 보입니다. 우선은 직접 프로그램을 짜 보라고 권해 드리고 싶습니다. 수영을 책으로 배울 수 없듯이, 마이콤을 책으로 배우는데는 한계가 있습니다. 적절한 비유인지는 모르겠으나, 마이콤을 책으로만 배우는 것은, "수영을 책을 통해서 배운 다음, 만약 물에 빠지는 상황이 발생하면, 그 때 책에서 배운데로 수영을 해서 물 밖으로 나오겠다"는 것과 같습니다. 책은 배우는 과정에 있어서 반드시 필요한 부분이기는 하나, 마이콤을 직접 다루어 보지 않으면, 얻는 것이 적습니다.

요컨데, 책을 통해 얻는 지식이 있고, 실습을 통해 얻는 지식이 있습니다. 둘은 완전히 분리된 것은 아니지만, 각각의 특성은 뚜렷하며, 실습을 통해 얻을 수 있는 지식을 책을 읽어보는 것으로 얻기에는 한계가 있습니다. 마이콤의 경우는 책을 통하기 보다는 실습을 통해 익혀야 합니다.

 

 

  Q.22 : 8051 마이콤의 패키지에는 어떤 것들이 있으며, 각각의 특징은?

A : ATMEL사의 AT89S51,AT89S52, AT89C51ED2를 기준으로 말씀 드리겠습니다. 패키지에는 40핀 DIP 타입, 44핀 PLCC 타입, 44핀 TQFP 이렇게 3가지 타입이 있습니다.

 

40핀 DIP 타입은 지네처럼 생겼으며(몸통이 아주 굵은), 빵판(bread board)이나 만능 기판에 마이콤 보드를 꾸마고자 할 때는 이 타입이 가장 편리합니다. 패키지가 가장 큽니다. 물론 소켓을 사용할 수도 있습니다.

 

PLCC 타입은 소켓에 넣었다 뺏다 할 수 있는 구조입니다. 패키지는 정사각형으로 생겼으면, 핀이 J 자 형태로 구부려져 있습니다. 이 타입은 디바이스가 비싼 경우, 디바이스를 여러번 재사용하기에 용이합니다. 소켓에서 칩을 빼내기 위한 툴이 따로 있습니다. 드라이버나 송곳으로 소켓에서 칩을 빼내는 것은 상당히 어려우며, 소켓에 손상을 입힐 수 있습니다.

 

TQFP 타입은 PCB에 바로 납땜할 수 있는 타입으로 SMD 타입이라고도 말합니다. 패키지 크기가 가장 작습니다. 실제로 PCB상에 납뺌을 해 놓고 보면, 깜찍하다는 느낌이 들 정도로 작습니다. 이 타입은 일단 PCB에 붙여 놓으면, 인두를 이용하여 다시 제거하는 것이 매우 힘듭니다. 주로 양산(개발이 끝난 후 대량생산)시 사용하는 경우가 많습니다. 최근 ISP  기능을 내장함 마이콤 칩이 널리 보급됨으로 인해 개발 단계 부터 이 타입을 사용할 수 있습니다.

 

 

Q.23 : 8051 마이콤으로 디자인하는 것과 FPGA로 디자인 하는 것의 차이점은?

A : Tanebaum의 "Structured computer Organization"에 보면 다음과 같은 말이 나옵니다.

 

                 Hardware and software are logically equivalent.

                 Hardware is just petrified software.

 

즉 하드웨어와 소프트웨어는 논리적으로 같다는 말인데, 각각의 것이 더 잘 할 수 있는 영역에 있어서는 차이가 있습니다. 복잡한 콘트롤이 필요한 설계에는 마이콤을 사용하는 것이 쉽고 빠릅니다. 반면, 아주 빠른 속도로 데이터를 처리를 해야하는 경우에는 FPGA를 사용해야 하겠죠. 예를 들어 보겠습니다. 그래픽 LCD에 한글을 쓰는 작업의 경우 이 것을 FPGA로 구현하는 것보다 마이콤으로 구현하는 것이 쉽습니다. 반면, 200MHz로 들어오는 8 비트 데이터를 4개씩 묶은 뒤 암호화하여, 50MHz로 내보내는 경우, 60MHz의 마이콤으로는 처리가 불가능합니다. FPGA를 사용해야겠죠.

마이콤, FPGA, ASIC은 설계에 사용되는 메인 블록(main block)이기는 하나, 이 들은 서로 다른 장단점을 가지고 있습니다. 이 들의 차이점에 대해서는 기술자료의 다른 부분에서 언급하고자 합니다.

 

 

Q.24 : 8051 마이콤을 공부하는데 어느정도의 배경 지식이 있어야 하는가요?

A : 이런 질문을 하시는 분을 몇가지 부류로 나누어 볼 수 있습니다. 첫 번째는 전산학 전공자가, 전자공학적 지식(예를 들어 전기회로, 전자회로, 논리설계 등등)이 필요한지를 묻는 경우와, 전기,전자 전공자가 전산학쪽 지식(예를 들어 컴퓨터 아키텍쳐, O/S 등등)을 묻는 경우, 그리고 마지막으로 전기, 전자, 전산을 전공하지 않은 분들 중 취미 생활로 마이콤을 다루어 보고 싶어하는 분의 질문으로 나누어 볼 수 있습니다.

글쓴이의 개인적으로는, 배경 지식이 있으면 마이콤을 익히는데 도움이 되나, 배경 지식이 없는 것이 마이콤을 익히는데 걸림돌이 되지는 않는다고 생각합니다. 모르는 것을 하나 하나 익혀가는 것에 대한 흥미만 잃지 않는다면, 배경 지식이 있고 없고는 문제가 되지 않는다고 생각합니다.

 

 

 Q.25 : 8051 마이콤 프로그래밍과 윈도우즈(PC)프로그래밍은 어떻게 다른지요?

A : 우선 마이콤 프로그래밍은 마이콤의 하드웨어에 관한 기본적인 이해를 필요로 합니다. 그리고 이 하드웨어를 제어하기 위해, 어느 레지스터의 어느 비트를 조작 해야 하는지에 대해 잘 알아야 합니다. (또는 다르게 표현하면, 이렇게 알아 가는 과정이 마이콤 프로그래밍을 익히는 과정이라고 말할 수 있습니다.)

반면, 윈도우즈 프로그래밍에는 PC 시스템 상의 하드웨어나, 이 하드웨어를 조작하는 레지스터을 몰라도 프로그래밍을 할 수 있습니다. 그러나 이러한 과정이 없다고 해서, 윈도우즈 프로그래밍이 마이콤 프로그래밍에 비해 월등히 쉬운가 하면, 글쓴이의 개인적인 생각으로는 그렇지도 않다고 생각합니다. 윈도우즈 상에서 작은 창을 하나 띄우고, 그 창의 중심에 검은색 점을 하나 찍는 프로그램을 짜려고 해도, 상당한 분량의 윈도우 프로그래밍에 대한 배경 지식이 필요로 합니다. (비록 기계(VC++)가 필요로 하는 프로그램 골격(framework)을 만들어 준다고는 해도, 이 소스 코드를 이해하는 과정 역시 상당한 노력을 필요로 합니다.)

마이콤 프로그래밍(고상한 말로는 임베디드 시스템 프로그래밍)과 윈도우즈 프로그래밍은 비록 같은 프로그래밍의 범주에 속하기는 하나, 그 성격이 많이 다른 것 같습니다. 비슷한 점이 있다면, 익숙해지기 위해는 많은 노력이 필요하다는 것이겠죠.

 

 

Q.26 : 어셈블리어와 C 언어 중 어느쪽을 택해야 하나요?

A : 사실 이 문제는 선택의 문제가 아닌 듯 합니다. 즉 두 개를 모두 알고 있으면 가장 좋다라고 말할 수 있습니다. 성의없는 답변처럼 들릴 수 있으나, 글쓴이가 경험한 범위 내에서의 진실을 이야기하고 있습니다.

큰 규모의 프로그래밍 작업에는 C 언어를 사용하는 것이 편하나, 경우에 따라서는 C 언어와 어셈블리어를 섞어서 사용해야 할 경우가 있습니다. 예를 들어 100usec의 시간 지연을 갖는 함수를 만들 때, 명령어 갯수와 각 명령어를 실행하는데 들어가는 시간을 알아야 하는데, 이러한 시간 지연 함수는 대부분 어셈블리어로 작성되어 있습니다. 그리고, 8051의 경우는 아니지만 ARM의 경우는 리셋이 가해진 다음, 초기화하는 부분이 어셈블리어로 작성되어 있는 경우가 많습니다. 이 밖에도 다른 사람이 작성한 어셈블리어로 작성된 프로그램을 이해해야 하는 경우도 생깁니다.

 

어셈블리어를 충분히 숙달되도록 사용해 보는 것은 개발자로서는 아주 중요하고 소중한 경험이라고 말할 수 있습니다.

 

 

Q.27 : 8051의 ISP 가능한 횟수가 1,000번인데, 충분한 횟수인지요?

 A : 데이터 시트에 보면, AT89S51/52는 1,000번 AT89C51ED2는 100,000번 플레쉬 메모리에 쓰기가 가능하다고 되었습니다. 100,000번은 충분히 큰 횟수라 생각되는데, 1,000번의 경우는 어떨까요? 글쓴이의 경험을 말씀드리겠습니다. 한 때, AT89LV52칩을 롬라이터로 프로그래밍을 하면서 개발을 한 적이 있습니다. 개발이 거의 끝나갈 무렵이라고 기억되는데, 더 이상 롬라이터로 프로그램이 안되는 일이 발생했습니다. 그래서 어떻게 했을까요? 어떻게 하긴요. 다른 칩으로 계속 개발을 했지요.

여기서 말씀드리고 싶은 것은 데이터 시트에 언급된 횟수 정도 사용ISP를 하면, 더 이상 온 칩 플레쉬 메모리를 프로그래밍 할 수 없는 시기가 온다는 것이며, 비싸지 않는 디바이스(마이콤)에서, 이러한 사실을 큰 문제가 아니다라는 것입니다. 보통의 4KByte나 8Kbyte 정도의 코드 사이즈를 갖는 프로젝트라면, 1,000정도의 ISP 횟수로 충분히 개발을 끝낼 수 있을 것으로 생각됩니다.

한 가지 더 말씀드리고 싶은 것은 마이콤을 PCB에 바로 납땜하는 SMD 타입(QFP)을 사용했을 경우에는, 마이콤을 PCB에서 떼어냈다가 다시 붙이기가 쉽지 않다는 사실을 기억해야 할 것입니다.

 

 

Q.28 : 더 이상 ISP가 되지 않는 8051마이콤은 완전히 동작 불능의 상태인가요?

A : 바로 위에서 언급한 더 이상 롬라이터로 프로그램밍할 수 없는 마이콤을 글쓴이는 어떻게 했을까요? 마이콤 다리를 구부린 뒤(DIP타입이었음), 버렸을까요? 그렇지 않습니다. 그 당시 글쓴이의 생각은 온 칩 플레쉬 메모리에 프로그래밍을 하는 부분만 수명을 다했지 그 밖의 부분은 정상적으로 동작한다라고 생각했습니다. 따라서 8051 마이콤 외부에서 플레쉬 메모리와 SRAM을 붙여서 사용가능하다라고 생각했습니다. 이렇게 동작하는지를 실제로 테스트를 해봤는지는 기억이 없습니다. 그러나 지금 생각해도, ISP 수명을 다한 마이콤을 외부 메모리를 통해 프로그램을 실행토록하면 잘 동작할 것 같습니다.

 

 

Q.29 : 8051 마이콤은 데이터 시트에 나와있는 동작 전압 이하에서는 동작하지 않나요?

 A : 이런 질문을 하시는 분 중에는 마땅한 전원장치가 없어서 마이콤을 건전지로 동작시키면 어떨까하고 생각하시는 분이 계실 것 같습니다. 실제로 실험을 해본 경험을 말씀드리겠습니다. 우선 8051 마이콤에 LED를 깜박거리게 하는 프로그램을 넣고, 파워 써플라이를 통해 전원을 가합니다. 그러면, 프로그래밍한 대로 LED가 깜박거리게 됩니다. 이 상태에서 마이콤에 공급하는 전압을 낮추기 시작하여, LED의 깜박거림이 멎을때까지 전압을 낮춥니다. LED가 깜박거리지 않는다는 것은 마이콤이 더 이상 동작하지 않는다는 것입니다. (LED 공급 전압이 낮아서 LED가 깜박거리지 않는지, 아니면 마이콤이 공급전압이 낮아서 동작을 멈추었는지는 추가로 실험을 해보면 알 수 있습니다. 아니면, LED 대신 오실로스코프를 사용할 수도 있고요)

결과는 놀라왔습니다. 사용한 마이콤이 AT89C2051이었다고 기억되는데, 데이터 시트에서 언급된 동작전압보다 휠씬 낮은 전압에서도 잘 동작하였습니다. (구체적인 수치를 기억못하는 것이 아쉽습니다.)

그럼 왜 데이터시트에는 동작 전압을 타이트(tight)하게 적어두었을까요? 데이터 시트의 동작 전압은 칩 제조사에서 보장하는 동작 전압입니다. 즉 데이터 시트 상의 동작 전압은 제조사가 만든 모든 칩이 이 동작 전압 범위 내에서 문제없이 동작함을 보장함을 나타내는 수치이므로, 실제 동작 전압보다 타이트하게 적는 것이라고 생각됩니다.

 

 

Q.30 : 크리스탈(X-tal)과 오실레이터(oscillator)는 서로 다른 것인가요?

A : 하드웨어 개발자에게 위의 2가지의 차이점은 너무나도 자명한 것이겠지만, 하드웨어 개발자가 아닌 분 중에서는 모르시는 분이 계실 것으로 생각하여 설명드리겠습니다. 크리스탈(crystal, X-tal이라고도 표기함)은 두 개의 핀을 가진 소자로, 마이콤의 XTAL1, XTAL2( 경우에 따라서는 Xin, Xout 이라고 표기하기도 함. 핀 이름은 마이콤에 따라 다를 수 있음) 핀에 연결됩니다. 크리스탈의 두 개의 핀에 극성이 있는 것은 아닙니다. 크리스탈은 자체적으로는 발진(oscillation)을 하지 못하며, 마이콤 내부의 회로와 함께 발진합니다. 오실로스코프로 크리스탈 핀 들을 찍어보면, 발진 파형을 보실 수 있습니다. 한 쪽 핀의 파형은 크고, 다른 쪽 핀의 파형은 작은데, 이것이 정상입니다. 물론 주파수는 양쪽 모두 같습니다.

반면, 오실레이터는 (보통) 4개의 핀을 가진 소자로, 4개의 핀 중 2개는 Vcc, GND 핀입니다. 즉 전원이 공급되어야 동작한다는 얘기입니다. 나머지 2개의 핀 중 하나는 NC(No connect), 즉 사용하지 않는 핀이며, 나머지 하나가 발진 신호가 나오는 핀입니다. 4개의 핀 중 3개만이 실질적으로 사용되는 셈입니다. 그럼 오실레이터를 마이콤의 어느 핀에 연결해야 할까요, 오실레이터의 발진 출력이 나오는 핀을, 마이콤의 크리스탈이 연결되는 2개의 핀 중 하나에 연결됩니다. 어느 핀인지는 데이터 시트를 참조하는 것이 가장 정확합니다. (보통은 Xin으로 표기된 핀입니다.)

대부분의 경우에 있어서 8051 마이콤을 크리스탈을 이용하여 동작시키는데, 크리스탈이 오실레이터 보다 가격이 싸고 크기도 작고 오실레이터와는 달리 별도의 전원이 필요없기 때문입니다.

 

 

Q.31 : 8051에서도 C 언어를 사용할 수 있나요?

 A : 예, 가능합니다. 컴파일러를 구해야겠죠. 컴파일러에 대한 설명은 다른 부분에서 해 두었습니다.

 

Q.32 : 8051에도 open source C 컴파일러가 있나요?

 A : 예,  SDCC라고 불리는 open source C 컴파일러가 있습니다.

 

 

Q.33 : 8051 마이콤에서 타이머(timer)란 무엇인가요?

 A : 8051 뿐 아니라 거의 모든 마이콤이 타이머를 가지고 있습니다. 타이머에 대한 설명은 기술자료의 다른 부분에서 해 두었기 때문에 여기서는 중복 설명을 생략합니다.

 

 

Q.34 : 8051 마이콤에서 (interrupt) 무엇인가요?

 A : 인터럽트는 마이콤을 구성하는 중요한 부분이라고 할 수 있습니다. 인터럽트에 대한 설명은 기술 자료의 다른 부분에 해 두었기 때문에 여기서는 중복 설명을 생략합니다.

 

 

Q.35 : PC가 해마다 성능도 좋아지고, 크기도 작아지는데, 앞으로는 마이콤이 자취를 감추게 되지 않을까요? 그렇게 된다면 굳이 8051을 익혀야 할 필요가 있을까요?

 A : 글쓴이는 이 문제는 "돈"의 문제라고 생각합니다. PC가 아무리 작아진다고 해도, 이 PC 보다 싼 가격으로 만들 수 있는 것이 마이콤을 이용한 시스템입니다. 요즘(2006년 6월) 100 달러짜리 노트북을 만든다는 얘기가 들리는데, 노트북을 100 달러에 만들 수 있다면, 마이콤 보드는 더 싼 가격에 구성할 수 있습니다. 처리하는 일이 단순한 마이콤 응용 분야는 앞으로도 계속 존재할 것이며, 이러한 응용 분야가 없어지지 않는 이상은 마이콤이 PC에의해 대체 되는 일은 일어나지 않을 것 같습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                         (마지막으로 수정한 날자 : 06/13/2006) 

 

Copyright(c) 2003-2005 Reconfig Systems. All rights reserved.
 haha[고올뱅이]reconfig-systems[다앗]com (스펨메일을 막기 위해 메일계정이 종종 변경됩니다.)      
이메일 주소 무단수집 거부