반응형

[다시 쓰는 8051 따라하기] 8051 기초 - 메모리구조 1
+------------------------------------------------------+
게시장소 : 다음 tinyrobo
작성자 : Timy(me^^;)
작성일 : 2004.10.28
문의 : 다음카페 tinyrobo 혹은 블로그 http://electoy.cafe24.com/blog
+------------------------------------------------------+

## 8051 기초 - 메모리구조 1

/* 이번 강좌는 예전에 제가 적었던 강좌의 내용입니다. 조금만 고쳐서 그대로 올렸습니다. 똑같은 내용을 괜히 고생스럽게 또 칠필요는 없고, 그 시간에 조금 더 새로운 것을 다듬어서 올리는게 제 자신에게나 또 이 글을 볼 누구에게나 도움이 되리라는 생각에 말이죠. ^^ */


지난시간에 8051의 변종들에 대해서 언급해 봤다. 다양한 변종들이 꽤 많이 있다. 8051은 다른 MCU (micro controller unit) 들에 비해서 상당히 긴 역사와 전통(?)을 자랑하기 때문에 .... 상당한 노화가 이루어져서 거의 퇴출시기가 가까왔다고 볼수 있을것 같았다. 조금만 신경써서 주위를 둘러보면 여기저기서 치고 올라오는 기운찬 신진세력들 - 이를테면 AVR 갈은 놈들 - 이 있어서 8051 은 구시대의 유물로 사라질 것 같았다. 그런데도 8051 이 아직까지 건재한 이유는 아무래도 지금까지 해왔던 놈들의 영향때문이지 않은가 싶다... ^^

속도 높이고, 몇가지 기능만 추가하고, 하지만 여전히 그 핵심 부분은 예전의 8051 그대로이기 때문에 예전에 짜둔 프로그램을 그대로 쓸수 있다는 것이다. !!!! 그래서 여러 변종들이 계속 나오게 되고, 속도와 몇가지 부분에서 최근의 칩들이 가지고 있는 장점들을 가져다 붙이면서 8051 은 계속해서 나오고 있는 것이다.(장하다 8051 !!!)

어쨌거나 여기서 하고 싶은 것은 그 8051 코어(모든 변종들이 공통적으로 가지고 있는 8051 의 클래식한 부분 ^^;)에 대해서다. 하지만 처음 들어서 이게 뭔가 하는 그런 생각이 들것 같다. .... 어쩔수 없다. 여기서 보고, 이해 안될거 뻔하니까, 책 한번 더 보고, 그래도 잘 안될거 역시 불 보듯 하고, 한번 손으로 직접, 여기 있는 것들 + 책에 나와 있는 것들 그려 가면서 숫자 하나 하나 머리속에 그려보면서 따라와보기 바란다. 몇번 반복해야 할거다. 적어도 머리 좋은 나도 손으로 몇번씩 그려가면서 익힌 거니까, 스스로 생각하기에 머리가 나쁘다고 생각되거나 - 참고로 내 IQ 는 세자리다 ^^v (쯧쯧,... 그걸 자랑이라구.... ㅜ.ㅜ)- 아니면, 남들보다 특출나게 탁월하지 못하다고 생각되면 (이 허접한 연재를 읽겠다고 여기까지 온걸 보면 대충 알만하다 ^^; 열~~씨~~미~~ 노력해라... 그게 네 살길이다~~ ^^;),

여기 한가지 파일을 링크해 둔다. 주소를 불러주자면 이렇다.

http://www.intel.com/design/mcs51/manuals/27238302.pdf

이거 받아서 또 한번 봐라... 지난번것 못지 않게 길다.. ^^; 못지 않은 정도가 아니라, 거의 기죽일정도로 길다... ^^;
이거 다 읽기전에 자지마라...................... 고 말하고 싶지만, ................ 사실 나도 전부다 읽은 건 아니다.. ^^;

그저 대충이라도 한번 훝어보라는 야그다.... ^^ (물론 안볼줄 안다... 이해한다,,... 이런거 나보고 읽으라고 해도 싫을거다... 그저 다운받아서 어디 컴퓨터 한쪽 구석에 넣어두자, 폴더 이름도 예쁘게 지어두고 나중에 혹시나 심심할 때 볼수 있게 말이다. ... 그리고 가능하면 프린트해서 구멍뚫어 3공 바인더에 예쁘게 넣어보자, 나중에 지하철타고 어디 멀리 갈때 그럴때 이거 꺼내보자, 주위에 사람들이 존경의 눈으로 당신을 바라볼지 혹시 아나? ... 그러다 혹시 퀸카하나 건질지도.. ^^;) -> 물론 절대 그럴일은 없을게다. ㅜ.ㅜ


이 메모리가 처음 시작하는 사람들에게는 참 이상한 녀석으로 보일것이다.
필자가 처음 8051 을 시작하면서 이 메모리 구조를 보고 대체 이놈이 뭐하는 놈인가 한동안 고민을 했던 기억이 있다. 그 기억을 더듬어 그나마 조금이라도 쉽게 설명하도록 노력해 보겠지만, ... 그래도 쉽게 이해가 안갈게다. 그거, 나한테 이해 시켜 달라고 떼쓰는 놈 있으면 가만 안둔다.. ^^; 다른 책들 뒤져 보고, 직접 손으로 연습장에다가 메모리 구조에 대해서 하나 하나 그림 그려 가면서 이해해보려고 애써봐라. 그런 노력 전혀 안하고 "모르겠어요, 다시 쉽게 설명해주세요" 하는 놈(혹은 년)있으면, 정말 따라가서 한대 걷어 차 주고 싶을게다.... ^^;

