87
ARM Cortex-M3 Processor

ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

ARM Cortex-M3 Processor

Page 2: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

2 10v12a

Contents

1. 임베디드시스템/소프트웨어 응용분야

2. ARM 프로세서를 이용한 임베디드시스템 사례

3. Fundamentals of ARM Processors

4. Cortex-M3 Processors

5. Structure of Cortex-M3 Processors

Processor Core Bus Interface Memory Map Execption, Interrupt

6. MCU 프로그램의 개발 방법

Page 3: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

3 10v12a

1. 임베디드시스템/소프트웨어 응용분야

Page 4: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

4 10v12a

2. ARM 프로세서를 이용한 임베디드시스템 사례

A single-board computer

Page 5: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

5 10v12a

Embedded system board

Page 6: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

6 10v12a

3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초 개발

RISC 구조를 가지는 일련의 32비트 프로세서군을 가르키는 용어

내부 구조 간단, 고속 동작, 저전력 소모

1985년 ARM1 의 개발 이후 현재의 Cortex 까지 발전

휴대폰, 게임기 등의 모바일 기기 부문에서 많이 사용

모바일 기기 분야 CPU의 최고 강자

ARM의 전망: 인공지능, 컴퓨터비젼, 가상현실, 자율주행자동차,

고성능 드론, 스마트폰, 첨단무기 등에 ARM 적용

Page 7: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

7 10v12a

Apple II Computer (1977) - MOS Technology 6502 (8 bit)

ARM Processors : Up to Now

Apple, iPhone4 (2010) - ARM Cortex-A9 : 32 bit mP

BBC Micro Computer (early 1980s) - MOS Technology 6502 + ARM1(32 bit)

Page 8: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

8 10v12a

1977 : Apple II 컴퓨터 출시 (MOS Technology 6502)

1980 초반 : 영국, 아콘(Acorn)사

개인용 컴퓨터에 내장할 수 있는 새로운 프로세서의 개발을 시작

1983 : ‘Acorn RISC Machine 프로젝트’시작

1985. 4 : 최초의 32비트 RISC 프로세서 개발 (ARM1)

RISC (Reduced Instruction Set Computer : 축약 명령 집합 컴퓨터)

• 비교적 적은 수의 명령어를 사용

• 명령어의 수를 줄여 제어 기능을 단순화하여 하드웨어의 설계를 쉽게 하고, 처리속도의 고속화를 주안점으로 한 것

• 단순한 명령어는 신속하게 처리하지만, 복잡한 명령어를 실행할 때에는 범용의 CISC형보다 처리 속도가 느리다.

ARM Processors : In the Beginning

Page 9: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

9 10v12a

Evolution of ARM Processor Architecture

Page 10: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

10 10v12a

패밀리 Architecture Version

주요 프로세서

동작 속도 비고

ARM1 ARMv1 ARM1 BBC Micro의 세컨드 프로세서(1985)

ARM2 ARMv2 ARM2 4 MIPS @ 8 MHz (0.33 DMIPS/MHz) (0.5 MPIS/MHz)

Data bus : 32bit Address bus : 26bit

No Cache(1986) Acorn Archimedes(1987)

ARM3 ARMv2a ARM2a 12 MIPS @ 25 MHz

(0.50 DMIPS/MHz)

Acorn Archimedes(1987) ARM4, ARM5는 제품화

되지 않음

ARM6 ARMv3 ARM610 17MIPS @ 20MHz

(0.65 DMIPS/MHz)

Data bus : 32bit Address bus : 32bit 4KB Cache(1992)

Apple Newton PDA(1993)

ARM7 ARMv3 ARM710a 40 MHz (0.68 DMIP/MHz)

Acorn RISC PC700

Evolution of ARM Processors

Page 11: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

11 10v12a

ARM7TDMI

ARMv4T ARM7TDMI(-S)

15 MIPS @ 16.8 MHz 0.95DMIPS/MHz

(ARM Mode)

3 Stage pipe line, No cache(1993) 많이 사용됨

Sony Game Boy Advance, Nitendo DS, Apple iPod,

Lego MindStorm NXT

ARM710T 36 MIPS @ 40 MHz MMU, 8KB cache ARM720T 60 MIPS @ 59.8 MHz

ARMv5TEJ

ARM7EJ-S

StrongARM

ARMv4 SA-110 203 MHz (1.0 DMIPS/MHz)

DEC에서 개발 Apple Newton 2x00 PDA

ARM8 ARMv4 ARM810 84 MIPS @ 72 MHz (1.16 DMIPS/MHz)

별로 많이 사용되지 않음

ARM9TDMI ARMv4T ARM9TDMI 5 Stage pipe line (1997) ARM920T 200 MIPS @ 180 MHz 16KB/16KB cache

많이 사용됨 휴대폰 : 삼성, LG, Nokia,

Motorora, Hic, Sony Ericsson 등, Nintendo

DS/DSi

ARM922T 8KB/8KB cache ARM940T 4KB/4KB cache

Page 12: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

12 10v12a

ARM9E ARMv5TE ARM946E-S ARM9TDMI와 ARM9E는

architecure가 다름 ARM966E-S

ARM968E-S

ARMv5TEJ ARM926EJ-S 220 MIPS @ 200 MHz,

각종 휴대폰에 많이 사용

ARMv5TE ARM996HS

ARM10E ARMv5TE ARM1020E 별로 많이 사용되지 않음

ARM1022E

ARMv5TEJ ARM1026EJ-S

XScale ARMv5TE PXA210 133, 200 MHz, Intel사에서 개발(2002,2004)

(2006년 Marvell에 매각)

PDA, 스마트폰, 네비게이션등에

사용

PXA250 200,300,400MHz

PXA271, 272 800 MIPS @ 624 MHz

Page 13: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

13 10v12a

ARM11

ARMv6 ARM1136J(F)-S 740 MIPS @ 532 -665 MHz

(1.2 DMIPS/MHz)

8 Stage pipe line(2001)

각종 휴대폰에 많이 사용됨

ARMv6T2 ARM1156T2(F)-S 9 Stage pipe line

