STM32

[STM32] STM?

다락공방 2024. 8. 9. 01:36

무작정 개발 했었던 지난학기... 이제 관련 지식도 조금 쌓아서 처음부터 정리를 다시 해보는 중이다. 

STM보드는 무엇일까.. ? 나무위키를 참고하면.. 
 
32비트 마이크로컨트롤러 제품라인의 베스트셀러이자 스테디셀러이며 ARM Cortex-M 시리즈에 기반한 마이크로 컨트롤러이다. 관련 업계에서는 ARM 기반 마이크로컨트롤러 모델을 선정할 경우 0순위로 검토를 하게되는 제품 라인업이며 코어텍스 M0~M7 까지 커버하는 넓은 제품군과 다양한 패키징, 광범위한 부가기능 등으로 인해 매우 널리 쓰이고 있다.

 

여기서 ARM은? MCU 아키텍처 중 하나로 보면된다. 임베디드에 거의 대부분 사용된다고 보면된다. 

지금 정리한다가 알게됬는데 Cortex 시리즈는 A/R/M이 있는데 ARM그 자체에서 이름을 따온 거였구나..

 

나는 STM32 보드 / 라즈베리파이 / 아두이노에서 개발을 해봤는데, 아두이노는 나머지와 다르게 AVR 아키텍처를 사용한다. 두개가 대표적인 거 같다. 더있는지는 모르겠다. 

AVR은 주로 저비용, 저전력 애플리케이션에 사용되는 반면, ARM은 고성능이 요구되는 복잡한 시스템에 주로 사용된다고 한다.

 

ARM에는 몇가지 기능 별 제품군이 존재한다.

 

Coretex-A 시리즈: 

일반 OS 상에서 실행되는 어플리케이션 실행능력에 중점을 두었다. OS(= 운영체제)가 존재하는지가 가장 큰 시리즈 별 차이라고 보면 될거 같다. 예를 들어 리눅스 기반 운영체제인 라즈비안을 사용할

수 있는 라즈베리파이는 Cortex-A 시리즈를 사용한다. 

Cortex-R 시리즈:

R 시리즈는 실시간 어플리케이션을 위한 프로세서로  Real time 전용이라고 생각하면 된다. 다른거는 써봤는데, 이거는 안써봤네.. 

Cortex-M 시리즈:

이게 STM32보드가 커버하는 시리즈 이며, M 시리즈의 특징은  저전력, 저비용, 간단한 임베디드 애플리케이션에 최적화되어 있다. 

특히 Cortex-A 계열과 가장 큰 차이는 MMU를 탑재하지 않아 가상메모리를 사용 할 수 없기 때문에, MMU 없이 동작하도록 특수하게 설계된 운영체제가 아닌 일반적인 리눅스 배포판은 포팅 할 수 없다는 점이다. 

 

특성 Cortex-A Cortex-R Cortex-M
주요 용도 고성능 애플리케이션 프로세서 실시간 시스템 임베디드 시스템, 마이크로컨트롤러
성능 매우 높음 높음 중간에서 낮음
전력 소비 높음 중간 낮음
운영 체제 지원 리눅스, 안드로이드 등 실시간 운영체제(RTOS) 실시간 운영체제(RTOS), 베어메탈
멀티코어 지원 아니오 또는 제한적
특징 고급 기능, 멀티미디어 처리 실시간 성능, 신뢰성 저전력, 비용 효율적

 

표로 정리해보면 위와 같이 정리가능하다.

베어메탈이라는 말도 중요하다. 

조금 자세히 설명 하자면 

베어메탈(Bare Metal) 프로그래밍

정의

  • 베어메탈 프로그래밍이란 운영체제(OS) 없이 하드웨어에서 직접 실행되는 소프트웨어를 작성하는 것을 말한다. 이 방식에서는 애플리케이션 코드가 하드웨어 자원(CPU, 메모리, 입출력 장치 등)을 직접 제어한다. 

특징

  • 운영체제 없음: 베어메탈 환경에서는 전통적인 의미의 운영체제가 존재하지 않음. 애플리케이션 코드가 시스템의 모든 자원을 직접 관리하고 제어한다.
  • 직접 하드웨어 제어: 개발자는 하드웨어 레지스터와 메모리를 직접 접근하고 제어할 수 있음. 이는 시스템의 동작을 더 세밀하게 제어할 수 있게 하지만, 동시에 개발 복잡도가 증가할 수 있음.
  • 메모리 관리: 메모리 할당과 관리는 개발자가 직접 수행. 동적 메모리 할당보다는 정적 메모리 할당이 더 일반적.
  • 실시간 제어: 베어메탈 프로그래밍은 실시간 제어가 필요한 애플리케이션에서 자주 사용됨. 운영체제의 오버헤드 없이 하드웨어를 직접 제어함으로써 더 빠르고 예측 가능한 응답 시간을 제공가능.
  • 부팅 시간: 베어메탈 시스템은 운영체제를 로드하고 초기화하는 과정이 없기 때문에 매우 빠르게 부팅할 수 있음.

뭐이런 특징을 갖는다. 이런 기초 개념 없이 하니까 좋지 않았던 것 같다. 

 

사용했던 보드는

STM32H735G-DK 이다. 

이런식으로 생긴 보드인데 확장핀을 추가할 수 있는 모듈이 하나, 그리고 본체가 하나 박스안에 들어있었다.

기본적으로 4.3인치 TFT LCD 터치스크린이 부착되어있는게 특징이고, 기본적인 MCU 스펙은

  • : STM32H735IGK6U
  • 코어: ARM Cortex-M7
  • 클럭 속도: 최대 550 MHz
  • 플래시 메모리: 1MB
  • SRAM: 564KB

위와 같은 스펙을 가진다. 

STM32보드는 제품명의 STM32 뒤 두글자가  시리즈가된다. STM32H7 시리즈라고 보면된다. H7 시리즈는 고성능과 고속처리, Coretex도 M7으로 성능이 좋다. 

 

 STM32개발은 IDE가 있다. 이름은 STM32CubeIDE로 이전에는 MX랑 뭐랑 분리되어있었는데 하나로 통합되어 좀더 편리해졌다고 한다.

 

다음 정리는 LCD를 사용하기 위한 Touch GFX에 대해 좀 정리 해보겠다.