[펌웨어설계] 1. ARM Cortex-M CPU 소개
ARM-CortexM 프로세서 개요
- 영국의 ARM회사에 만들어진 모바일 기기에 사용되는 CPU Core
- ARM7부터 유명해짐.
- 프로세서 설계 IP를 판매함.
ARM Cortex 시리즈
- A 시리즈 : 가장 고성능 프로세서
- R 시리즈 : 고성능 RealTime 임베디드 시리즈
- M 시리즈 : 마이크로 컨트롤러 시리즈
- M0, M0+, M23 : 저가형 성능
- M3, M4, M33 : 범용적 성능
- M7 : 고가형 성능
STM32시리즈
- ST 사에서 ARM코어 라이센스를 이용하여 만든 보드
- 파트넘버 확인 법 : STM32(코어이름)
- STM32F429VIT6XXX
- 프로덕트 타입 : F ( 범용 )
- 디바이스 서브패밀리 : 429( USB OTG FS/HS, Camera Interface, Ethernet, LCT-TFT )
- 핀카운트 : V ( 100 Pins ), ㅑ( 2048Kb FlashMemory )
![](https://velog.velcdn.com/images%2Fpsh4204%2Fpost%2Fc7cc17a3-5395-4ba7-a4bc-c6e4e973d4aa%2Fimage.png)
- LQFP : 4방향으로 핀들이 나란히 패키징 되어있다 라는 의미
- ARM코어 시리즈들은 여러가지 슬립모드를 지원한다.
- 핀 소개
- V : 전원핀 ( VDD : 3.3V ), ( Vss : 접지를 연결하는 핀 )
- P : GPIO 핀 _ 일반적으로 사용되는 입출력 핀
- 프로세서 주요 내부블록
![](https://velog.velcdn.com/images%2Fpsh4204%2Fpost%2F541ca669-de3a-4528-93ad-627991f28708%2Fimage.png)
- STM32F411RE의 내부블록도이다.
- Core, 내장메모리, FMC(Flaxible Memory Controller, LCD인터페이스, TFT-LCD 컨트롤러, NVIC, EXTI, Clocks and Startup)
- Core : ARM CoretexM4 32Bit
- NVIC : Nested(중첩될수 있음), 동시에 발생하는 인터럽트를 놓치지 않는다는 의미.
16개의 인터럽트 라인외 62개의 mask 가능한 인터럽트 체널을 가지고 있음.
- EXTI : 외부 인터럽트를 처리하는 블록
21개의 엣지 감지기능, 168개의 GPIO들이 외부 인터럽트 라인에 연결 가능.
- Clock and Startup : 리셋상태에서 16MHz 오실레이터 사용가능
4~25MHz의 ClockSource를 사용하여 이 Clock Source를 PLL입력으로 최대 100MHz의 CPU클럭을 만들어 사용 가능
- CPU버스인 두개의 AHB를 지원.
- 고속버스(AHB1,2): 최대속도 100MHz
- 저속버스(APB1,2): 최저속도 50MHz
![](https://velog.velcdn.com/images%2Fpsh4204%2Fpost%2F261a292f-36db-418d-94f3-cb13172db99c%2Fimage.png)
- 메모리맵 : CPU가 메모리는 물론, 장착된 주변 장치를 제어하기 위한 레지스터의 주소들을 정리한 지도.
- 32비트 CPU는 접근할 수 있는 주소공간 0x00000000 ~ 0xFFFFFFFF까지 사용 가능.
- ARM 버스규격 : CPU와 주변장치를 제어하는 레지스터 들은 ARM의 고유 인터페이스 버스인 AHB, APB에 연결 되어 있음.
- AHB : 상대적 빠른속도의 주변장치에 연결(RAM, NAND플래시) , AHB1,2
- APB : 보다 느린 속도의 주변장치에 연결(UART, KeyPad), APB1,2
- SRAM 영역 : 0x00000000 ~ 0x3FFFFFF
![](https://velog.velcdn.com/images%2Fpsh4204%2Fpost%2F538c20b9-c85a-41ec-831d-a05e41e7fa36%2Fimage.png)