ARMv6KZ ARM1176JZ(F)-S Apple iPhone(Original,3G),A

pple iPod touch 각종 휴대폰에 많이 사

용됨 ARMv6K ARM11 MPCore

Page 14: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

14 10v12a

Cortex

ARMv7-A Cortex-A8 2.0 DMIPS/MHz, 클럭 600/866 MHz

(2005) Apple iPhone 3GS 외

Cortex-A9 2.5 DMIPS/MHz, 클럭 500MHz/1GHz/2GHz

(2007)

Cortex-A9 MPCore

Multi Processor Core (2009)

IPhone 4G 삼성 Galaxy S

(Core 4개 사용) ARMv8-A Cortex-A53 2014, 2GHz

Cortex-A57 2015, 1.5-2.5GHz ARMv7-R Cortex-

R4(F) 600 DMIPS @

475MHz Cortex-R 시리즈

ARMv7-ME

Cortex-M4 1.25 DMIPS/MHz (2010)

ARMv7-M Cortex-M3 125 DMIPS @ 100 MHz

(1.25DMIPS/MHz)

(2004) ST STM32F시리즈,

NXP 시리즈, TI Stellaris 시리즈

ARMv6-M Cortex-M0 0.9 DMIPS/MHz (2009) NXP LPC1100

Cortex-M1 Up to 136 DMIPS @ 170 MHz

(0.8 DMIPS/MHz, achievable FPGA-

dependent)

(2007) Actel ProASIC3, IGL00

Page 15: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

15 10v12a

ARM by ARM Holdings

- ARM family by ARM Holdings: ARM1 to ARM11, SecurCore,

Cortex-M, Cortex-R, Cortex-A(32-bit), Cortex-A(64-bit)

- ARM core: ARMv1(1985), ARMv8 (2013)

Third-party ARM families

StrongARM (Digital), Faraday (Faraday Technology), XScale

(Intel/Marvell), Sheeva (Marvell), Snapdragon (Qualcomm), Ax

(Apple), X-Gene (Applied Micro), Denver (Nvidia), Carmel

(Nvidia), ThunderX (Cavium), K12 (AMD), Exynos (Samsung,

ARMv8)

Page 16: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

16 10v12a

1983 : 영국의 아콘(Acorn)사 ‘Acorn RISC Machine 프로젝트’ 시작

1985. 4 : ARM1 프로세서

1980 후반 : Advanced RISC Machine 사 설립

ARM 개발팀이 Acorn사에서 분사

1998 : ARM Ltd. 로 이름 변경

지주회사인 ARM Holdings는 미국 NASDAQ과 영국 런던 주식시장에 상장

■ 2016: 일본 SoftBank사 ARM Holdings 인수 (US $32B)

■ 가장 최신 버젼: ARMv8 (2013)

RISC vs. CISC

ARM2 : 약 30,000개의 Transistor

Motorola 68000 : 약 70,000개

Intel 80386 : 약 275,000개

(참고) ARM사의 발전

Page 17: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

17 10v12a

Fundamentals of ARM Processors

Fundamentals of Cortex-M3 Processors

Structure of Cortex-M3 Processors

Processor Core Bus Interface Memory Map Execption, Interrupt

MCU 프로그램의 개발 방법

Page 18: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

18 10v12a

4. Cortex-M Processors Cortex processor : ARMv7 아키텍처의 코어를 가지는 프로세서

(차세대 프로세서에는 또 따른 이름을 부여할 예정) A (Application), R (Real Time), M (Microcontroller) Series 각 시리즈 별로 1~10(또는 그 이상)의 숫자를 부여, 큰 숫자일 수록 고성능

(ex. Cortex-A8, Cortex-A9, Cortex-M0, Cortex-M3)

Cortex-A series: 32-bit, 64-bit, 0.4-2.5GHz 가장 고성능의 프로세서 복잡한 운영 환경, 고성능이 요구되는 어플리케이션의 구현에 적합

Architecture: ARMv7-A Instruction set : ARM, Thumb-2 프로세서 종류 : Cortex-A8 , Cortex-A9 PMP나 스마트폰, 넷북과 같은 기기에 많이 사용

Page 19: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

19 10v12a

Cortex Processors (ll) Cortex-R series: 32-bit, 500MHz Real time 동작이 요구되는 high-end embedded system용 Architecture: ARMv7-R Instruction set : ARM, Thumb-2 프로세서 종류 : Cortex-R4 , Cortex-R4F , Cortex-R4F 임베디드 제품에서 필요한 복잡한 알고리즘 제어와 실시간 작업처리가 가능

Cortex-M series: 8-bit, 16-bit, 32-bit, 100-200MHz 8bit, 16bit MCU 시장을 타겟으로한 프로세서 마이크로컨트롤러 및 FPGA에 최적화된 프로세서

Architecture: ARMv7-M Instruction set : Thumb-2 only 프로세서 종류 : Cortex-M0 , Cortex-M1 , Cortex-M3 자동차나 전자분야 등 가격에 민감한 임베디드 어플리케이션 분야에 사용

Page 20: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

20 10v12a

Evolution of Instruction Set

Page 21: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

21 10v12a

ARM 프로세서의 명령어 세트의 발전

Thumb-2 명령어 세트

16비트와 32비트의 명령어를 모두 포함

기존의 명령어 세트가 가지고 있던 문제점인 32비트 명령어의 코드 사이즈 증가와 16비트 명령어의 부족한 성능, 32비트와 16비트 간의 전환에 따른 성능 저하의 문제를 모두 해결

아키텍쳐 명령어 세트 비고

ARMv4 까지 ARM ARM : 32비트 명령어로 구성

ARMv4T ~ ARMv6 ARM + Thumb Thumb : 16비트 명령어로 구성

ARMv7 ARM + Thumb2 Thumb2 : 16비트, 32비트 명령어로 구성

Instruction Set of Cortex-M3 Processors

Page 22: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

22 10v12a

"Cortex-M3 프로세서" ARM사에서 설계한 프로세서 코어

