본문 바로가기
Development Solutions/Embedded System

ARM Cortex M3 Programming1 - Overview, GPIO, UART Control (ARM Cortex M3 프로그래밍1 - 개요, GPIO, UART 제어)

by studio ODOC 2022. 8. 20.
반응형

ARM Cortex M3 Programming1 - Overview, GPIO, UART Control

ARM Cortex M3 프로그래밍1 - 개요, GPIO, UART 제어

 

(추천) Qt QML과 C++로 시작하는 크로스플랫폼 앱 개발 강의 - 입문편

https://inf.run/3XmSH

 

Qt QML과 C++로 시작하는 크로스플랫폼 앱 개발 - 입문편 강의 - 인프런

Qt QML과 C++를 사용하여 크로스플랫폼 애플리케이션 개발에 입문할 수 있습니다. 해당 강의에서는 윈도우 응용 프로그램 타겟으로 개발을 진행합니다., 강의 주제 📖 이 강의를 통해 참가자들은

www.inflearn.com

 

 

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: 송수신 데이터 읽거나 쓰는 역할

 

(

- Basic environment settings -

1. Install TeraTerm

2. Install IAR Embedded Workbench IDE

3. Check the board connection in Teratum (com4~ through device manager)

4. Build the implemented code and transfer the .bin file through TeraTerm to Y modem







- RISC -> Power down by reducing instruction size



- Low power processor -> Benefits available for IoT



- GPIO input/output control -> Memory access using various ports, LEDs, keys, and Memory Mapped I/O

- Bitwise SET-RST register provided: GPIO bit control quickly without bit operation (GPIOx->BSRR)

- Bitwise RESET register provided: " (GPIOx->BRR)

- PORT setting lock function

: Requires LOCK to prevent mistakes (GPIOx->LCKR)

 

- Bitbanding: Bitsteuerung schneller als normaler Bitbetrieb



- Bei Verwendung der for-Anweisung für die Zeitverzögerung werden die in der for-Anweisung verwendeten Variablen als flüchtig deklariert, um eine Optimierung zu verhindern.



- ggf. flüchtig (flüchtig anwenden, wo es sich wahrscheinlich außerhalb des Prozesses ändern wird!

- Memory Mapped I/O: Wenn der Wert aus Hardwaregründen geändert wird

- IPC: Wenn der Wert durch einen anderen Prozess geändert wird

- Übertragung per DMA: Wenn Daten per DMA verschoben werden (der CPU sind solche Speicheränderungen nicht bekannt)

- Interrupt-Handling-Routine: Im Falle einer gemeinsam genutzten Variable zwischen Interrupt-Handling-Routine und Main-Routine

Der Compiler weiß nicht, ob eine Interrupt-Behandlungsfunktion eine CPU-Aufruffunktion ist

- Multicore: Wenn andere Kerne Variablen ändern



- ARM CMSIS (Cortex Microcontroller Software Interface Standard)

: Zweck der Bereitstellung gemeinsamer Funktionen für herstellerunabhängige Kompatibilität (unabhängige Geräteschnittstelle)

: ARM bietet CMSIS-basierte Registerdefinitionen und Header

-> Dank dessen können wir den RTOS-Kernel so wie er ist auf das Board legen.

-> Erhalt der Codekompatibilität durch Bereitstellung herstellerunabhängiger Funktionen (Einfache Portierung auch bei Herstellerwechsel)



- Uhr aktivieren

- ABH

: RCC->AHBENR: Ein-/Ausschalten der Uhr von Peripheriegeräten, die zu AHB gehören

: Stellen Sie sicher, dass die Geräteuhr eingeschaltet ist, bevor Sie ein Peripheriegerät verwenden

-APB1

: RCC->APB1ENR: APB1 " "

-APB2

: RCC->APB2ENR: APB2 " "





- Peripherie-Reset

-APB1

: RCC->APB1RSTR: ZURÜCKSETZEN von Peripheriegeräten, die zu APB1 gehören

-APB2

: RCC->APB2RSTR: APB2 " "



-USART

- USARTx->CR1: Legen Sie die grundlegende Funktionsweise von USART fest

->CR2: hauptsächlich bezogen auf LIN

->CR3: Flusskontrolle, IrDA, Smart Cart-Einstellung

->BRR: Baudratensteuerung

->SR: Status prüfen

->DR: Sende-/Empfangsdaten lesen oder schreiben

)

 

 

타이머와 카운터, NVIC, 인터럽트, DMA는 다음 게시글로 작성합니다.

 

 

 

ARM Cortex-M3 매뉴얼 보기

 

https://developer.arm.com/ip-products/processors/cortex-m/cortex-m3

 

Cortex-M3

Important Information for the Arm website. This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn

developer.arm.com

 

본 게시글은 개인 공부용으로 작성하여 내용의 퀄리티가 부족할 수 있습니다. 

상세한 회로도나 스펙을 보시려면 arm 매뉴얼 참고 바랍니다.

 

(추천) Qt QML과 C++로 시작하는 크로스플랫폼 앱 개발 강의 - 입문편

https://inf.run/3XmSH

 

Qt QML과 C++로 시작하는 크로스플랫폼 앱 개발 - 입문편 강의 - 인프런

Qt QML과 C++를 사용하여 크로스플랫폼 애플리케이션 개발에 입문할 수 있습니다. 해당 강의에서는 윈도우 응용 프로그램 타겟으로 개발을 진행합니다., 강의 주제 📖 이 강의를 통해 참가자들은

www.inflearn.com

 

반응형