소개
이 문서는 16/32-bit 마이크로프로세서인 삼성 S3C2410X에 대한 매뉴얼이다. 이 제품은 소형 사이즈이면서, 저가격, 저전력, 고성능의 마이크로컨트롤러로써, 휴대형 장치와 범용 기기에 탑재되도록 설계되었다. 시스템 제작 비용을 줄이기 위해서, S3C2410X는 각각 분리된 16KB의 명령어 캐쉬, 16KB의 데이터 캐쉬, 가상의 메모리 관리 유닛을 핸들링하는 MMU, LCD 컨트롤러(STN & TFT), NAND 플래쉬 부트 로더, 시스템 관리자(칩 선택 로직과 SDRAM 컨트롤러), 3채널의 UART, 4채널의 DMA, 4채널의 PWM 타이머, I/O 포트, RTC, 8채널의 10-bit ADC와 터치 스크린 인터페이스, IIC-BUS 인터페이스, IIS-BUS 인터페이스, USB 호스트, USB 디바이스, SD 호스트 & 멀티 미디어 카드 인터페이스, 2채널의 SPI와 클럭 발생을 위한 PLL 등을 내장하고 있다.
S3C2410X는 ARM920T 코어, 0.18um의 CMOS 표준 cell, 메모리 컴파일러 등을 이용해서 개발되었다. 이 제품은 비용과 전력에 민감한 응용분야에 적용되도록 설계되었으며, Advanced Microcontroller Bus Architecture(AMBA)라고 불리는 새로운 버스 아키텍쳐를 채택하였다.
S3C2410X는 Advanced RISC Machines, Ltd라는 회사에서 개발한 16/32-bit ARM920T RISC 프로세서를 CPU 코어로 사용하고 있다. ARM920T는 MMU, AMBA BUS, 각 8-word 라인 길이를 갖는 16KB의 명령어 캐쉬와 16KB의 데이터 캐쉬가 분리되어 있는 하버드 캐쉬 아키텍쳐로 구성되어 있다.
S3C2410X는 거의 모든 주변장치를 내장하였기 때문에 시스템 구성 비용을 최소화 할 수 있고, 추가적인 부품 장착이 없이도 여러 기능들을 사용할 수 있다. 구체적인 내용을 정리하면, 아래와 같다:
☞ 1.8V의 내부 전압, 1.8V/2.5V/3.3V 메모리, 16KB의 I-Cache/16KB의 D-Cache/MMU를
갖는 3.3V 외부 I/O 마이크로 프로세서
☞ 외부의 메모리 컨트롤러(SDRAM 컨트롤과 칩 선택 로직)
☞ 1채널의 LCD 전용 DMA를 갖는 LCD 컨트롤러(4K의 컬러 STN과 256K의 컬러 TFT)
☞ 외부의 request 핀을 갖는 4채널의 DMA
☞ 3채널의 UART(IrDA 1.0, 16-Byte Tx FIFO, 16-Byte Rx FIFO)/2채널의 SPI
☞ 1채널의 멀티-마스터 IIC-BUS/1채널의 IIS-BUS 컨트롤러
☞ SD 호스트 인터페이스 버전 1.0 & 멀티-미디어 카드 프로토콜 버전 2.11과 호환
☞ 2-포트의 USB 호스트/1-포트의 USB 디바이스(버전 1.1)
☞ 4채널의 PWM 타이머 & 1채널의 내부 타이머
☞ 와치 도그 타이머
☞ 117-bit의 범용 I/O 포트/24-채널의 외부 인터럽트 소스
☞ 전원 컨트롤: Normal, Slow, Idle, 파워-off 모드
☞ 8채널의 10-bit ADC와 터치 스크린 인터페이스
☞ calendar 기능을 하는 RTC
☞ 칩 안에 내장된 PLL 클럭 발생기
세부 사항
아키텍쳐
☞ 휴대용 기가와 범용의 임베디드 장치에 응용이 가능한 통합 시스템
☞ ARM920T CPU 코어를 내장하여 16/32-bit의 RISC 아키텍쳐와 막강한 명령어 셋을 가짐
☞ WinCE, EPOC 32와 리눅스를 지원할 수 있는 MMU를 내장한 향상된 ARM 아키텍쳐
☞ 명령어 캐쉬, 데이터 캐쉬, 쓰기 버퍼, 메인 메모리의 밴드폭과 성능의 지연(latency) 효과를 줄이기 위한 물리 어드레스 TAG RAM
☞ ARM 디버그 아키텍쳐를 지원하는 ARM920T CPU 코어
☞ 내부의 향상된 마이크로프로세서 버스 아키텍쳐(AMBA) (AMBA2.0, AHB/APB)
시스템 관리자
☞ 리틀/빅 엔디안 지원
☞ 어드레스 공간: 각 뱅크 당 128M Byte(총 1G Byte)
☞ 각 뱅크 당 8/16/32-bit의 데이터 버스 폭의 설정 가능
☞ 뱅크 0에서 뱅크 6까지 고정된 뱅크 스타트 어드레스
☞ 뱅크 7은 뱅크 스타트 어드레스와 뱅크 사이즈 조정 가능
☞ 8개의 메모리 뱅크:
- ROM, SRAM, 기타에 6개의 메모리 뱅크
- ROM/SRAM/SDRAM에 2개의 메모리 뱅크
☞ 모든 메모리 뱅크에 대한 액세스 사이클의 설정 가능
☞ 버스 사이클을 확장하기 위한 외부의 지연 시그널 지원
☞ SDRAM의 파워-다운 시에 자가-충전(self-refresh) 모드 지원
☞ 다양한 형태의 ROM 부팅 지원(NOR/NAND Flash, EEPROM, 기타)
NAND 플래쉬 부트 로더
☞ NAND 플래쉬 메모리에서 부팅 지원
☞ 부팅용 4KB의 내부 버퍼
☞ 부팅 후 NAND 플래쉬 메모리의 저장 기능 지원
캐쉬 메모리
☞ I-Cache(16KB)와 D-Cache(16KB)를 갖는 64-방향 set-associative 캐쉬
☞ 라인 당 8워드의 길이를 가지며, 1개의 유효한 bit와 2개의 dirty bit를 가짐
☞ Pseudo 랜덤 혹은 라운드 로빈 대체 알고리즘
☞ 메인 메모리 업데이트 용 write-through 혹은 write-back 캐쉬 기능
☞ 쓰기 버퍼는 16 워드의 데이터와 4개의 어드레스를 유지
클럭 & 파워 관리자
☞ 온-칩 MPLL과 UPLL:
UPLL은 USB 호스트/디바이스 동작에 사용되는 클럭을 발생
MPLL은 MCU가 최대 203Mhz@1.8V 에서 동작하도록 하는 클럭을 발생
☞ 클럭은 소프트웨어적인 컨트롤에 의해서 각각의 기능 블록에 선택적으로 공급될 수 있 음.
☞ 파워 모드: Normal, Slow, Idle, 파워-오프 모드
Normal 모드: 정상적인 동작 모드
Slow 모드: PLL을 이용하지 않는 낮은 주파수의 클럭
Idle 모드: CPU로의 클럭 공급만 중단되는 모드
파워-오프 모드: 모든 주변장치를 포함하는 코어 전력이 셧 다운
☞ EINT[15:0] 혹은 RTC 알람 인터럽트를 이용해서 파워-오프 모드에서 깨어남
인터럽트 컨트롤러
☞ 55개의 인터럽트 소스(1개의 와치도그 타이머, 5개의 타이머, 9개의 UART, 24개의 외 부 인터럽트, 4개의 DMA, 2개의 RTC, 2개의 ADC, 1개의 IIC, 2개의 SPI, 1개의 SDI, 2개의 USB, 1개의 LCD, 1개의 Battery Fault)
☞ 외부의 인터럽트 소스에서의 레벨/에지 모드
☞ 에지와 레벨의 극성 변환 기능
☞ 매우 급한 인터럽트 요구 시에 빠른 인터럽트 요구(FIQ)를 지원
펄스 폭 변조(PWM)를 갖는 타이머
☞ 4채널 16-bit PWM 타이머/1채널 16-bit의 DMA-based 혹은 인터럽트-based 동작을 하는 내부 타이머
☞ duty 사이클, 주파수, 극성의 소프트웨어적인 설정 가능
☞ 데드-존 발생
☞ 외부 클럭 소스 지원
RTC(리얼 타임 클럭)
☞ full 클럭 형태: 밀리 초(msec), 초, 분, 시, date, 일, 월, 년
☞ 32.768KHz로 동작
☞ 알람 인터럽트
☞ 틱(tick) 인터럽트
범용 I/O 포트
☞ 24개의 외부 인터럽트 포트
☞ 멀티 플렉싱의 입력/출력 포트
UART
☞ DMA-based 혹은 인터럽트-based 동작을 하는 3채널 UART
☞ 5-bit, 6-bit, 7-bit, 8-bit의 시리얼 데이터 송/수신(Tx/Rx)을 지원
☞ UART 동작에 외부 클럭(UCLK) 공급
☞ baud rate 설정 기능
☞ IrDA 1.0 지원
☞ Loopback 모드로 테스트
☞ 각 채널은 내부에 16-byte의 Tx FIFO와 16-byte의 Rx FIFO를 가짐
DMA 컨트롤러
☞ 4채널의 DMA 컨트롤러
☞ 메모리 간, I/O에서 메모리, 메모리에서 I/O, I/O 간의 전송 지원
☞ 전송률 향상을 위한 Burst 전송 모드
A/D 컨버터 & 터치 스크린 인터페이스
☞ 8채널의 멀티플렉싱 ADC
☞ 최대로 500KSPS와 10-bit 해상도
STN LCD 디스플레이
☞ 3가지 형태의 STN LCD 패널 지원:4-bit 듀얼 스캔, 4-bit 싱글 스캔, 8-bit 싱글 스 캔 디스플레이 형태
☞ 모노크롬 모드, 4 gray 레벨, 16 gray 레벨, 256 컬러와 4096 컬러의 STN LCD 지원
☞ 멀티 스크린 사이즈를 지원
- 실제 스크린 사이즈: 640×480, 320×240, 160×160, 등등
- 최대 가상 스크린 사이즈는 4Mbyte
- 256 컬러 모드에서의 최대 가상 스크린 사이즈: 4096×1024, 2048×2048,
1024×4096 등등
TFT 컬러 디스플레이
☞ 1, 2, 4, 8 bpp(bit-per-pixel)의 팔레트 컬러 디스플레이 지원
☞ 16 bpp의 non-팔레트 트루-컬러 디스플레이 지원
☞ 24 bpp 모드에서 최대 16M 컬러 지원
☞ 멀티 스크린 사이즈를 지원
- 실제 스크린 사이즈: 640×480, 320×240, 160×160, 등등
- 최대 가상 스크린 사이즈는 4Mbyte
- 64K 컬러 모드 시의 최대의 가상 스크린 사이즈: 2048×1024, 등등
와치도그 타이머
☞ 16-bit의 와치도그 타이머
☞ 타임-아웃 시 인터럽트 요구 혹은 시스템 리셋
IIC-Bus 인터페이스
☞ 1채널의 멀티-마스터 IIC-Bus
☞ 시리얼 8-bit의 양방향 데이터 전송은 표준 모드에서 100Kbit/s이며, 빠른 모드에서는
400Kbit/s까지 업이 가능
IIS-Bus 인터페이스
☞ DMA-based 동작을 위한 오디오 인터페이스에 1채널의 IIS-Bus가 사용됨
☞ 채널 당 시리얼, 8/16-bit 데이터 전송
☞ Tx/Rx에 128Byte(64-Byte + 64-Byte) FIFO
☞ IIS 포맷과 MSB-justified 데이터 포맷을 지원
USB 호스트
☞ 2-포트의 USB 호스트
☞ OHCI Rev. 1.0으로 컴파일
☞ USB 스펙 버전 1.1과 호환
USB Device
☞ 1-포트의 USB 디바이스
☞ USB 디바이스에 5개의 엔드포인트
☞ USB 스펙 버전 1.1과 호환
SD 호스트 인터페이스
☞ SD 메모리 카드 프로토콜 버전 1.0과 호환
☞ SDIO 카드 프로토콜 버전 1.0과 호환
☞ Tx/Rx 시에 byte FIFO
☞ DMA-based 혹은 인터럽트-based 동작
☞ 멀티미디어 카드 프로토콜 버전 2.11과 호환
SPI 인터페이스
☞ 2채널의 시리얼 주변장치 인터페이스 프로토콜 버전 2.11과 호환
☞ Tx/Rx 시에 2×8 bit의 쉬프트 레지스터
☞ DMA-based 혹은 인터럽트-based 동작
전압의 동작 범위
☞ 코어: 1.8V
☞ 메모리: 2.5V/3.3V
☞ I/O: 3.3V
주파수의 동작 범위
☞ 최대 203MHz까지 동작 가능
패키지
☞ 272핀의 FBGA 타입
2007/11/02 - [임베디드/ARM] - S3C2410 카메라 인터페이스
2007/11/02 - [임베디드/ARM] - S3C2410 IIS
2007/11/02 - [임베디드/ARM] - S3C2410 IIC-BUS INTERFACE2
2007/11/02 - [임베디드/ARM] - S3C2410 프로그래머의 모델