"Cortex-M3 기반의 마이크로컨트롤러“ 프로세서 코어를 바탕으로 여러 가지 주변 장치를 추가하여 완성된 마이크로 컨트롤러

Cortex-M3 Processor vs. Cortex-M3-Based MCU

Page 23: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

23 10v12a

Features of Cortex-M3 Processor

전력 소모, 뛰어난 연산 성능과 빠른 인터럽트 응답 등의 장점

ARMv7-M architecture의 Cortex-M3 프로세서 코어를 내장

1.25 DMIPS/MHz의 처리속도

16비트와 32비트 명령어가 혼합된 Thumb-2 명령어 세트를 사용

명령 버스와 데이터 버스가 분리되어 있는 하버드 구조의 채택

빠른 어플리케이션 실행이 가능

빠른 인터럽트 처리 : 항상 12사이클에 처리되며

테일-체이닝 방식을 사용할 경우는 6사이클에 처리도 가능함

Page 24: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

24 10v12a

Features of Cortex-M3 Processor (II)

메모리 보호 유닛(MPU)을 이용한 메모리 보호 기능이 가능

플래시 메모리 사용이 1사이클에 가능

• 플래시 메모리: 비휘발성, 기록가능, 시동프로그램 저장

곱셈 연산이 1사이클에 가능, 나눗셈 연산은 하드웨어적으로 처리

전력 소모 절감을 위한 각종 슬립 모드 지원

효율적인 프로그램 개발을 위한 디버거 지원

리셋, 인터럽트 등을 포함한 모든 프로그램이 C언어로 가능

Page 25: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

25 10v12a

Performance – Dhrystone (MIPS/MHz)

1.22 Gate Count – Core TSMC 180 (100MHz)

39,500

Worst Case Frequency - TSMC 180 (MHz)

100 Gate Count – Total TSMC 180 (100MHz)

80,400

Power Consumption – Core (uW/MHz)*

150 Size Core – TSMC 180 (100MHz)

0.48mm2

Power Consumption – Total (uW/MHz)*

200 Size Total - TSMC 180 (100MHz)

1.01mm2

Specification of Cortex-M3 Processor

Page 26: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

26 10v12a

Differs From Other ARM Processors

No ARM instruction set support Thumb-2 only

No Cache , No MMU(Memory Management Unit)

• Cache memory: CPU 내장, 자주 사용 명령어/데이터 저장

Debug is optimized for microcontroller applications

No Coprocessor

• Coprocessor: 주 CPU 보조기능

Page 27: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

27 10v12a

Cortex-M3 v.s. ARM7TDMI

Page 28: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

28 10v12a

Cortex-M3 v.s. Other Processors

Page 29: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

29 10v12a

Fundamentals of ARM Processors

Fundamentals of Cortex-M3 Processors

Structure of Cortex-M3 Processors

Processor Core Bus Interface Memory Map Execption, Interrupt

MCU 프로그램의 개발 방법

Page 30: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

30 10v12a

5. Structure of Cortex-M3 Processor

Page 31: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

31 10v12a

Structure of Cortex-M3 Processor

• SRAM (static random access memory): 고속, 휘발성(전원 OFF 시), CPU 내부 기억장치 용 (파이프라인, 레지스터, 캐시메모리)

• WIC (wakeup interrupt controller) • NVIC (nested vectored interrupt controller) • ETM (embedded trace macrocell) • DAP (debug access port) • SWD (serial wire debug): 2-pin bi-directional wire protocol, I2C, TWI 등과 유사 • JTAG (joint test action group): 디지털 입출력, 동기식 직렬통신

Page 32: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

32 10v12a

Structure of Cortex-M3 Processor (II)

Page 33: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

33 10v12a

ARMv7-M 아키텍쳐를 기반

Thumb-2 명령어 세트 사용 : 16bit, 32bit 명령어가 결합

명령어 버스와 데이터 버스가 분리된 구조 명령어 인출 및 데이터 읽기/쓰기의 동시 수행

3단 파이프라인 구조를 가짐

2개의 동작 모드 Thread 모드, Handler 모드

2개의 메모리 접근 레벨 : Privileged(특권) 접근레벨, User(사용자) 접근레벨

인터럽트 서비스 루틴 진입과 탈출의 시간이 빠르다.

Processor Core

Page 34: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

34 10v12a

NVIC (Nested Vectored Interrupt Controller) 프로세서에 내장된 인터럽트 제어기 중첩된 인터럽트를 쉽게 처리할 수 있는 구조

MPU (Memory Protection)

특권 접근레벨과 사용자 접근 레벨 시에 메모리 액세스에 대한 제한을 둘 수 있다.

일반적으로는 운영체제가 MPU를 설정하여 특권 접근레벨에서 사용하는 데이터(예를 들면 운영체제의 커널 등)를 사용자 접근레벨의 프로그램에서 접근하지 못하도록 막아주는 형태로 사용

Bus Interface 버스 인터페이스를 위해 내부에 버스 매트릭스를 가지고 있다. 외부로는 I-code 버스, D-code 버스 및 시스템 버스가 나온다.

NVIC, MPU and Bus Interface

Page 35: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

35 10v12a

