Intel PXA255pds8.egloos.com/pds/200803/21/35/Intel_PXA255.pdf · 2008. 3. 20. · PXA255 Core...

43
Intel PXA255 Ez-Gate를 구현하기 위한 ARM Processor Yongjin Kim CASP Lab. Hanyang Univ. [email protected]

Transcript of Intel PXA255pds8.egloos.com/pds/200803/21/35/Intel_PXA255.pdf · 2008. 3. 20. · PXA255 Core...

  • Intel PXA255

    Ez-Gate를 구현하기 위한ARM Processor

    Yongjin KimCASP Lab. Hanyang [email protected]

  • PXA255의 기본 특징

    하나의 MMU 컨트롤러분리된 Instruction과 Data MMU컨트롤러MMU

    512-Byte2-KByteMini Data Cache

    8-KByte32-KByteData Cache

    16-KByte32-KByteInstruction Cache

    SA-1 코어ARM Version 4호환

    XScale 코어ARM Version 5TE ISA와 호환(ARM

    Thumb 명령, ARM DSP 명령지원)CPU Core

    SA-1110PXA-255항 목

    SA1110과 호환되며 SA1110에서 동작하던 어플리케이션은 소스의 수정 없이재활용이 가능하다.

  • PXA255의 Block Diagram

  • PXA255의 전반적인 특징

    ▪ 16체널 DMA 컨트롤러

    ▪ LCD 컨트롤러

    ▪ 브루투스** 인터페이스

    ▪ IrDA, I2C, I2S, AC97을 지원하는 시리얼 포트

    ▪ 3개의 UART (하나는 Full H/W Flow Control 제공)

    ▪ SPI

    ▪ SSP

    ▪ USB End Point 인터페이스

    ▪ MMC/SD Card 지원

    주변기능들

    ▪ 100MHz의 메모리 버스와 함께 집적된 메모리와PCMCIA/Compack Flash 컨트롤러 제공

    ▪ 17개의 인터럽트 가능한 I/O포트, Real Time Clock, Watchdog/Interval 타이머, Power Management

    Controller, Interrupt Controller, Reset Controller, 두개의 내부 오실레이터를 포함하는 System

    Control Module

    I/O확장

    ▪ 저전력(Low Power)모드와 터보(Turbo) 모드제공

    ▪ 32KB Data/32KB Instruction Cache 제공

    ▪ 스트림 데이터를 위한 2KB Mini-Data Cache 제공

    ▪ 2.5V 와 3.3V 메모리 지원

    저전력

    ▪ 32비트 인텔 XScale Core기반의 CPU로 200, 300, 400MHz 까지의 동작을 저전력으로 지원

    ▪ ARM* 아키텍쳐 버젼 5TE와 호환

    ▪ 저전력으로 높은 코어속도를 위해 0.18um 처리를 이용한 Intel의 슈퍼 파이프라인 RISC 기술채택

    높은 퍼포먼스

    상세 설명특 징

  • PXA255 Memory Map

    Static Chip Select 0 (64MB)0x0000 0000

    Static Chip Select 1 (64MB)0x0400 0000

    Static Chip Select 2 (64MB)0x0800 0000

    Static Chip Select 3 (64MB)0x0C00 0000

    Static Chip Select 4 (64MB)0x1000 0000

    0x0000 0000 - 0x17FF FFFF까지의 영역이 총 6개의 뱅크로 구성되며, 한뱅크당 64Mbytes의 크기를 가진다. 이 뱅크들은 SA-1110에서는128MByte단위의 구성으로 되어 있어 한 뱅크당 사용하지 않는 빈 공간이 많다는 점을 것을 감안한 것이 아닌가 싶다. 또한 SA-1110에서는 VLIO들의 지연처리를 위한 영역으로 뱅크 4,5번만이 쓰였지만, 이PXA-255에서는 이 VLIO들에 대한 지연처리가 6개의 모든 뱅크들에서가능하다.

    각 뱅크영역들은 nCSx핀들에 의해 실렉트가 신호되며, nCS0핀은스테틱뱅크0번 영역을, nCS1핀은 스테틱뱅크 1번 영역을, nCS2핀은스테틱뱅크 2번 영역을, nCS3핀은 스테틱뱅크 3번 영역을, nCS4핀은스테틱뱅크 4번 영역을, nCS5핀은 스테틱뱅크 5번 영역을 선택한다

    Static Chip Select 5 (64MB)0x1400 0000

    Static 메모리 영역

    --0x1800 0000예약

    PCMCIA/CF-Slot 0(256MB)0x2000 0000

    0x2000 0000 - 0x3FFF FFFF영역은 PCMCIA를 위한 영역으로 두개의 소켓영역으로 구성되며 각 소켓의 크기는 256MByte이다.

    PCMCIA/CF-Slot 1 (256MB)0x3000 0000PCMCIA 메모리 영역

    그밖의 기능에 대한 레지스터 영역0x4000 0000

    LCD 레지스터영역0x4400 00000x4000 0000 - 0x7FFF FFFF영역은 SA1110을 위한 레지스터들에 대한 영

    역으로 할당된다.

    메모리 컨트롤러 Register 영역0x4800 0000

    내부 레지스터 영역

    0x4C00 0000

    --0ㅌ9C00 0000

    예약

    SDRAM Bank 0 (64MB)0xA000 0000

    SDRAM Bank 1 (64MB)0xA400 0000

    SDRAM Bank 2 (64MB)0xA800 0000

    0xA000 0000 - 0xACFF FFFFH 영역은 DRAM을 위한 영역으로 할당된다. 이 공간은 4개의 뱅크들로 구성되며 각 뱅크의 크기는 64M Byte 공간을 갖는다. 이 DRAM 영역 역시 SA-1110에서는 128MByte 뱅크 4개로 구성되었었다.

    이들은 nSDCSx핀들에 의해 실렉트 신호가 나오게 되는데 nSDCS0은 뱅크0번영역을, nSDCS1은 뱅크 1번영역을, nSDCS2은 뱅크 2번영역을, nSDCS3은 뱅크 3번영역을 선택한다.

    SDRAM Bank 3 (64MB)0xAC00 0000

    SDRAM 영역

    0xB000 0000

    --0xFFFF FFFF

    예약

  • PXA255 Core Register 1

    ▪ DSP Coprocessor(CP0)

    이는 40비트의 어큐뮬레이터와 이 Coprocessor 공간에 8개의 새로운 동작들을 포함

    ▪ MMU를 위한 Page 접근을 사용할 경우 Page 테이블에 X비트라 새로운 비트가 추가

    ▪ Coprocessor 15(CP15)에 새로운 기능이 추가

    ARM 확장 기능

    ARM V5와 호환 가능하며 이런 특징들 중에 ARM V4에서 추가된 것들을 보면 아래와 같다.

    ▪ 1-KByte크기의 Tiny Page(MMU관련)

    ▪ 데이터 값을 0으로 만드는 CLZ 명령

    ▪ ARM의 향상된 Thumb 명령들(32비트 명령들의 기능과 같이 동작하도록 만든 16비트 ARM 명령셋을 말한다),

    ▪ Breakpoint 명령들(BKPT)

    ▪ System Control Coprocess(CP15) 수정

    ▪ Big/Little 엔디안 지원(선택하기 위하여 Coprocessor(CP15)의 Register 1의 B비트(비트7)를 사용한다.)

    ARM 호환 기능

    내 용비 고

    인텔의 XSclae 코어는 ARM V5TE와 호환되는 코어로 높은 퍼포먼스에 비해 낮은 전력을 사용한다. 이 ARM Version 5 아키텍쳐는 ARM Version 4(참고로 이전 모델인 SA-1110은 이 ARM Version 4 코어를 사용했었다.)에 Floating Point 명

    령등을 포함하여 새로운 기능을 추가하여 탄생되었다. 인텔 XScale 코어는 이 Floating Point 연산에 대한 하드웨어적인 지원은 하지 않고 ARM V5의 Integer 명령들을 포함하고 있으며, ARM

    V5T의 humb 명령셋들과 ARM V5E의 DSP확장을 지원한다.

  • PXA255 Core Register 2

  • PXA255 Core Register 31. Little/Big 엔디안 (ARM 호환)

    Little/Big 엔디안 데이터 타입을 모두 지원하며, Little/Big 엔디안중 어느 모드를 사용할 지는CoProcessor 15(CP15)의 Register 1의 B비트(비트7)을 설정하여 선택한다. 리셋 후 프로세서의 디폴트는Little 엔디안이며, Big 엔디안 모드로 바꾸기 위해서는 메모리에 접근하기 전에 이 B비트를 1로 설정해야 한다.

    2. 데이터 타입 (ARM 호환)ARM Version 4 이상인 경우 아래의 3가지의 데이터 타입을 모두 지원하지만, 그 이하 버전은 Byte와Word만을 지원한다. Xscale은 ARMV5호환이므로 모두 지원한다.

    32 비트 (Words는 4Byte 경계로 정렬되어야 한다.)Word

    16 비트 (Halfwords는 2Byte 경계로 정렬되어야 한다.)Halfword

    8 비트Byte

    크 기타 입

  • PXA255 Core Register 43. 프로세서 모드 (ARM 호환)

    아래의 표에서 Xscale에서 지원되는 모드를 보이며, 이 모드들의 변환은 소프트 웨어적인 처리나 인터럽트나 예외로 변환가

    능하다.

    ARM 아키텍쳐 Version 4번 이상에 존재하는 모드로 우선권을 가진 Os의 태스크를 실행한다.

    예외모드에서 사용되는 추가적인 레지스터들의 사용을 피하면서 시스템 리소스를 사용

    하기 위한 모드로 사용된다.

    SYSSystem

    하드웨어 Coprocessor에 대한 소프트웨어적 Emulation 지원모드이다.UNDUndefined

    가상 메모리 또는 메모리 보호모드이다. ABTAbort

    OS을 위한 보호모드이다.SVCSupervisor

    일반적인 인터럽트 처리모드이다.IRQIRQ

    빠른 인터럽트 처리 모드이다.FIQFIQ

    일반 프로그램 실행 모드로 이 모드에서 실행되는 프로그램은 시스템 자원의 접근이 금지되

    며, 자체적으로 모드를 바꿀수 없다.USRUser

    실 행모 드프로세서

  • PXA255 CoreRegister 5

    4. 레지스터 (ARM 호환)

    31개의 일반목적에 사용되

    는 32비트 레지스터들을 가

    지고 있으며, 이들 중 16개

    의 레지스터는 언제든지 사

    용가능하고, 나머지는 예외

    처리의 속도를 높이기 위하

    여 각 모드에 따라 레지스

    터의 맵핑을 위하여 사용된

    다.

    SPSR_fiq

    SPSR_irqSPSR_undSPSR_abtSPSR_svc

    CPSRCPSRCPSRCPSRCPSRCPSRCPSR

    R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)

    R14_fiqR14_irqR14_undR14_abtR14_svcR14_svcR14

    R13_fiqR13_irqR13_undR13_abtR13_svcR13_svcR13

    R12_fiqR12R12R12R12R12R12

    R11_fiqR11R11R11R11R11R11

    R10_fiqR10R10R10R10R10R10

    R9_fiqR9R9R9R9R9R9

    R8_fiqR8R8R8R8R8R8

    R7R7R7R7R7R7R7

    R6R6R6R6R6R6R6

    R5R5R5R5R5R5R5

    R4R4R4R4R4R4R4

    R3R3R3R3R3R3R3

    R2R2R2R2R2R2R2

    R1R1R1R1R1R1R1

    R0R0R0R0R0R0R0

    Fast Interrupt

    InterruptUndefinedAbortSupervisorSystemUser

    Exception 모드들

    Privileged 모드들

    모드들

  • PXA255 Core Register 64.1. R0-R7(The Unbanked Register)

    모든 모드에서 공통적으로 쓰이는 일반 용도의 레지스터 들이다.

    4.2. R8 - R14 레지스터(The Banked Register)R8 - R12는 FIQ모드에서만 뱅크로 존재하며 R13 과 R14는 좀 특별한 레지스터로 모든 모드에 대해 각자의 뱅크를 가지고 있다. 이들의 이름은 [Rxx_모드이름] 의 명칭을 사용한다. 즉, FIQ의 맵핑된 R12는[R12_fiq]라 부른다.

    4.2.1. R13 레지스터 (스택 포인터)R13 레지스터는 SP로 알려진 스택포인터로써 사용되며, ARM 어셈블리어에서 “SP”은 "R13"과 같다. 스택에 관해 데이터를 넣거나 빼오는 PUSH/POP등의 명령어는 제공하지 않지만, ARM 명령어에서 보게될 LDM/STM명령어를 사용하여 응용할 수 있다.

    4.2.2. R14 레지스터 (Link 레지스터)이 레지스터는 Link Register 또는 LR로 불려지며 하는 일은 각 서브함수에서 리턴할 곳의 주소를 가지게 된다. 만약 서브루틴에서 BL로 함수를 호출했다면 R14에는 그 함수가 끝나고 돌아 올 서브루틴의 리턴주소를 가지게 된다. 즉, 그 서브루틴의 리턴은 PC(R15)에 R14을 넣음으로써 이루어 진다. ( MOV PC,LR )이 R14는 각 모드별로 별도의 뱅크가 존재하는데 만약 예외 상황 이라면 IRQ모드로 진입하여 R14_irq가쓰이고 있을 때 IRQ로의 재진입이 이루어 진다면 R14_irq를 덮어 쒸우게 된다. 이때에는 수동으로SP(R13)를 이용하여 스택에 R14값을 보관해 두었다가 복구하는 과정을 가져야 한다. 이 리턴 주소가 필요가 없다면 R14는 또한 일반목적 레지스터로도 쓰일 수 있다. ARM 어셈블리어 에서 "lr"은 "R14"와 같다.

  • PXA255 Core Register 74.3. R15 레지스터 (Program Counter)

    Program Counter(PC)로 사용되는 이 레지스터는 현재 진행중인 명령의 포인터(위치)를 가지고 있어, 이

    R15에 어떤 주소를 넣어주면 그곳으로 분기할 수 있다. 따라서, 이 레지스터는 다른 용도로 사용할 수

    없다는 것을 뜻한다. ARM 어셈블리어에서 "pc"은 "R15"와 같다.

    4.4. CPSR (Current Program Status Registers)

    현재 동작중인 프로세서의 상태를 표시하는 Current Program Status Register (CPSR)에 대하여 살펴보면

    다음장의 표를 보면 CPSR은 예외 모드마다 별도의 SPSR(the saved program status register)를 가지고 있음

    을 볼 수 있다. System 모드와 User모드에서는 SPSR이 없는데 이는 예외 모드가 아니기 때문이다. 이 레

    지스터는 4개의 조건코드 플래그(Negaive, Zero, Carry와 oVerflow)와 2개의 인터럽트 금지 비트(I, F),

    ARM명령이 실행 중인지 Thumb 명령[1]을 실행 중인지를 나타내는 비트(T), 5개의 현재 프로세서모드

    를 나타내는 비트(M0,M1,M2,M3,M4)를 포함한다.

    [1] Thumb 명령이 Thumb 명령은 16비트 또는 더 좁은 메모리 데이터 버스라인에서 동작하는 ARM 퍼포먼스를 더 좋게 하기 위하여만들어 진 명령어 집합으로 ARM명령어의 서브셋이며 모든 Thumb명령은 16비트로 구성되어 있다.

  • PXA255 Core Register 8

    Mode 비트들M0 에서 M4까지의 모드 비트는CPU의 6개의 동작 상태를 나타낸다.

    0..4

    T 플래그 Arm 아키텍쳐 version 3 이하에서는 반드시 0으로 세팅되어야 했던 비트로 현재 실행중인 명령이 ARM 명령인지(T=0), Thumb 명령(T=1)인지를 나타낸다.

    5

    F 플래그 이것이 셋되었을 때 FIQ 인터럽트를 금지시킨다6

    I 플래그 이것이 셋되었을 때 IRQ 인터럽트를 금지시킨다.7

    O 플래그 오버플로우가 일어났을 경우 셋된다.28

    C 플래그 CMN명령비교, CMP 비교, 쉬프트 동작등에서 자리올림, 내림이 발생했는가에 따른다.29

    Z 플래그 연산의 결과가 0이 되었을 경우에 셋된다.30

    N 플래그 두개의 부호있는 정수의 연산의 결과가 마이너스인 경우에 셋된다.31

    설 명비 트

  • PXA255 Core Register Exceptions 11. Exceptions (예외) (ARM 확장)

    예외라 하면 외부로 부터의 인터럽트 요청이나, 예상치 않은 Instruction코드의 실행으로 인해 발생되는

    일련의 이벤트이다. 이때 예외동작을 실행하고 다시 원래 루틴으로 돌아가기 위하여 프로세서의 상태

    와 레지스터들의 값을 저장하고 복구하는 과정을 거쳐야 한다.

    ARM의 예외벡터는 아래와 같으며 이곳에는 점프하고자 하는 곳의 주소가 들어 있는 것이 아니라 그

    곳으로의 점프코드가 들어있다.

    인터럽트의 우선순위는 Reset, Data Abort, FIQ, IRQ, Prefetch Abort, Undefined Instruction, SWI 순이며

    이런 예외가 발생하였을 경우 High Vector인지 판별 후 해당 루틴으로 점프하게 된다.

    0xFFFF001C0x0000001CFIQFIQ(Fast Interrupt)

    0xFFFF00180x00000018IRQIRQ(Interrupt)

    0xFFFF00100x00000010AbortData Abort(Data Access Memory Abort)

    0xFFFF000C0x0000000CAbortPrefetch Abort (Instruction Fetch Memory Abort)

    0xFFFF00080x00000008SupervisorSoftware Interrupt (SWI)

    0xFFFF00040x00000004UndefinedUndefined Instruction

    0xFFFF00000x00000000SupervisorReset

    High Vector AddressNormal AddressModeException Type

  • PXA255 Core Register Exceptions 21.1. Reset

    리셋이 들어오면 프로세서는 즉시 실행을 멈추고, 해당 루틴을 실행한다.

    1.2. Undefined ARM 프로세서가 Coprocessor 명령을 실행할 때 외부 Coprocessor로 부터 아무런 응답이 없을 경우 발생되는 예외이다.

    1.3. 소프트웨어 인터럽트(Software Interrupt Exception)소프트웨어 인터럽트 명령어(SWI)를 사용하였을 경우 발생되는 예외이다.

    1.4. Prefetch AbortXScale 코어는 Instruction MMU Abort, External Instruction Abort, Instruction Cache ParityError의 3가지Abort 타입을 갖고 있으며, 이 예외들은 명령어를 메모리로 부터 읽어 을 때 그 메모리에 접근할 수 없을경우에 발생되는 예외이다. Coprocessor 15(CP15)의 Fault Address Register(FAR)에 이 예외가 발생한 곳의 주소를 가지고 있으며, 어떤 예외가 발생했는지는 Fault Status Register(FSR)의 비트10, 비트3, 비트2, 비트1, 비트0의 값으로 나타나며, Instrucion MMU Exception은 0b10000의 값을, External Instruction Error Execption은 0b10110의 값을, Instruction Cache Parity Error Exception은 0b11000의 으로 나타난다.

    1.5. Data AbortXScale 코어의 Data Abort 예외는 Precise와 Imprecise 두개의 타입을 갖는다. Precise Data Abort는R14_abt에 항상 예외가 발생된 명령의 PC(+8)를 포함하는 반면, Imprecise 타입은 R14_abt가 수행할 다음명령의 주소인 PC(+4)를 갖는다.이 예외는 데이터를 메모리로 부터 읽어 오는데 그 메모리에 접근할 수 없을 때 발생되는 예외이다. 이는 MMU로 부터 발생되는 Fault들(Translation Fault, Domain Fault, Permission Fault), 예약된 메모리로의접근, 확장메모리로의 접근시 외부 Abort Pin의 시그널이 들어왔을 때 등이다.

  • PXA255 Core Register Exceptions 31.6. IRQ

    일반 인터럽트예외로 GPIO핀과 같은 외부 핀 또는 내부타이머나 시리얼로부터의 해당 시그널이 들어오고, 인터럽트가 인에이블 되었고 IRQ로 설정되었을 때 발생하는 예외이다. [인터럽트컨트롤러] 부분을 참조하라.

    1.7. FIQ빠른 인터럽트예외로 GPIO핀과 같은 외부 핀 또는 내부타이머나 시리얼로부터의 해당 시그널이 들어오고, 인터럽트가 인에이블 되었고 FIQ로 설정되었을 때 발생하는 예외이다. [인터럽트컨트롤러] 부분을 참조.

    관련정보

    1. 예외발생시 동작각 예외가 발생하였을 때 하는 일은 비슷하며 여기서는 IRQ가 발생하였을 때의 동작을 예를 들어 보도록 한다. IRQ 예외가 발생하면, SPSR_irq에는 CPSR을 넣어 저장하고, CPSR의 모드비트들는 0b10010을넣어 프로세서를 IRQ 모드로 정하고 T비트에 0을 넣어 ARM 명령상태로, I비트에 1을 넣어 일반 인터럽트를 금지시킨다. 여기서 F비트는 변하지 않는다. 그 다음 High Vector냐 아니냐에 따라 PC에0x00000018 나 0xFFFF0018을 넣어 해당루틴으로 가게 된다. 이때 R14_irq에는 돌아갈 주소의 리턴주소정보가 들어간다. 들어올때 저장해야할 레지스터나 기타 정보가 있다면 저장해야 한 후 일련의 작업을수행해야한다. 해당일을 수행하고 나서 리턴할 때는 PC(R14_irq로 부터)와 CPSR(SPSR_irq로 부터)이복구된다. 이때 또한 들어올때 저장했던 정보들을 함께 복구시키고 리턴해야한다.

  • Memory Management Unit (MMU)XScale 프로세서에 의해 생성된 주소는 가상 주소(virtual address)라 부른다.

    MMU는 이 가상주소를 변환테이블(Translation Table)이라 불리는 맵핑테이블을 통하여 다른 물리주소로 맵핑시키게 된다.

    물리주소는 메인메모리영역에 접근되어지는 영역을 가리키도록 하는 일을 하는 유닛을 말한다.

    메모리에 대해 이러한 방식으로의 사용은 다양한 방식으로 물리메모리 영역을 다룰수 있게 한

    다. 예를 들자면, 같은 영역의 메모리를 사용함으로써 잠재적으로 주소맵을 충돌시킬수 있는 서로 다른 프로세스에게 하나의 물리메모리 주소에 다른 가상메모리를 맵핑하여 서로 다른 메모

    리를 할당하기 위하여 또는 물리주소에서 멀리 떨어져 있는 자원에 대한 접근을 요구하는 어플

    리케이션에게 가상메모리의 인접하는 영역을 사용할 수 있도록 할 수 있다.

  • MMU 동작 1MMU가 제대로 동작하기 위해서는Coprocessor 15의 Register 2(First Level Translation Table Address)의 메인메모리물리주소 영역에 정확히 설정된

    Translation Table(변환테이블)이 있어야한다. 이는 부트로더나 시스템 초기화시이 Translation Table을 정확히 설정한 후에 MMU를 인에이블 시켜야 한다는 것을 의미한다.

    가상주소를 물리주소로 변환하기 위하

    여 이 Translation Table에서 변환맵핑을찾게 되는데 이 과정을 "Translation Table Walk"라고 부르며 이는 하드웨어에 의해 자동적으로 이루어 지게 되며

    위의 그림에서 Translation Table Walk Hardware가 담당한다.

  • MMU 동작 2매번 이 Translation Table Walk를 하면 Translation Table Walk중에 적어도 한번이상의 메모리 접근이 발생되고되고 이로써 속도저하가 일어날 수 있기 때문에, 이것에 대처하기 위하여 Translation Table Walk의 결과는Translation Lookaside Buffer(TLB)에 캐쉬하여 사용된다. 이 TLB는 하나의 단일한 메모리 인터페이스를 갖는시스템은 하나의 통합된 TLB를 가진며, 분리된 Instruction과 Data 메모리 인터페이스를 갖는 시스템에서는Instruction 과 Data TLB를 각각 분리하여 가진다. PXA255의 경우에는 분리된 TLB를 가지고 있다.

    따라서, 메모리에 접근할 때 처음에 MMU는 TLB안에서 가상주소를 찾게 된다. (Data와 Instruction TLB를 갖는 시스템에서는 Instruction Fetch를 위해선 Instuction TLB에서 찾고 다른 모든 타입에 대해서는 Data TLB에서찾는다.)

    만약 TLB가 가상어드레스에 대한 앤트리를 포함하고 있지 않다면 Translation Table Walk 하드웨어는 메인메모리에 있는 Translation Table로부터 정보데이터를 읽어오게 된다. 이렇게 한번 가져오면 이 정보는 TLB안에존재하며 안쓰는 엔트리나 또는 존재하는 엔트리에 덮여 쓰여진다.

    이렇게 해서 찾은 변환맵핑 데이터에는 변환타입, 주소, Access Permission(접근권한), 도메인정보(D), 캐쉬를할것인지(C), 버퍼링을 할것인지(B)등이 들어가 있다. 주소에는 변환타입에 따라 메모리의 물리영역의 주소가 될 수도 있고, 두번째의 Translation Table의 베이스 주소가 들어가 있을 수도 있다.

    Access Permission(접근권한) 비트와 Domain(도메인)은 이 접근을 허용할지를 결정한다. 만약 접근권한이 거부된다면 MMU는 XScale 프로세서에 Memory Abort 시그널을 주고 아니라면 계속 진행한다.

    이 정보 중 C비트와 B비트를 통해 캐쉬와 Write Buffer를 제어하는데 사용되어 지고 이 접근이 캐쉬될 것인지아닌지를 결정한다. 이후 메모리 접근에 대해서는 C비트와 B비트에 따라 캐쉬를 통할것인지 버퍼를 통할 것인지 직접 외부 메인메모리로 접근할 지가 결정되는 것이다.

  • MMU Enable/Disable MMU는 System Control Coprocessor 15의 Register 1의 비트[0]에 씀으로써 인에이블/디스에이

    블 시킬 수 있다. 리셋후에는 이 비트는 0으로 초기화 되며 MMU는 디스에이블 상태가 된다.

    MMU가 디스에이블일 때 메모리의 접근은 Dcache와 Write Buffer의 사용은 할 수 없으며,

    Memory Access Permission에 대한 것은 체크하지 않는다. 이때 모든 접근 가상주소는 물리주소

    와 같다.

    MMU가 인에이블되기 전에, 알맞은 Translation Table이 메모리에 설정되어야 하며

    Coprocessor15의 Register 2번이 이 Translation Table의 베이스주소를 갖도록 설정 되어야 한다.

  • 가상-물리 주소 변환 과정 1MMU는 메모리 접근은 "섹션접근"과 "페이지접근"으로 나뉘어 진다.

    섹션접근은 1MB블럭단위로 접근하며, 페이지접근은 1KB메모리 블록으로 구성되는 Tiny 페이지, 4KB블럭으로 구성되는 Small 페이지, 64KB블럭으로 구성되는 Large 페이지 3가지가 있다.

    섹션접근과 Large Page는 TLB에 있는 하나의 앤트리를 사용해 넓은영역의 메모리로 맵핑이가능하다.

    이런 방식들의 차이로 인해 메인 메모리에는 두가지 레벨의 Translation Table로 First-Level Table과 Second-Level Table이 있을 수 있으며, 섹션접근은 이중 First-Level Table만 있으면 되고, 페이지 접근은 First-Level Table과 Second-Level Table이 필요하다. First-Level Table의 내용물은 섹션접근을 사용할 경우 섹션에 대한 주소를 가지며, 페이지접근의 경우에는 Second-Level Table에 대한 주소를 갖는다. 이 페이지 접근에서 Second-Level Table은 Large 와 Small 페이지 변환정보를 갖게 된다.

  • 가상-물리 주소 변환 과정 2

    가상주소로의 접근 시 물리주소로의 변환을 위한 대략적인 그림

  • 가상-물리 주소 변환 과정 31. Translation Table의 베이스 주소2. First-Level 주소변환3. First-Level 디스크립터4. 섹션접근의 경우

    4.1. First-Level 디스크립터의 비트의미4.2. 섹션접근에서의 가상에서 물리주소로의 변환

    5. 페이지 접근의 경우5.1. First-Level 디스크립터의 비트의미5.2 Second-Level 디스크립터5.3. 페이지접근중 Large Page 접근에서의 가상에서 물리주소로의 변환

  • 접근권한(Access Permissions) (AP)

    읽기/쓰기 가능읽기/쓰기 가능xx0b11

    읽기만 가능읽기/쓰기 가능xx0b10

    접근불가읽기/쓰기 가능xx0b01

    예측불가.예측불가110b00

    읽기만 가능읽기만 가능100b00

    접근불가읽기만 가능010b00

    접근불가접근불가000b00

    User PermissionPrivileged PermissionRSAP

  • 메모리메모리 컨트롤러컨트롤러 11XScale PXA255은 Synchronous[1] Dynamic Memory(SDRAM), Synchronous/ Asynchronous Burst Mode[2] 또는 Page-Mode Flash, Synchronous Mask ROM (SMROM), Page Mode ROM, SRAM, Variable Latency I/O(VLIO), 16-비트 PC Card 확장 메모리(PCMCIA), Compact Flash에 대한 외부메모리 버스 인터페이스를 지원한다. PXA255은 이들에 대하여 각각 사용할 수 있는 메모리영역을 SDRAM, Static Memory, Card Memory 3개로 나누고 있다. SDRAM영역은 4개의 뱅크로다시 나뉘며, Static Memory영역은 6개, Card 영역은 2개의 뱅크로 구성된다.

    [1] Synchronous (동기화된) Memory

    이 메모리는 CPU의 클럭 타이밍에 맞추어 동기화되어 동작하는 메모리로 메모리 컨트롤러가 요청한 일

    에 대한 완료되는 시점의 정확한 클럭 싸이클을 알 수 있으므로 프로세서가 메모리에 억세스하는 동안

    의 대기하는 시간을 없앨 수 있어 결과적으로 속도개선이 이루어 진다.

    [2] 버스트(Burst) 모드

    프로세서가 하나의 주소지정을 요구할 때 자동적으로 한 블럭의 연속된 주소지정을 가져옴으로써 각각

    의 주소지정을 해줄필요가 없이 연속적인 읽기/쓰기가 가능하도록 하는 기능으로 신속한 읽기/쓰기 가

    가능하다.

  • 메모리메모리 컨트롤러컨트롤러 22

  • 롬(ROM)

    우리가 가장 많이 접하게 될 메모리의 이다.

    플래쉬 메모리는 EEPROM보다 집적도가 높고 집적도가 높아 상대적으로 작은 크기에 대용량이 가능하며고속으로 데이터를 읽고 쓸 수 있다는 장점이 있어 임베디드 시스템에서 많이 쓰이고 있는 메모리이다. 이플래쉬 메모리에는 크게 NOR 형과 NAND 형이 있다.

    FLASH ROM

    빠른 읽기 속도를 가지며 전기적으로 삭제가 가능하기 때문에 프로그램을 지우고 다시 쓰는일은 빠르지만, 제조공정

    상 집적도가 낮아 크기가 크며 제조비용이 높다는 단점이 있다EEPROM

    빠른 읽기 속도와 집적도가 높다. 하지만, 프로그램을 지우고 다시 쓰는 일이 힘들기 때문에 많이 사용하지는 않는다.EPROM

    PROM은 내부가 퓨즈로 되어 1회 사용만 가능한 롬이다.PROM

    ROM을 제조하면서 데이터를 고정하여 넣은 롬을 말한다. 가격이 싸며 모든 개발이 끝나 롬의 내용을 변경할 필요가

    없는 응용에 쓴다. 가격면에서 경제적이다. Mask ROM

    설 명메모리종류

    읽기, 쓰기가 바이트화(Random Access가능)가 가능하지만 쓰기/지우기가 느리다는 단점

    과 이 NAND 형보다 만들기가 어렵기 때문에 가격이 비싸다는 단점이 있다.

    용도로는 코드저장용으로 쓰이며 인텔과 AMD사등에서 생산되고 있다.

    Nor형 플래쉬로 인텔의 플래시 메모리가 많이 쓰이고 있는데 인텔제품은 크게 스트라타

    플래시와 부트블럭 플래시 이렇게 두 종류로 나뉜다. 이중 스트라타 플래시에 대한 접근은

    [리눅스 환경설정]의 [JTAG 편]에서 다룬다

    NOR 형

    프로그램/소거가 빠르다는 장점이 있지만 읽기/쓰기가 바이트화가 불가능하다는 단점과

    함께 읽을 때 일반적인 방법으로 메모리에 접근하여 읽어올 수 없고 소프트웨어적 처리를

    통하여 수행해야 하기 때문에 번거롭다는 단점이 있다. 하지만, 가격이점과 소프트웨어 기

    술이 발전하면서 여러 시스템에 적용한 사례를 볼 수 있다. 주 용도로는 대용량 데이터 저

    장형으로 쓰이며, NAND형은 도시바, 삼성등에서 생산하고 있다

    NAND 형

  • PXA255은 4개의 16비트-데이터너비, 32비트-데이터너비의 SDRAM 파티션을 지원하고, x8, x16, x32 SDRAM을 지원한다. 각 뱅크는 64-MByte로 구분되지만, 실제 크기는 SDRAM의 크기에 달려있다. 총 4개의 뱅크는 0/1페어, 2/3페어로 두개의 페어(짝)로 나누어 관리하며 같은 페어에 속한두개의 뱅크에 쓰이는 SDRAM은 같은 것이어야 하지만, 페어들간에는 다를수 있다.

    PXA255는 SDRAM에 대해 Normal 모드일 동안은 자동 리플레쉬(CBR) 동작을 하며, Sleep 모드일동안을 위하여 Self-Refresh 동작을 지원한다.

    OCSDCLK[2]

    SDRAM Clocks.뱅크 0/1과 2/3의 SDRAM의 CLK핀에 연결된다. 내부메모리컨트롤러 클럭 속도 또는 그 반의 속도록 구동된다. 리셋후의 디폴트는 메모리컨트럴러클럭속도의 반으로 구동이다.

    OCZSDCLK[1]

    SDRAM과 Synchronous Static Memory Clock Enable로 사용되며 SDRAM의 CKE 핀에 연결한다.메모리 컨트롤러의 Control Register의 비트에 의해 사용여부 결정된다.

    OCSDCKE[1]

    모든 뱅크의 SDRAM에 대한 CAS(Column Addrss Stobe)OCZnSDCAS

    모든 뱅크의 SDRAM에 대한 RAS(Row Addrss Strobe).신호이며 SDRAM의 RAS 신호에 연결된다.OCZnSDRAS

    바이트실렉트 신호 : 0~3에 대한 SDRAM DQM(Data output Mask Enable)신이며 SDRAM의 DQM 신호에연결된다.

    OCZDQM[3:0]

    뱅크 0~3의 SDRAM에 대한 뱅크 Select 신호이다.OCZnSDCS[3:0]

    Memory Write Enable신호이다.OCZnWE

    Memory Data Bus. 상위 16비트 데이터버스이다.ICOCZMD[31:16]

    Memory Data Bus. 하위 16비트 데이터버스이다.ICOCZMD[15:9]

    15 multiplexed bank/row/column Address 시그널이다.OCZMA[24:10]

    설 명타입핀이름

    Synchronous DRAM Memory 1

  • SDRAM 21. [SDRAM] MDCNFG 레지스터

    MDCNFG레지스터는 읽기/쓰기 레지스터로 SDRAM뱅크에 대한 환경설정을 위한 제어비트들을 포함하고 있으며, 두개의 페어(짝 : 0/1뱅크 , 2/3뱅크)으로 나뉘어져 있다. 같은 페어 안의 뱅크들은 반드시같은 타입의 SDRAM 디바이스를 사용하여야 하고, 페어들간에는 달라도 된다.

    [SDRAM] Mode Register Set Configuration (MDMRS) 레지스터MDMRS 레지스터는 SDRAM으로 Mode Register Set(MRS) 명령을 통해 넘겨준다. 이 레지스터에 쓰여지는 값은 MRS 명령동안 직접적으로 MA[24:17] Address Line에 놓여지고. MA[16:10]에 대해서는 고정된 값 또는 MDCNFG 레지스터로부터 나온 값들이 Address Bus에 놓여진다. 이 레지스터에 새로운 값을쓰는 것으로 MRS 명령을 시작하고, 이는 MDCNFG레지스터에서 인에이블시킨 메모리 뱅크에 대해서만 일어나므로, 새로운 값을 쓰기 전에 MDCNFG레지스터에서 미리 해당 메모리 뱅크를 인에이블 시켜야 한다. 원하는 동작을 위해서 이미 MDCNFG 레지스터의 모든 값들이 정확하게 설정되어 있어야 한다.

    3. MDREFR 레지스터DRAM에 대하여 살펴보았듯이 SDRAM은 리플레쉬가 필요하며, 이 동작을 제어하기 위하여 MDREFR 레지스터는 두개의 SDRAM 페어들에 대한 제어비트들을 포함한다. PXA255의 SDRAM 리플레쉬가 일어나는 경우는 아래와 같다. ☞ 내부에 있는 리플레쉬카운터가 증가하다가 설정된 값에 도달하면 리플래쉬가 일어난다.☞ 리플레쉬 카운터가 0으로 클리어되었을 때는 SDRAM은 리플레쉬 되지 않는다.☞ 디스에이블된 SDRAM 영역으로 접근되었다면, 모든 4개의 뱅크에 대한 리플레쉬가 일어난다.☞ 4개의 SDRAM 뱅크가 모두 디스에이블 이라면, 리플레쉬 카운터는 디스에이블된다.이 레지스터의 각 필드의 값들은 메모리클럭주파수(MEM_CLK)와 관련이 깊으므로 MEM_CLK에 따라적용되는 값도 달라짐을 유의해야 한다. 이곳에서 설정한 값들은 클럭주파수가 변했다면, 레지스터들의 값이 변하지 않더라도 결과적으로 결과적으로 리플래쉬와 리플레쉬 카운터가 리플래쉬를 간격을 리셋시키기 때문에 반드시 다시 써야 한다.

  • SRAM 인터페이스PXA255는 쓰기에 대해 바이트선택을 하기 위하여 DQM 핀을 사용하는 16비트- 또는32비트 Asynchronous SRAM에 대한 인터페이스를 제공한다. nCS[5:0]은 SRAM 뱅크를선택하는 칩 실렉트 시그널로사용되고, nOE 핀은 읽기에, nWE핀은 쓰기에 사용된다. Address 비트 MA[25:0]은 뱅크당 64MByte까지 지원한다.SRAM에 대한 읽기접근은non-Burst ROM에 대한 읽기접근과 같다.

    0b001로 설정하여야 한다.

    MSCx:RTx필드

    다른 메모리 공간으로의 접근을 위하여 현재 데이터버스를 해제하도록 하기 위한 해제시간을설정한다. 이 지연은 같은 뱅크의 연속적인읽기 접근에 대해서는 사용되지 않는다.

    MSCx:RRR필드

    쓰기 싸이클 동안 nWE의 동작기간을 설정한다.

    MSCx:RDN 필드

    SRAM에 대한 첫번째 접근시 이 메모리 클럭 싸이클의 기간후 유효 데이터로 취급된다.

    MSCx:RDF 필드

    내 용

    필 드

  • Flash 메모리 인터페이스

    ▪ 플래쉬 메모리 영역은 unCacheable과 unBuffered여야 한다.

    ▪ 플래쉬 메모리는 Burst 쓰기가 않되며, 데이터 버스의 길이는 플래쉬디바이스의 너비와 같아야 한다. 즉, 32비트 버스에

    바이트 쓰기는 하지 못한다. 쓰기 가능한 것은 16비트 버스에 2바이트 쓰기, 32비트 버스에 4-바이트 쓰기이다.

    ▪ 플래쉬에 대한 Asynchronous 쓰기를 할 경우에는 명령과 데이터를 메모리 컨트롤러로 각각 주어야 하며 이때 첫번째는

    명령을 주고, 두번째 데이터를 주어야 한다.

    ▪ 메모리 컨트롤러는 플래쉬쓰기 전에 어떤 다른 명령을 넣지 않으므로 소프트웨어가 쓰기명령과 데이터를 정확한 순서로

    써야 한다.

    ▪ 플래쉬쓰기는 Burst될 수 없고, DMA가 플래쉬에 쓸 수 없다.

    플래쉬 쓰기

    ▪ 플래쉬의 디폴트는 Read-Array 모드이기 때문에, 플래쉬로 부터 Instruction을 캐쉬할 수 있으며, 또한 DMA를 사용하여 읽

    을 수 있다.

    ▪ 메모리 컨트롤러가 자동으로 플래쉬에 명령을 쓰지 않기 때문에, 소프트웨어상에서 읽기전에 읽기명령을 플래쉬에 쓰고

    읽어야 한다.

    플래쉬 읽기

    내 용동 작

    다른 메모리 공간으로의 접근을 위하여 현재 데이터버스를 해제하도록 하기 위한 해제시간을 설정한다. 이 지연

    은 같은 뱅크의 연속적인 읽기 접근에 대해서는 사용되지 않는다.MSCx:RRR필드

    Burst Flash에 대한 연속적인 읽기접근시간 설정과 non-Burst Flash에 대한 읽기 싸이클동안 nWE의 Low 기간을

    설정한다.MSCx:RDN 필드

    NonBurst-Flash에 대해서는 각 읽기 접근때 Burst Flash에 대해서는 첫번째 읽기접근때 이 메모리 클럭 싸이클

    의 지연기간후 유효 데이터로 취급된다. 이 필드는 또한 플래쉬로의 쓰기 싸이클 동안 nWE가 Low로 되어

    있는 시간을 제어한다.

    MSCx:RDF 필드

    내 용필 드

  • Boot 메모리 사용PXA255은 총 6개의 부트 환경을 가지고 있으며, 이들은 BOOT_SEL(2:0)에 의해 결정된다. 아래 테이블은 이들 핀의 조합에 따른 부트환경이다.

  • CLOCK CLOCK 관리자관리자 11

  • CLOCK CLOCK 관리자관리자 22PXA255의 클럭 입력은 3.6864 MHz 크리스탈이 PXTAL과 PEXTAL핀에 연결되고, 32.768KHz 크리스탈이 TXTAL과 TEXTAL핀에 연결된다. 이들을 위해 오실레이터들와 PLL들이 PXA255 내부에 집합되어 있어 클럭을 만들어주기 위한 크리스탈 외의 어떤 외부디바이스도 필요하지

    않다. 이들 크리스탈은 3.6864MHz오실레이터와 32.768 KHz 오실레이터로 연결되어 진다. 3.6864MHz 오실레이터는 내부 PLL들(100-400 Mhz PLL, 147.46 MHz PLL, 95.846 MHz PLL)로연결되어 여러 유닛들로의 클럭을 제공하는데 이중 CPU 코어의 제공 클럭은 Turbo 모드 사용시 최대 400MHz까지 사용할 수 있다.

    하지만, Turbo 모드를 사용하였다고 시스템의 퍼포먼스가 좋아진다고 딱잘라 말할 수 없는것이 외부 디바이스들(특히 메모리)가 이 속도에 따라와 주지 못한다면 대기시간이 생기기 때문이다. 또한, 속도가 빨라지면 더 많은 전력을 사용한다.

    그림에서 PXBus라 되어 있는 버스는 코어, DMA/Bridge, LCD Controller, Memory Controller 사이의 버스이다. 이 버스의 속도는 Run 모드 주파수/2이다. 즉 200MHz의 코어주파수 속도를 사용한다면, 100Hz의 속도를 갖는다.

  • 32.768KHz 오실레이터32.768KHz 오실레이터는 Real-Time Clock(RTC)와 Power Manager Logic에 주어지는 낮은 전력

    을 소모하는 낮은 주파수 오실레이터이다.

    하드웨어 리셋후에는 디스에이블 상태이며, 이 클럭대신에 3.6864MHz 오실레이터가 쓰인다.

    32.768 KHz 오실레이터의 클럭이 안정된 후에 32.768KHz 오실레이터를 사용하기 위해서는

    Ocillator Configuration Register(OSCC)에 있는 비트를 세팅하여 가능하게 해주어야 한다.

    이 32.768KHz 오실레이터의 사용은 옵션사항이며, Sleep 모드 동안 낮은 전력을 사용하도록

    할 수 있다. 낮은 전력소모를 필요로 하지 않는 디바이스는 OSCC 의 비트를 클리어 시켜서

    32.768KHz를 디스에이블 시키고, 외부핀에 크리스탈을 연결하지 않고 플로팅상태로 두어도

    된다.

    이렇게 32.768KHz 크리스탈이 없는 시스템의 RTC와 Power Manager는 3.6864MHz를 112로 나

    눈 32.914KHz를 사용한다.

  • 3.6864MHz 오실레이터 13.6864 MHz 오실레이터는 On-Chip PLL 주파수 증폭기, Synchronous Serial Port(SSP), Pulse

    Width Modulator(PWM)과 Operating System Time로 연결되어 클럭을 제공한다. 하드웨어 리셋

    후에는 RTC와 Power Manager(PM)또한 이를 통해 구동한다.

    이들 중 3.6864MHz 오실레이터에 관련된 PLL은 3개 존재하며 각각의 역할은 다음과 같다.

  • 3.6864MHz 오실레이터 21. Core Phase Locked Loop (Core PLL)

    Core PLL은 CPU 코어, 메모리 컨트롤러, LCD 컨트롤러, DMA 컨트롤러로 클럭을 제공한다. 이들은 다음 변수들로 증폭을 한다.

    아래 테이블에서 3.6864 MHz에 대한 L, M, N 값들에 따른 Core PLL의 출력을 나타내며, 이 출력 주파수는 TURBO 모드일 경우최대 400MHz이다.

    SDCLK(SDRAM 클럭주파수)는 100 MHz보다 클 수 없으며, MEMCLK(메모리주파수)가 100MHz보다 커진다면 메모리 컨트롤러에서 SDCLK와 MEMCLK의 비율은 반드시1:2로 설정되어야 한다. 이는 SDRAM 관련레지스터인 MDREFR:KxDB2 필드를 설정함으로써 가능하다.

    아래표에 L, M, N값에 따른 3.6864 MHz 크리스탈에 대한 Core PLL(100-400Mhz PLL)의 출력주파수를 보인다.

    [ TURBO 모드 주파수 = RUN 모드 주파수 X N ] 으로

    TURBO 모드 주파수가 결정되며, N은 1.0, 1.5,

    2.0, 3.0을 가질 수 있다.

    N (TURBO모드 주파수 배수)

    [ RUN 모드 주파수 = 메모리 주파수 X M ] 으로 RUN 모

    드 주파수가 결정되며, M은 1 또는 2를 가질수 있

    다.

    M (RUN모드 주파수배수)

    [ 메모리 클럭 주파수 = 크리스탈 주파수(3.6864MHz) X

    L ] 로 메모리 주파수가 결정되며, L은 27, 36, 45

    의 값을 가질수 있다.

    L (메모리 주파수 배수)

  • 3.6864MHz 오실레이터 32. 95.85MHz Peripheral Phase Locked Loop

    95.85MHz PLL은 48MHz까지 필요로 하는 UDC/USB, FICP와 33MHz까지의 주파수를 필요로 하는 I2C

    와 20MHz까지 필요로 하는 MMC에 클럭을 제공한다. 발생된 주파수는 요구하는 주파수와 정확히 같지

    는 않다. 아래표에서 3.6864 MHz 크리스탈에 대한 95.85 MHz PLL 출력주파수에 대하여 각 유닛으로의

    요구주파수와 실제 출력주파수를 보인다.

    19.169 MHz20 MHzMMC

    31.949 MHz33 MHzI2C

    47.923 MHz48 MHzFICP

    47.923 MHz48 MHzUSB (UDC)

    실제주파수요구주파수유닛이름

  • 3.6864MHz 오실레이터 43. 147.46MHz Peripheral Phase Locked Loop

    147.46 MHz PLL은 14.75MHz까지 필요한 UART들과 12.288MHz까지 필요한 AC97과 여러 대역폭의 주

    파수가 필요한 I2S에 클럭을 제공한다.

    아래표에서 3.6864 MHz 크리스탈에 대한 147.36 MHz PLL 출력주파수에 대하여 각 유닛으로의 요구주

    파수와 실제 출력주파수를 보인다.

    147.46 MHz146.76 MHzI2S

    12.288 MHz12.288 MHzAC97

    14.746 MHz14.746 MHzUARTs

    실제주파수요구주파수유닛이름

  • Clock 설정관련 레지스터들1. Core Clock Configuration Register(CCCR)

    CCCR레지스터를 통하여 Core Clock 주파수에 관련된 메모리 주파수 배수(L), RUN 모드 주파수 배수(M), TURBO 모드 주파수 배수(N)가 설정된다. 각각의 주파수는 아래 L,M,N에 의해 결정된다.

    2. Clock Enable Register (CCEN) CKEN은 각 주변유닛들에 대한 클럭을 인에이블 하거나 디스에이블 시킨다. 리셋시 이들은 모두 인에이블 상태이므로 최소의 전력을 사용하기 위하여 사용되지 않는 모듈에 대한 클럭은 해당비트에 0을 써서 디스에이블 해야 한다. 이들은 1의 값을 가질 때 인에이블 상태이고, 0일때 디스에이블 상태이다.

    3. Oscillator Configuration Register (OSCC) OSCC는 32.768 KHz 오실레이터의 설정을 한다. 이 레지스터는 "1"값만 쓸수있는 쓰기전용인 32.768 kHz OON과 읽기전용 32.768KHz OOK를 갖는다. OON 비트는 외부 32.768KHz 오실레이터를 인에이블하고 오직 셋값만 설정할 수 있다. 오실레이터가 인에이블 일때 안정화하기 위하여 10초정도 걸리며 오실레이터가 안정화되면 프로세서는 OOK 비트를 셋한다. 오실레이터가 안정화되어 OOK 비트가 셋된후에, RTC와 Power Manager(PM)는 32.768KHz 오실레이터로 부터 클럭을 제공받고, 그렇지 않다면3.6864MHz 오실레이터가 사용된다.

    3.6864 MHz가 Sleep Mode동안 디스에이블될 수 있게 하는 OPDE 비트는 OOK 비트가 클리어라면 무시된다. 이 OOK 는 오직 하드웨어 리셋에 의해 리셋된다.

  • Coprocessor 14의 CCLKCFG 레지스터OSCC는 32.768 KHz 오실레이터의 설정을 한다. 이 레지스터는 "1"값만 쓸수있는 쓰기전용인 32.768 kHz OON과 읽기전용 32.768KHz OOK를 갖는다. OON 비트는 외부 32.768KHz 오실레이터를 인에이블 하고 오직셋값만 설정할 수 있다. 오실레이터가 인에이블 일때 안정화하기 위하여 10초정도 걸리며 오실레이터가 안정화되면 프로세서는 OOK 비트를 셋한다. 오실레이터가 안정화되어 OOK 비트가 셋된후에, RTC와 Power Manager(PM)는 32.768KHz 오실레이터로 부터 클럭을 제공받고, 그렇지 않다면 3.6864MHz 오실레이터가 사용된다.3.6864 MHz가 Sleep Mode동안 디스에이블될 수 있게 하는 OPDE 비트는 OOK 비트가 클리어라면 무시된다. 이 OOK 는 오직 하드웨어 리셋에 의해 리셋된다.

    예약-31:2

    이 레지스터는 한번만 "1"로 쓸 수 있으며 32.768 KHz 주파수를 인에이블, 디스에이블 한다. 리셋후에는 클리어상태이다.0 : 32.768 KHz 오실레이터는 디스에이블이고, 3.6864MHz 오실레이터를 112로 나뉘어진 클럭이 RTC와Power Manager에서 사용된다.1 : 32.768 KHz가 인에이블인 상태이다.

    OON1

    32.768 KHz OOK (읽기 전용)0 : 32.768 KHz 오실레이터가 디스에이블 상태이거나 안정되지 않은 상태를 나타내고, 이때는 3.6864MHz 오실레이터를 112로 나뉘어진 클럭이 RTC와 Power Manager에 사용된다.1 : 32.768 KHz 오실레이터가 가능한 상태(OON=1)이고, 안정된 상태로 32.768 KHz 가 RTC와 Power Manager에 사용된다.

    OOK0

    설 명이 름비 트

  • Power Manager 1Power Manager 1우리는 이곳에서 PXA255가 지원하는 리셋 및 파워모드에 대해서 살펴보도록 한다. SDRAM의 내용을 저장할것이냐 마느냐를 결정하기 위해 동작중 리셋의 원인을 알고, 그곳에 해당하는 루틴으로 분기하는 일은 중요한 일이며, 임베디드시스템에서 저전력사용을 위한 파워모드의 종류 및 모드변환을 아는 것도 중요한 일이 될 것이다.

    "Soft" Reset Event, Sleep, Watchdog , GPIO Reset에 대하여 리셋이 걸렸음을 나타내기 위한 상태를 표시한다. 평상시에는 HIGH이며 리셋이 걸리면 LOW를 출력한다

    OCnRESET_OUT

    LOW 시그널이 들어오면 하드웨어 리셋을 발생시킨다. 하드웨어 리셋부분을 참조하라.ICnRESET

    주 전원소스(VDD)가 지켜야할 전압범위를 벗어 났을 때 주는 시그널을 받는 단자로 시그널이 LOW로 들어오면Sleep Mode로 들어가거나 강제로 데이터예외(Imprecise Data Exception)를 발생한다.ICnVDD_FAULT

    입력신호로 배터리가 달린 시스템에서 배터리의 용량이 줄어들었거나 제거되었을때 주는 시그널을 받는 단자로 시그널이 LOW로 들어오면 Sleep Mode로 들어가거나 강제로 데이터예외(Imprecise Data Exception)를 발생한다.

    ICnBATT_FAULT

    출력신호로 공급전원에 대한 Power Enable 신호이다. 이는 Sleep Mode에서 파워를 절약하기 위하여 사용되며 평상시는 High 출력이다가 Sleep Mode로 들어가면 Low로 시그널된다.

    해당 전원은 전원제어핀을 인터페이스로 가져야하며 Low일 때 전원공급을 중단할 수 있는 기능을 가져야한다. Sleep Mode를 참조하라.

    OCPWR_EN

    설 명타입핀이름

    ▪ 리셋 및 파워모드관련 핀

  • Power Manager 2Power Manager 21. 리셋

    1. 하드웨어리셋(Hardware Reset)

    2. 와치독리셋(Watchdog Reset)

    3. GPIO 리셋

    2. 파워모드(Power Mode) 1. Run Mode

    2. Turbo Mode

    3. Idle Mode

    4. Sleep Mode

    3. Power Manager Register 1. Reset Controller Status Register (RCSR)

    2. 기타 레지스터들

    3. Power Manager Register 위치

    4. Coprocessor 14 (CP 14) 의 레지스터 7 PWRMODE 레지스터

    5. Coprocessor 7 (CP 7) 레지스터 4