ARM M3 프로세서
- 기본 환경 세팅 -
1. TeraTerm 설치
2. IAR Embedded Workbench IDE 설치
3. 테라텀에서 보드 연결 확인(장치관리자를 통해 com4~)
4. 구현한 코드 빌드해서 .bin파일을 TeraTerm 통해서 Y모뎀 전송
- RISC -> 명령어 크기를 줄여서 전력 down
- 저전력 프로세서 -> IoT에 활용 가능한 이점
- GPIO 입출력 제어 -> 각종 포트, LED, Key, Memory Mapped I/O를 이용한 메모리 접근
- 비트별 SET-RST 레지스터 제공: 비트연산 없이 빠르게 GPIO 비트 제어 (GPIOx->BSRR)
- 비트별 RESET 레지스터 제공: " (GPIOx->BRR)
- PORT 설정 잠금 기능
: 실수 방지를 위한 LOCK 필요 (GPIOx->LCKR)
- 비트 밴딩: 일반 비트 연산보다 빠른 비트제어
- 시간 지연용으로 for문 이용할 때, for문에 사용되는 변수는 volatile 선언하여 최적화 방지
- volatile 필요한 경우 (프로세스 외부적으로 바뀔 가능성이 있는 곳에 volatile적용!
- Memory Mapped I/O: 하드웨어적인 원인으로 값 변경되는 경우
- IPC: 다른 프로세스에서 그 값을 변경하는 경우
- DMA에 의한 전송: DMA 사용하여 데이터 이동하는 경우 (CPU는 그러한 메모리 변화를 알 수 없음)
- 인터럽트 처리루틴: 인터럽트 처리루틴과 Main 루틴의 공유 변수의 경우
컴파일러는 인터럽트 처리 함수가 CPU 호출 함수인지 알 수 없음
- 멀티코어: 다른 코어가 변수 변경하는 경우
- ARM CMSIS(Cortex Microcontroller Software Interface Standard)
: 제조사와 무관하게 호환성을 위한 공통의 함수 제공 목적 (독립적인 디바이스 인터페이스)
: ARM이 CMSIS 기반 레지스터 정의 및 헤더 제공
-> 덕분에 RTOS 커널을 그대로 보드에 올릴 수 있음
-> 제조사 독립적인 기능을 제공하여 코드 호환성 유지 (제조사가 달라져도 포팅하기 수월해짐)
- Clock Enable
- AHB
: RCC->AHBENR: AHB에 속한 주변장치들의 clock을 ON-off
: 주변장치 사용 전에 반드시 해당 장치 clock ON
- APB1
: RCC->APB1ENR: APB1 " "
- APB2
: RCC->APB2ENR: APB2 " "
- Peripheral Reset
- APB1
: RCC->APB1RSTR: APB1에 속한 주변 장치들을 RESET
- APB2
: RCC->APB2RSTR: APB2 " "
- USART
- USARTx->CR1: USART의 기본적인 동작 설정
->CR2: 주로 LIN에 관한 설정
->CR3: 흐름제어 및 IrDA, Smart Cart 설정
->BRR: Baud Rate 제어
->SR: 상태 확인
->DR: 송수신 데이터 읽거나 쓰는 역할
타이머와 카운터, NVIC, 인터럽트, DMA는 다음 게시글로 작성합니다.
https://developer.arm.com/ip-products/processors/cortex-m/cortex-m3
본 게시글은 개인 공부용으로 작성하여 내용의 퀄리티가 부족할 수 있습니다.
상세한 회로도나 스펙을 보시려면 arm 매뉴얼 참고 바랍니다.
'개발 > 임베디드' 카테고리의 다른 글
RTOS 3 - ECB (0) | 2021.05.12 |
---|---|
RTOS 2 - uC/OS 실시간 커널 구조 (0) | 2021.05.12 |
RTOS 1 - 개요 (0) | 2021.05.12 |
ARM Cortex M3 프로그래밍3 - 인터럽트, NVIC, DMA (0) | 2021.05.12 |
ARM Cortex M3 프로그래밍2 - 카운터, 타이머 (0) | 2021.05.12 |