SW-DP (Serial Wire Debug Port), or SWJ-DP (Serial Wire JTAG

Debug Port 디버깅을 위해 외부로 나와있는 포트

FPB (Flash Patch and Breakpoint) 브레이크 포인트나 코드 패치를 위한 장치

ETM (Embedded Trace Macrocell) 명령어의 트레이스를 위한 장치

TPIU (Trace Port Interface Unit) 트레이스 포트 분석기를 인터 페이스하는 장치

DWT (Data Watchpoint and Trace) 워치포인트, 데이터 트레이싱을 위한 장치

ITM (Instrumentation Trace Macrocell) printf 스타일의 디버깅을 지원하기 위한 장치

Debugging Components

Page 36: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

36 10v12a

Processor Core : Registers

Page 37: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

37 10v12a

General-purpose register (범용 레지스터) : R0~R12 (레지스터 = CPU의 연산데이터를 일시적 저장용 고속 flip flop 메모리)

Low register : R0~R7의 8개 레지스터 모든 Thum2 명령어는 접근이 가능

High register : R8~R12의 5개 레지스터 16비트 명령어는 접근이 불가능

SP (Stack Pointer) : R13 (스택 = 레지스터 데이터를 임시로 피신시키는 메모리 공간)

MSP (Main Stack Ponter) : 디폴트로 지정 운영체제의 커널과 예외(exception) 핸들러가 사용

PSP (Process Stack Pointer) 사용자 프로그램(application code)이 사용

LR (Link Register) : R14

서브루틴이 호출 될 때 복귀 주소(return address)를 저장

Processor Core : Registers (II)

Page 38: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

38 10v12a

PC (Program Counter) : R15 • 현재 수행중인 프로그램의 주소를 저장하는 레지스터이다.

xPSR (Program Status Register) • 수행중인 프로그램의 상태를 저장하는 레지스터이다.

Special registers PRIMASK : NMI(non-maskable interrupt)와 Hard fault를 제외한 모든 인터럽트를 비활성화시키는 레지스터

FAULTMASK : NMI를 제외한 모든 인터럽트를 비활성화 시키는 레지스터

BASEPRI : 특정 우선 순위 또는 그 이하의 우선 순위를 가지는 인터럽트를 비활성화 시키는 레지스터

CONTROL : 스택 포인터 및 접근 모드의 선택을 위한 레지스터

Processor Core : Registers (III)

Page 39: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

39 10v12a

프로그램 실행 모드

실행 모드 실행되는 프로그램 메모리 접근 레벨

쓰레드 모드 일반 프로그램 실행 시 특권, 사용자

핸들러 모드 예외 핸들러 실행 시 특권

Page 40: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

40 10v12a

3-Stage Pipe line 클럭 속도를 높이지 않고도 프로세서의 동작 속도를 높일 수 있는 여러 가지 방법 중 하나 ① t 시간 : 1번 명령어가 인출 ② (t+1) 시간 : 1번 명령어는 해독, 2번 명령어가 인출 ③ (t+2) 시간 : 1번 명령어는 실행, 2번 명령어는 해독, 3번 명령어가 인출

Page 41: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

41 10v12a

Bus Interface

Page 42: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

42 10v12a

Bus matrix AHB 버스를 상호 연결하는 네트워크 비트 밴드 연산과 같은 부가적인 데이터 전달 기능도 수행

I-code Bus • 코드 영역 메모리(0x0000.0000~0x1FFF.FFFF)에서 명령어

(Instruction) 인출을 하는 버스 • Thumb 명령어의 경우 CPU 코어는 한번에 2개의 명령어를 읽어오게 된다.

D-code Bus • 코드 영역 메모리(0x0000.0000~0x1FFF.FFFF)에서 데이터 (Data) 입출력을 하는 버스

• AHB-Lite 프로토콜을 따르는 32비트 버스

Bus Interface (II)

Page 43: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

43 10v12a

System Bus 코드 영역, 내부 PPB 및 외부 PPB 영역을 제외한 나머지 부분의 메모리에서 명령어 인출과 데이터 입출력용 버스

외부 PPB (External Private Peripheral Bus)

외부 PPB 영역(0xE004.0000~0xE00F.FFFF) 메모리에 위치한 주변장치의 액세스를 위한 버스

내부 PPB (Internal Private Peripheral Bus)

내부 PPB 영역(0xE000.0000~0xE003.FFFF) 메모리에 위치한 주변장치 액세스를 위한 버스

Bus Interface (III)

Page 44: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

44 10v12a

Fundamentals of ARM Processors

Fundamentals of Cortex-M3 Processors

Structure of Cortex-M3 Processors

Processor Core Bus Interface Memory Map Exception, Interrupt

MCU 프로그램의 개발 방법

Page 45: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

45 10v12a

Cortex-M3 Memory Map

(XN)

Code

SRAM

System

Peripheral

External Peripheral

External SRAM

FFFF_FFFF

2000_0000

4000_0000

6000_0000

A000_0000

E000_0000

0000_0000

512MB

1GB

1 GB

512MB

512MB

512MB

ITM

Internal Private Peripheral Bus

E000_E000

E000_3000

E000_2000

E000_1000

E000_0000

E000_F000

E00F_F000

E004_2000

E004_1000

E004_0000

E00F_FFFF External Private Peripheral Bus

DWT FPB

NVIC

RESERVED

RESERVED

UNUSED

TPIU ETM

ROM Table

E003_FFFF

발표자
프레젠테이션 노트
Blue Sections come out on System Bus Orange section comes out on I-Code and D-Code buses. Green is Private Peripheral Bus.
Page 46: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

46 10v12a

Memory Map

Vendor Specific -> Vendor System Peripheral NVIC -> System Control Space

Cortex-M3 프로세서는 코드, SRAM, 주변장치, 외부 메모리 등을 위한 영역이 4GB의 메모리 영역에 미리 정의되어진 고정형 메모리 맵 을 가진다.

Page 47: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

47 10v12a

Memory Map (II)

고정형 메모리 맵 Cortex-M3 기반의 한 MCU에서 다른 MCU로 소프트웨어의 이식이 쉽다

Debug SYSTEM AHB

Bus Matrix with

Bit - Bander Aligner

and Patch

Code Space

RAM

Peripheral

External RAM

00000000

20000000

40000000

60000000

A0000000

E0000000

E0040000

E0100000

FFFFFFFF

SYSTEM AHB

External Peripheral

Debug Components System (XN)

SCS + NVIC APB

DCODE AHB

ICODE AHB

INTERNAL PPB

Debug

CM3 Core

Instruction

Data

HX

EX+BB

EX

EX = Code execution support HX = High performance code execution support BB = Bit banding support

BB

½GB

½GB

½GB

1 GB

1 GB

Page 48: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

48 10v12a

Memory Map (III) 영 역 크 기 주 소 비 고

Code 0.5GB 0x0000.0000~0x1FFF.FFFF 프로그램 코드용

SRAM 0.5GB 0x2000.0000~0x3FFF.FFFF 내부 SRAM용

주변장치 0.5GB 0x4000.0000~0x5FFF.FFFF 주변 장치용

외부 RAM 1GB 0x6000.0000~0x9FFF.FFFF 외부 RAM 연결용

외부 디바이스 1GB 0xA000.0000~0xDFFF.FFFF 외부 디바이스용

PPB (내부, 외부)

0.5GB

0xE000.0000~0xE00F.FFFF 내부/외부의 PPB

제조사 시스템 주

변장치 0xE010.0000~0xFFFF.FFFF 제조사에서 구성

합 계 4GB 0x0000.0000~0xFFFF.FFFF

Page 49: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

49 10v12a

Memory Map : Code 영역 코드 영역에 할당된 주소

0x0000.0000~0x1FFF.FFFF (0.5GB) 프로세서와는 I-code 버스와 D-code 버스를 통하여 연결

주로 프로그램 코드가 저장되는 영역

프로그램 코드는 코드 영역, SRAM 영역 및 외부 RAM 영역에 저장 할 수 있으나

코드 영역에서는 2개의 버스( I-code, D-code bus)를 통해 명령어 인출과 데이터 액세스가 동시에 이루어지므로 가장 속도가 빠름

Code 영역의 구성

일반적으로 벡터 테이블, 플래시 메모리, 시스템 메모리 등이 위치 각 제조사 별로 달라질 수 있다

Page 50: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

50 10v12a

SRAM 영역에 할당된 주소 0x2000.0000~0x3FFF.FFFF (0.5GB) 프로세서와는 System bus를 통하여 연결

프로그램 실행시 사용됨

이 영역에서는 Bit-band 연산 이 가능

하위 1MB (0x2000.0000~0x200F.FFFF) : Bit-band 영역 상위 32MB (0x2200.0000~0x23FF.FFFF) : Bit-band alias 영역

Memory Map : SRAM 영역

Page 51: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

51 10v12a

Peripheral 영역에 할당된 주소 0x4000.0000~0x5FFF.FFFF (0.5GB) 프로세서와는 시스템 버스를 통하여 연결

MCU 내부에 있는 주변장치를 위한 영역

I/O port, Timer, UART 등의 주변장치가 여기에 위치 이 영역에서의 명령어 실행을 하는 것은 허용되지 않는다

이 영역에서도 Bit-band 연산이 가능

하위 1MB (0x4000.0000~0x400F.FFFF) : Bit-band 영역 상위 32MB (0x4200.0000~0x43FF.FFFF) : Bit-band alias 영역

Memory Map : Peripheral 영역

Page 52: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

52 10v12a

Bit-band alias 영역내의 1개의 워드 -> Bit-band 영역내의 1개의 비트로 매핑 시켜주는 연산

즉, 워드에 0, 1을 쓰면 대응되는 비트가 0, 1 로 setting 됨 Bit-band 영역내의 메모리에 대한 비트 연산이 빠르고 쉬워짐

이 기능을 이용하면 특정 주변장치의 제어 레지스터의 제어 비트나 상태 비트를 비트 단위로 쉽고 빠르게 변경 가능

-> 주변장치의 동작 제어를 효율적으로 할 수 있다

메모리 비트밴드 영역 (1MB) 비트밴드 앨리어스 영역 (32MB)

SRAM 영역 0x2000.0000~0x200F.FFFF 0x2200.0000~0x23FF.FFFF

주변장치 영역 0x4000.0000~0x400F.FFFF 0x4200.0000~0x23FF.FFFF

Bit-Banding

Page 53: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

53 10v12a

Bit-Banding : Example

Page 54: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

54 10v12a

External RAM 영역 외부 RAM을 위한 영역 할당된 주소 : 0x6000.0000 ~0x9FFF.FFFF (1GB) 이 영역에서는 사용자가 작성한 프로그램의 실행이 가능

External Device 영역

외부의 디바이스 위한 영역 할당된 주소 : 0xA000.0000 ~0xDFFF.FFFF (1GB) 이 영역에서는 사용자가 작성한 프로그램의 실행은 허용되지 않음

Memory Map : External RAM, External Device

Page 55: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

55 10v12a

Memory Map : 내부 PPB, 외부 PPB 영역 내부 PPB 영역 : 0xE000.0000~0xE003.FFFF

프로세서 내부의 AHB PPB 버스에 연결된 주변 장치를 위한 영역 System control space (시스템 제어 영역), FPB, DWT 및 ITM이 여기에 위치

System control space : 0xE000.E000 ~0xE000.EFFF NVIC, SYSTICK, MPU, 코어 디버깅용 제어 레지스터가 위치

외부 PPB 영역 : 0xE004.0000~0xE00F.FFFF

프로세서 내부의 APB PPB 버스에 연결된 주변장치나, 프로세서 외부에 위치한 주변장치를 위한 영역

ROM 테이블, ETM, TPIU와 외부 PPB 버스가 여기에 위치 Cotex-M3에는 MCU 제조회사가 APB 주변장치를 추가 하는 것이 가능

-> 이 경우 외부 PPB 버스 영역을 이용

Page 56: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

56 10v12a

Memory Map : Vendor Specific 영역

Vendor Specific 영역

각 제조사에서 구성하는 영역 주로 제조사의 시스템 주변장치를 위한 영역임

주소는 0xE010.0000~0xFFFF.FFFF 프로세서와는 시스템 버스를 통하여 연결

이 영역에서의 명령어 실행은 허용되지 않는다.

Page 57: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

57 10v12a

Fundamentals of ARM Processors

Fundamentals of Cortex-M3 Processors

Structure of Cortex-M3 Processors

Processor Core Bus Interface Memory Map Execption, Interrupt

MCU 프로그램의 개발 방법

Page 58: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

58 10v12a

Exceptions Exception (예외)

프로세서가 동작 도중 예상하지 못한 상황, 예외적인 상황, 또는 외부 인터럽트가 발생하는 경우 최대 255개까지 가능(1~255) System Exception과 External Interrupt로 나뉜다.

System Exception

Cortex-M3 프로세서 내에서 발생 Reset, NMI, Hard fault 등 최대 15개 ( 1~15번 ) 까지 가능

External Interrupt

주변 장치(GPIO, Timer등)에서 발생 최대 240개( 16~255번 )까지 가능 MCU 제조사 별로 구성이 다르다.

Page 59: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

59 10v12a

System Exceptions (시스템 예외)

번호 종 류 우선 순위 설 명

1 Reset -3(가장 높음) 리셋

2 NMI -2 Non-maskable Interrupt (발생 차단 불가 인터럽트) 발생

3 Hard Fault -1 Fault 핸들러가 별도로 지정되지 않은 오류의 발생

4 MemManage

Fault 설정 가능

메모리 관리 오류 : MPU 설정 위반, 허가되지 않은 메모리에 접근

5 Bus Fault 설정 가능 버스 에러 발생

6 Usage Fault 설정 가능 프로그램 에러에 의한 예외 발생

7-10 Reserved - 예비

11 SVCall 설정 가능 시스템 서비스 호출 (System Service Call)

12 Debug Monitor 설정 가능 디버그 모니터(break point, watch point, 외부 디버그 요청) 발생

13 Reserved - 예비

14 PendSV 설정 가능 시스템 장치의 보류 가능한 호출 발생

15 SYSTICK 설정 가능 시스템 타이머 (System Tick timer)

리셋, NMI, 메모리 접근 오류, 버스 에러 발생 등의 경우에 발생

Page 60: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

60 10v12a

External Interrupts GPIO, 타이머 등과 같은 주변장치에 의해서 발생되는 인터럽트

16번부터 255번까지 240개를 가질 수 있다. MCU 제조사별, MCU 모델별로 각각 다르게 구성된다.

Exception Number Exception Type Priority

16 External Interrupt #0 Programmable

17 External Interrupt #1

Programmable

… … …

255 External Interrupt #239

Programmable

Page 61: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

61 10v12a

Priority of Exceptions

Exception은 중첩되거나 연속으로 발생할 수 있다. -> 각 각의 Exception에 우선 순위 설정이 필요

고정된 우선순위를 가지는 Exception : 변경이 불가능 함 Reset : -3 NMI : -2 Hard Fault : -1

나머지 Exception은 사용자가 우선순위 설정이 가능 우선 순위 설정 : 3bit ~ 8bit 사용가능

8단계(1~8) ~ 256단계(1~256)

Page 62: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

62 10v12a

NVIC : Nested Vectored Interrupt Controller NVIC (중첩 벡터형 인터럽트 제어기)

Cortex-M3의 Interrupt (Exception)의 제어를 담당 모든 Interrupt (Exception)에 대한 우선 순위를 결정하고 이를 처리 NVIC와 Cortex-M3 Processor Core는 서로 긴밀하게 연결 빠른 인터럽트 처리가 가능

Cortex-M3 Processor Core

INTNMI

NVIC

Cortex-M3

1-240 Interrupts INTISR[239:0] …

Page 63: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

63 10v12a

Exceptions : 참고 Cortex-M3 프로세서의 우선 순위 설정

우선 순위 설정에 3 ~ 8 bit (8~256 단계) 할당 가능 하지만 우선 순위 단계가 많아질수록 하드웨어의 게이트 수가 늘어나고 전력 소모가 커짐

따라서 대부분의 Cotex-M3 기반의 MCU는 8비트보다 작게 사용 Interrupt Handler

어떤 Interrupt 발생했을 때 이에 대응하는 Interrupt Service Routine 으로 연결해주는 역할을 하는 명령.

여기에는 대응하는 Interrupt Service Routine 의 주소가 저장되어 있다.

Interrupt Service Routine (ISR) 인터럽트 발생시 이에 대응하는 프로세서의 동작 (즉, 인터럽트의 처리 동작) 을 정의한 함수

Page 64: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

64 10v12a

Cortex-M3 프로세서의 인터럽트 동작 순서

① Stacking 인터럽트 처리에 사용될 레지스터의 현재 값을 스택에 저장한다. ② Vector Fetch 벡터 테이블에서 인터럽트 핸들러의 시작 주소를 읽어온다. ③ Update Register 인터럽트 핸들러로 진입할 때 관련된 레지스터가 업데이트 된다. ④ Interrupt Service Routine (ISR) 실행: 발생된 인터럽트에 해당되는 인터럽트 서비스 루틴을 실행한다. ⑤ Exit Interrupt 인터럽트 서비스 루틴의 실행이 완료되면 인터럽트를 종료하기 위해 ①단계에서 스택에 넣었던 내용을 다시 읽어와 레지스터에 복구시키고(unstacking) NVIC의 레지스터를 업데이트 한다.

Page 65: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

65 10v12a

Nested Interrupts (중첩 인터럽트)

현재 실행중인 인터럽트보다 우선 순위가 더 높은 인터럽트가 발생할 경우, 현재의 동작을 멈추고 높은 순위의 인터럽트를 먼저 처리하는 기능 이때 먼저 실행 중이던 인터럽트는 우선 순위가 높은 인터럽트가 끝나면 다시 실행을 하게 된다.

NVIC는 미리 정해진 우선 순위에 따라 자동적으로 중첩 인터럽트 동작을 수행함 이 경우 레지스터의 stacking 및 unstacking은 자동으로 처리됨

Page 66: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

66 10v12a

Vectored Interrupt 동작 Vector table : Cortex-M3 프로세서는 메모리 내에 인터럽트 서비스 루틴(ISR)의 시작 주소를 저장하고 있는데 이를 Vector table 이라고 부른다.

Vector table을 이용하면 인터럽트 발생 시에 별도의 소프트웨어가 필요없이 바로 대응되는 ISR의 시작 주소을 알 수 있다.

이런 형태의 동작을 Vectored Interrupt 동작이라고 한다

이 방법을 이용하면 인터럽트를 처리하는 시간이 빨라지게 된다.

Vectored Interrupts

Page 67: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

67 10v12a

현재 실행중인 인터럽트보다 우선 순위가 낮은 인터럽트가 발생할 경우, 현재의 동작이 끝난 후에 새로 발생한 낮은 우선 순위의 인터럽트를 처리하는 기능 이때 실행 중인 Interrupt의 마지막 단계인 unstacking을 생략 대기 중인 Interrupt의 첫 단계인 stacking도 생략 이렇게 하여 interrupt 처리 시간을 줄임

Tail-Chaining Interrupts

Page 68: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

68 10v12a

Fundamentals of ARM Processors

Fundamentals of Cortex-M3 Processors

Structure of Cortex-M3 Processors

Processor Core Bus Interface Memory Map Execption, Interrupt

MCU 프로그램의 개발 방법

Page 69: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

69 10v12a

6. MCU의 프로그램 개발 방법 1) 소프트웨어 구동 방법 (Software Driver Model)

