본문으로 이동

미디어위키 1.45 안정화가 거의 끝났습니다. 다만 Flow 확장 기능 관련 이슈가 있어서 대체하는 작업을 수행할 계획입니다.

  1. 큰숲백과:청사진에서 위키 발전의 대략적인 방향성을 제시했습니다. 의견이 있으신 분은 큰숲백과토론:청사진에서 의견을 남겨주시면 좋겠습니다.
  2. 기능상의 오류로 지원하지 않고 있는 기능에 대해서는 큰숲백과토론:이슈 트래커에 요약했습니다. 참고하시기 바랍니다.
  3. 데이터베이스 덤프 받고싶으신 분은 큰숲백과 가입 후에 사용자토론:Bigforest에 의견 남겨주시면 ftp 주소, 계정, 비밀번호를 특수:EmailUser를 통해서 공개할 예정입니다.

인텔 8051

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
Senouis (토론 | 기여)님의 2023년 8월 23일 (수) 19:03 판 (→메모리 구조)


인텔 8051은 1980년 인텔에서 발표한 마이크로컨트롤러로, CISC ISA를 쓰는 마이크로컨트롤러 중 지금까지도 가장 잘 쓰이는 장수만세 MCU이다.

구조

주요 기능

메모리 구조

인텔 8051 칩은 범용 CPU처럼 내부에 직접 내장된 레지스터가 없고 그 대신 존재하는 내부 메모리 공간(Internal RAM)에 직접 데이터를 읽고 쓰는 구조이다. 겨우 128byte에 불과하지만, 바로 이 메모리에만 읽고 써서 레지스터 뱅크, 특수 레지스터, 통신 포트 등을 제어하며 모든 장비를 움직일 수 있다. 그 외에 프로그램 메모리와 데이터 메모리로 연결된 버스가 있으며 8bit 프로세싱 마이크로컨트롤러지만 데이터 버스는 16bit Adressing이 가능하여 최대 64KB까지 인식할 수 있는 별도의 SRAM 등을 연결할 수 있다. 그런데 괴상한 것은 ROM 내 프로그램을 싣는 프로그램 메모리와 평범한 연산용 값들이 들어있는 데이터 메모리 영역이 나뉘어 있는 하버드 구조처럼 보임에도 실제로는 프로그램 코드와 데이터를 MCU로 가져올 때 외부 RAM의 버스를 공유하기에 고전적인 폰 노이만 구조로 작동한다는 것이다. 즉 프로그램 영역과 데이터 영역에 동시 접근할 수 없다(…). 역시 발로 CPU 만들어도 잘 팔리는 인텔 제품답다 보통 포트 0.X 핀들과 포트 2.X 핀들에 연결한 단일 메모리 내 처음 4KB 영역이 프로그램 메모리, 그 이후 60KB 영역이 데이터 메모리다.

인텔 8051의 Internal RAM 구조
영역 역할
0x80~0xFF 특수 레지스터 영역. 스택 포인터와 누산 레지스터 같은 전용 레지스터도 있고, 포트 I/O 수행, 레지스터 설정 등이 가능한 시스템 레지스터도 있다.
0x30~0x7F 데이터 영역. 추가적인 범용 레지스터처럼 쓸 수도 있고 스택 영역으로도 쓸 수 있다. 보통은 스택의 용도로만 사용한다.
0x20~0x2F 비트 플래그 레지스터, 16바이트의 영역이지만 이곳의 레지스터들은 단일 비트로 되어 있어서 128개의 번지를 가진다. 이곳의 레지스터 번호들은 여기에 접근하도록 되어 있는 전용 명령어가 있어 다른 유형의 8051용 레지스터들의 주소 체계와 구분하여 사용하기 때문에 혼동될 일은 없다.
0x00~0x1F 0x08 단위로 끊어지는 4개의 레지스터 뱅크(레지스터 윈도우라고도 한다). 각 뱅크에는 8개의 8bit 레지스터가 매핑되어 있으며 특수 레지스터 영역의 Program Status Word 내 RS0와 RS1 2개 bit 값으로 사용할 뱅크를 선택할 수 있다. CPU가 연산에 내부적으로 사용하는 결과는 보통 여기에 기록한다.

I/O