2. Cortex-M0 Overview / Register

) Cortex - M0

 

- 32 bit의 RISC 구조의 프로세서입니다. (Reduced Instruction Set Computing)

위 구조와 반대되는 것이 CISC 구조입니다. (Complex Instruction Set Computing)

RISC 프로세서는 명령어를 동일하게 만들고 레지스터 위치를 동일하게 만들어 하드웨어를 제작할 때 용이하게 하는 구조입니다.

SISC 프로세서는 각각의 명령어는 독립적인 길이와 위치를 가지고 있어, 프로그램 만들 때 효율적인 구조입니다.

 

- 폰 노이만 아키텍처 (Von Neumann Architecture)

 인스트럭션과 데이터를 하나의 메모리에 포함되어 있는 구조입니다.

위 아키텍쳐와 반대되는 것이 하버드 아키텍처입니다. (Harvard Architecture)

 인스트럭션과 데이터가 분리되어 있습니다.

 

- 56개의 명령어를 지원하고 Thumb-1 (16 bit)와 Thumb-2 (16/32bit)를 지원합니다.

 

- Load - Store Architecture를 지원합니다.

 

- Interrupt를 지원합니다.

 NMI(Non-maskable interrupt) + 1 to 32 Physical Interrupts

 

- 슬립 모드를 지원합니다.

 

 

) Cortex-M0 Block Diagram

) Cortex-M0 Registers

- R0 ~ R12 : 자유롭게 사용이 가능합니다.

- PC : Instruction Memory로부터 어떤 주소에서 명령을 가져올지를 알려줍니다.

- LR : 현재 PC를 백업하는 용도입니다.. 늘 사용하는 것은 아니지만, 현재 PC를 덮어 씌워 원래의 위치로 돌아갈 수 없게 되는 상황을 방지해줍니다. 즉, 반환 주소로 볼 수 있겠습니다.

- SP : 메인 함수에서 서브 루틴으로 이동할 때 값을 업데이트하면 덮어 씌워지기 때문에 이를 방지하기 위해 데이터 메모리에 백업을 하는 요도로 사용하는 것이 스택(Stack)입니다. 서브 루틴에서는 레지스터를 마음대로 사용하고, 후에 메인 함수로 돌아왔을 때 백업했던 것을 다시 불러오면 원래 상태로 돌아올 수 있게 할 수 있습니다. 이러한 구조를 Last In First Out Queue라고 합니다.

 

) Cortex-M0 PSRs

APSR : ALU 연산을 하면 NZCV에 해당하는 연산 결과가 나오는데 이에 대한 결과를 나타내는 것을 APSR이라고 한다.

IPSR : 예외적인 상황에 대한 연산을 수행하는데 현재 예외적인 상황이 어디서 발생했는지 를 표현하는 레지스터이다.

EPSR : 한 비트로 현재 프로세서가 32비트인지 16비트인지를 표현하는 레지스터이다.

xPSR : APSR + IPSR + ESPR이다.

 

N : negative Flag

Z : Zero Flag

C : Carry Flag

V : Overflow Flag

T : Thumb State

 

) Primask

32 bit 중 제일 하위 1 비트를 사용한다.

PRIMASK Bit가 1로 세팅되어 있으면, 인터럽트가 아무리 들어와도 그 인터럽트를 막는 역할을 한다. 즉, 더 중요한 일을 하고 있는 경우 Interrupt가 먼저 수행되는 것을 방지한다.

단, NMI와 Hard Fault Exception을 막을 순 없다.

 

) Control

 

'IDEC > Cortex - M0' 카테고리의 다른 글

6. VGA Peripheral (1)  (0) 2023.07.20
5. Timer / GPIO / 7-Segment Peripherals  (0) 2023.07.19
4. AHB UART Peripheral  (0) 2023.07.19
3. AMBA 3 AHB-LITE Bus Architecture  (0) 2023.07.14
1. SoC란 무엇인가?  (0) 2023.07.14