2) 레지스터 직접접근 방법(Direct Regiser Access Model)

두 프로그래밍 방식은 각기 장단점이 있는데 소프트웨어 구동 방식을 이용하면 프로세서의 하드웨어 (특히 레지스터)에 대한 깊은 지식이 없어도 비교적 쉽고 빠르게 프로그래밍이 가능한 장점이 있다.

STMicroelectronics사에서는 SPL(Standard Peripherals Library :주변장치 구동 라이브러리)이라는 Cortex-M3의 기능을 사용하기 위해필요한 함수,구조체 변수 등을 모은 라이브러리를 제공한다.

SPL을 이용하면 레지스터 직접접근 방식과 소프트웨어 구동 방식의 두 가지 방법의 프로그래밍이 가능하다. 각각의 방식은 서로 분리되어 독립적으로 사용할 수도 있고, 필요에 의해서 함께 사용할 수도 있다.

Page 70: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

70 10v12a

레지스터 직접 접근 방식

주변장치들을 제어하기 위해 주변장치의 관련 레지스터에 직접 값을 입력하는 방식으로 프로그램을 작성하는 방식 일반적으로 레지스터 직접접근 방식을 사용하면 소프트웨어 구동 방식에 비해서 작고 효율적인 소스 코드를 만들 수 있다.

