[Firmware기법] 1. 대가리말
블로그를 시작한 참에 처음으로 강좌 비스무리한 글을 남겨보고자 한다. 그 첫번째로 소형 시스템의 (8bit 급의 수kbyte 코드) 펌웨어링에 대한 얘기를 해 볼까 하는데, 이 글을 보는 사람이 누구던 간에 아주 기초적인 부분을 포함하여 쓰도록 하겠다. 기본적인 CPU의 동작에서 부터 어떻게 주변장치(IC, LCD 등등)를 붙여 나갈것인가, 그리고 그것을 어떻게 "C"로 구동시킬 것인가에 대한 순으로 이야기를 이끌어 갈 것이다. 그리고 후반부에서는 좀더 고급스러운 "C" 펌웨어링에 대해 이야기를 할 것이다. 디지털 공학, 컴구조, C언어 등은 알고 있다고 가정한다.

우선 디지털에 대한 이야기를 좀 해보도록 하자,

디지털과 아날로그의 차이는 연속성과 이산성에 있다. 실수와 정수의 차이쯤이라고 생각하면 되는데, 예컨데 정수 0과 1사이에는 어떠한 정수값도 없다, 하지만 실수 0과 1사이에는 0.5실수가 있고, 또 다시 0과 0.5사이에는 어떠한 실수값이 있을 것이다. 흔히들 이진수체계가 디지털이라고 생각하지만, 실제로는 진수체계 자체가 디지털인 것이다. 이를 전자공학, 컴퓨터등과 관련되어 생각해 보면, 특정 시간에서의 전위값을 숫자에 매핑 시킨다. 예를들어 TTL레벨이라 하면 5V전위를 "1" 0V전위를 "0"에 매핑 시키고 트랜지스터로 구성된 저장기 또는 계산기에서 이를 처리한다. 중요한 사실은 5.5V도 1이고 4.8V도 1이다.

1+0을 계산하기 하는 과정을 보자. 입력이 두개고 출력이 하나인 트랜지스터로 구성된 장치가 있다. 이 장치의 한쪽 입력에 5V 다른쪽 입력에 0V 전위를 가하면 출력핀에 5V 전압이 걸려, 사용자가 "아 1+0은 1이구나" 라고 알 수 있게 된다. (여기에 대한 세부적인 사항은 범주를 벗어나므로 디지털 공학 관련 책을 보면 되겠다.)이 이야기를 한 이유는 앞으로 우리가 H/W를 설계하던, 프로그래밍을 하던 이러한 근본적인 원리가 있음을 잊지말자는데 있다.

영화 매트릭스의 네오처럼 언제가는 프로그래밍을 하면서 전압 파형이 보이는 경지에 도달 할 수 있을것이다. 또 프로그래머라면 마땅히 그리 해야 된다고 생각한다.

이 이야기에 등장하는 CPU는 대부분의 상용 CPU를 대표한다, 여기서 대표한다는 의미는 일반적인 상용 CPU가 비슷비슷한 구조로 (코어의 의미가 아니고 외부 인터페이스가)생겨 먹었기 때문에 가능한 얘기가 된다, 따라서 우리의 이야기 꺼리용 CPU인 GAE0707(개공칠공칠) 프로세서를 이해하면 다른 프로세서에 대한 혹은 전반적인 시스템 설계에 대한 포석이 마련될 것이다.

그럼 2장에서는 GAE0707를 토대로 외부에서 바라본 CPU 구조에 대해 설명하도록 하겠다.
by 개터래기 | 2005/07/25 16:10 | Firmware | 트랙백 | 덧글(2)


< 이전페이지 다음페이지 >