) 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 |