하지만 레지스터 직접접근 방식을 이용하기 위해서는 프로세서의 레지스터와 비트필드 간의 상호 작용, 주변장치의 올바른 동작을 위해 요구되는 동작순서 등에 대한 깊은 지식이 필요한 단점이 있다.

Page 71: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

71 10v12a

소프트웨어 구동 방식 주변장치들을 제어하기 위해 라이브러리에서 제공하는 함수나 구조체 변수를 이용하여 프로그램을 작성하는 방식 제공되는 함수나 구조체 변수를 이용하면 주변장치의 동작을 제어할 수 있기 때문에, 하드웨어에 직접 접근하지 않아도 전체 프로그램 작성이 가능하다.

소프트웨어 구동 방법이 레지스터 직접접근 방법에 비해 하드웨어 내에서 프로그램의 실행속도는 다소 느릴 수 있음 그러나 프로세서의 동작 속도가 충분히 빠른 경우는 사용시에 거의 문제가 되지 않는다고 볼 수 있다.

Page 72: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

72 10v12a

두 방식의 혼용

레지스터 직접접근 방식과 소프트웨어 구동 방식은 하나의 프로그램에서 함께 사용할 수 있기 때문에 필요에 따라 두 가지를 혼용하여 사용하는 방법이다.

이런 경우는 양자의 장점을 모두 취하여 프로그래밍할 수 있는 장점이 있다.