잘 모르는 거야 당연히 그럴것이라고 생각하고, 그래도 알려고 노력하는 자세는 꼭 가지기 바란다. 사과나무 아래서 입벌리고 누워서 투덜대는 녀석은 친구가 생기지 않을 게다. 비록 나무에 올라가지는 못해서 붙잡고 씨름하고 있으면 사람들이 불쌍해서라도 사고 따서 던져 줄게다. 괜히 나무 아래 누워서 만유인력을 법칙을 시험하는양 폼재고 있으면 왕따된다. ^^;

우선 램과 롬을 구별하자. 램은 기본적으로 쓰고 읽기가 가능한 메모리다. 그래서 어떤 계산을 할때 잠시 계산 중간에 사용하는 이를테면 썼다 지웠다를 반복할수 있는 화이트보드같은 것이라고 생각하면 적당할 것 같다. 반대로 롬은 한번 기록된 것은 아주 특별한 방법으로만 다시 지울수 있어서 일반적으로는 쓰지 않고 읽기만 하는 메모리를 말한다. 87C256 이라는 롬이 있다. 이 롬은 롬라이터기에 넣어서 프로그램을 롬안에다가 집어넣을수 있다. 그리고 만약 프로그램이 버젼업해서 다시 수정된 프로그램을 넣고 싶으면 롬이레이저(롬지우개)라는 장치에다가 이 롬을 집어넣고 자외선은 수분에서 수십분동안 쬐서 롬안에 들어있는 내용을 날려버리고(지우고), 다시 기록해야한다. ... 무슨 말을 하고 싶냐면 말이다... 롬에다 뭘 쓴다는 것이 그렇게 쉬운 일은 아니라는 게다.. ^^; 물론 요즘 EEPROM 플래시메모리같은 것들이 많이 나와서 예전같이 어렵지만은 않지만, 그래도 램을 쓰는 것 같지는 않다는 게다. 그래서 한가지 특징이 더 있는데, 그것은 램은 전원이 나가는 순간 안에 들어 있던 내용들이 모두 사라지지만, 롬은 전원이 나가더라도 여전히 안에 있는 것들을 그대로 있다는 것이다.

8051 안에는 (조그마한 8051 칩안에는) 이런 롬과 램이 함께 들어 있다. !!!
근데, 우린 여기서 8031의 내부구조를 보기로 하자. 왜냐면 8051 안에 들어있는 롬은 쓰지 못한다고 이미 우리가 위에서 밝힌바있기 때문이다. (그래도 쓰겠다면,.... 당신 아버지.... 통장에 29만원 들어있는 사람? ??)

그렇다면 8031안에는 이 롬과 램이 얼마만큼 들어있느냐만 램은 128 바이트가 들어있고, 롬은 ... 없다. ^^;
바이트라는 단위는.... 이미 너무도 많이 들어서 귀에 익숙해졌겠지만, 한번 더 점검해본다. 1 바이트는 8 비트로 이루어진다. 1비트는 0과 1과 나눠어질수 있는 가장 최소의 단위이다.

0과 1의 의미는 아주 귀하다. 0은 전기가 흐르지 않음을 의미하고, 1은 전기가 흐른다는 것을 의미한다.
이런 약속을 하나 해보자. 1초동안 전기가 흐르면 1 흐르지 않으면 0이 된다. 그것을 계속 반복한다.
처음1초 : 전기흐름(1), 다음1초 : 전기안흐름(0), 그다음:0 그다음:1 그다음:1 그다음:1 ... 이런식으로 전기가 흐르고 흐르지 않고를 일종의 시간(혹은 그와 비슷한 어떤 개념)으로 약속한 다음에 비트를 계산하고 그렇게 계산되어진 비트를 8개를 묶에서 바이트로 부르기로 한다.

어째 하다보니 조금 이상한 쪽으로 빠진것 같긴하다..... 그래도 잘 기억해둬라, 바이트와 비트의 관계를...

8031의 내부에 있는 램은 128 바이트라고 했다. 그렇다면 이것을 비트로 계산하면 ? 한번 해봐라, 128 * 8 하면 나온다. 답은 1024 가 나올게다. 이걸 16진수로 표시하면 400h 혹은 0x400 이 된다. 2진수, 10진수, 16진수 변환은 매우 기본적인게다. 이거 잘 해두는게 나중을 위해서 편한다. ... 아무래도 다음번 강좌때는 2진수 10진수 16진수 변환을 다뤄야겠다. ㅜ.ㅜ (할게 왜 이렇게 많은거야... ㅜ.ㅜ)

어쨌거나 0x400 이 되는 내부램의 비트수를 기억해 둬라, 이걸 나름대로 8051 에서는 영역별로 나눠서 사용한다.
.... 그런데, 여기까지 썼더니 피곤하다..... 강좌시작하고 지금까지 그랬듯이 이번에도 내 맘대로 여기서 끊겠다. ^^;
다음번 강좌때 나머지 메모리 부분과 2진수, 10진수, 16진수 변환에 대해서 간단히 설명해 보겠다. ^^

+------------------------------------------------------+
[끝]
반응형

+ Recent posts