Page 73: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

73 10v12a

제조사 제공 Library를 이용한 프로그램 개발 대표적인 제조사 제공 Library

ST : STM32F10x Standard Peripherals Library NXP : LPC1700CMSIS Standard Peripheral Firmware Library

장점 - 프로그램의 개발이 쉽고 빠르다. - 프로그램의 이해가 쉽다. - 프로그램에서 C언어로 구현이 가능한 부분은 C언어로 작성된다. - 하나 이상의 개발 툴을 사용하여 프로그램의 작성이 가능하다.

단점 - 코드 사이즈와 실행 속도의 관점에서 보면 Library는 반드시 효율적이지만은 않다. - Library는 하드웨어의 모든 성능을 낼 수 있도록 지원하지는 않는다.

Page 74: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

74 10v12a

통합개발환경 프로그램을 작성하기 위해서는 에디터, 컴파일러, 링커, 디버거 등 여러 가지 소프트웨어가 필요하게 되는데 개발에 필요한 이러한 소프트웨어들을 하나의 프로그램 창에서 사용이 가능하도록 모아놓은 것을 통합개발환경(IDE) 이라고 한다. Cortex-M3 프로세서에서 사용 가능한 통합개발환경 - Keil(카일)사의 μVision5 - CodeSourcery사의 Sourcery G++ for Stellaris EABI - IAR사의 Embedded Workbench - Code Red사의 Technologies tools

Page 75: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

75 10v12a

Keil사의 μVision (RealView MDK) ARM사에서 개발한 MCU 개발 프로그램

μVision : 소스 코딩, 디버깅을 위한 통합 개발환경 RealView : ARM 프로세서를 위한 C/C++컴파일러 MicroLib : 런타임 라이브러리 Cortex-M3 프로세서를 위한 Real-Time Trace RTX : 실시간 운영체제 커널(=코어)

Page 76: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

76 10v12a

Kernel (operating system) The kernel is a computer program that is the core of a

computer's operating system, with complete control over everything in the system. On most systems, it is one of the first programs loaded on start-

up (after the bootloader). It handles the rest of start-up as well as input/output requests

from software, translating them into data-processing instructions for the central processing unit. It handles memory and peripherals like keyboards, monitors, printers, and speakers.

Page 77: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

77 10v12a

Tracing (program, data)

A debugging method (tool)

CoreSight Trace Macrocells

Instrumentation Trace Macrocell: traces watchpoints and interrupts

Embedded Trace Macrocell: shows every single instruction executed in

the CPU

Watch point ( = data breakpoint): halts instruction execution when an

access is made to a targeted memory location.

■ Interrupt (= breakinig instruction execution): break execution > go to

some other program (interrupt service routine)

Page 78: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

78 10v12a

Keil사의 μVision (RealView MDK)

RealView MDK는 ARM이나 Cortex 프로세서의 개발에 많이 사용되고 있으며, 다른 개발 소프트웨어에 비해 많은 종류의 MCU 개발에 사용이 가능하다. 또한 LabView를 이용한 ARM MCU의 개발에도 Keil의 RealView MDK가 사용되어 폭넓은 개발환경을 구축할 수 있는 장점이 있다. Keil RealView MDK는 상용프로그램이므로 정품 소프트웨어는 구매를 해야 하지만, 아래 주소의 홈 페이지에서 소스코드의 용량이 32Kbyte 를 넘을 수 없는 평가판 소프트웨어를 다운로드 받을 수 있다. (주소 : https://www.keil.com/arm/demo/eval/arm.htm)

Page 79: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

79 10v12a

IAR사의 Embedded Workbench

스웨덴의 IAR사에서 개발한 IAR Embedded WorkBench는 임베디드 시스템 개발에 아주 많이 사용되고 있는 소프트웨어이다. 컴파일러 기능뿐만 아니라 시뮬레이터나 외부 에뮬레이터, 개발 장비등과 함께 연동 가능한 C-SPY 기능을 가지고 있어서 별도의 디버거용 소프트웨어 없이도 개발과 수정 작업을 편리하게 할 수 있다. IAR Embedded WorkBench 역시 상용 프로그램이기 때문에 구매하지 않는다면 평가판을 사용해야 하는데, 30일간 사용할 수 있는 버전과, 사용기간의 제한 없이 프로그램 소스코드의 용량이 32Kbyte를 넘을 수 없는 버전으로 나누어져 있으므로 선택해서 사용하면 된다. 평가판은 아래주소의 IAR 홈 페이지에서 다운로드 받을 수 있다.

(주소 : http://www.iar. com/ewarm) 등록절차를 거친 후에 다운로드 받을 수 있게 되어있다.

Page 80: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

80 10v12a

CodeSourcery사의 Sorcery G++

미국의 CodeSourcery사에서 개발한 CodeSourcery G++은 오픈 소스 기반의 GNU C/C++컴파일러, 어셈블러, 링커, 디버거를 포함하고 있다. 오픈 소스 기반의 프로그램들로 이루어진 Lite Edition은 무료로도 이용이 가능하다. 상용 버전의 Sourcery G++을 사용하면 복잡한 설정이나 프로그램 설치에 따르는 불편 없이 프로그램을 개발할 수 있다. 하지만 Lite Edition에서는 MCU 개발을 위한 소프트웨어가 모두 포함된 통합개발환경이 지원되지 않으며, 커맨드 라인을 이용하는 개발 방법을 사용해야 한다. 따라서 Cygwin이나 Unix Utilities와 같은 Windows에서 Unix 환경을 만들어주는 프로그램과 함께 Eclipse 등의 프로그래밍 개발도구를 함께 이용해야하는 번거로움이 있다.

Page 81: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

81 10v12a

Code_red사의 Technologies Tools

영국의 Code_red사에서 개발한 RedSuite는 Luminary Micro의 Cortex-M3 MCU인 Stellaris Family의 개발을 위해 만들어졌다. 컴파일러, 디버거, 소스코드 편집기등을 모두 포함한 통합개발환경이며, 공개용 통합개발환경인 이클립스의 플랫폼을 기반으로 하여 부가적인 기능을 더해 만들어졌다. 소스코드 위저드를 이용한 소스코드 자동생성이 가능하고, Red Trace, Red Probe등의 기능을 이용하여 실시간 디버깅 및 추적이 가능하다. 현재는 Luminary Micro와 NXP의 Cortex-M3 MCU를 지원하고 있다.

Page 82: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

82 10v12a

커맨드 라인(Command Line)에서의 개발 통합개발환경을 사용하지 않고 커맨드 라인상에서 프로그램 개발을 하는 방법도 가능한데, 이를 위해서는 Windows에서 Unix환경을 만들어주는 프로그램이 필요하다. Unix환경을 만들어 주는 프로그램으로는 Source -forge의 Unix Utilities와 Cygwin, MiniGW가 있는데 모두 오픈소스를 기반으로 하고 있기 때문에 무료로 다운로드 받을 수 있으며 프로그램을 다운로드 받을 수 있는 경로는 다음과 같다. - Unix Utilities : http://unxutils.sourceforge.net - Cygwin : http://www.cygwin.com - MiniGW : http://www.minigw.org

Page 83: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

83 10v12a

mbed NXP LPC1768 Cortex M3 Development Board

Page 84: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

84 10v12a

mbed NXP LPC1768 Cortex M3 Development Board

Rapid protyping

Breakout board

Cortex M3 chip + programming interface chip

Web-based 'cloud' programming system

The board is programmed via drag-n-drop (USB port connection)

Development board features

- 40-pin DIP, 0.1" pitch form-factor

- Cortex M3, 100MHz, 64kB RAM, 512kB flash

- Ethernet, USB, 2xSPI, 2xI2C, 2xCAN, 3xUART, 6xPWM,

6xADC, 1xDAC

- High-level C++ library

Page 85: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

85 10v12a

1. Embedded Systems with ARM Processor

HUINS Cortex-M 개발 보드

Page 86: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

86 10v12a

Review

ARM Processor 의 개요

ARM Core의 발전 단계

Cortex-M3 Processor의 구성

Processor Core

Bus

Memory Map

Execption, Interrupt

프로그램 개발 방법

Page 87: ARM Cortex-M3 Processorael.chungbuk.ac.kr/lectures/undergraduate/임베디드SW... · 2018-09-13 · 10v12a 6 3. Fundamentals of ARM Processors 1985 영국의 ARM사에서 최초

87 10v12a

References

ARM v7M Architecture Reference Manual Technical Reference Manual (TRM) Implementation Guide (IG) ARM Debug Interface V5

“A Definitive Guide To The ARM Cortex-M3”

• by Joseph Yiu , Published by Elsevier 각 제조사별 MCU의 User Manual, Technical Reference 등

STMicroelectronics NXP TI Toshiba 등