주요 ARM SoC 브랜드 | ||||||||
{{{#!wiki style="margin: 0 -10px -5px; min-height: 26px" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -6px -1.5px -13px" | Application Processor | |||||||
MediaTek | Qualcomm Snapdragon | Apple Silicon | UNISOC | Samsung Exynos | HiSilicon Kirin | |||
Allwinner | Amlogic | Ampere Computing | Broadcom | Marvell ARMADA | NXP i.MX AP | |||
Realtek | Rockchip | NVIDIA Tegra | Google Tensor | Telechips | ||||
Micro Controller Unit | ||||||||
STMicroelectronics STM32 | NXP i.MX MCU | Atmel SAM | Renesas RA series | |||||
1. 개요
ST마이크로일렉트로닉스의 32비트 마이크로컨트롤러 제품라인의 베스트셀러이자 스테디셀러이며 ARM Cortex-M 시리즈에 기반한 마이크로 컨트롤러이다. 관련 업계에서는 ARM 기반 마이크로컨트롤러 모델을 선정할 경우 0순위로 검토를 하게되는 제품 라인업이며 코어텍스 M0~M7 까지 커버하는 넓은 제품군과 다양한 패키징, 광범위한 부가기능 등으로 인해 매우 널리 쓰이고 있다.2. 제품군
모든 제품군은 뒤의 숫자가 올라갈수록 더 하이엔드 제품인 경우가 많다. 다만 라인업에 따라서 혼재된 경우도 있기 때문에 항상 숫자순으로 넘버링 되지는 않는다.2.1. STM32H
하이엔드 라인업. 0~7까지 다양한 등급의 제품군을 가지고 있는 다른 라인업들과는 다르게 중급, 최고급인 5, 7만 존재하며[1] 코어 클럭또한 가장 높다.라인업상 DSP 를 노리고 있는 라인업이기 때문에 성능이 꽤 나오는 편이며 Playdate, 게임 & 워치 복각판 등등 일부 저가형 게임기 등에도 절찬리에 쓰이고 있다.
2.2. STM32F
메인스트림,하이엔드 라인업. M0, M3, M4 등 다양한 ARM 기반 코어를 사용하며 화려한 입출력 구성을 자랑한다. 8비트 MCU 대체부터 시작해서 고성능 MPU 시장까지 아주 골고루 먹고 있는 주력 라인업이기도 하다.2.3. STM32L
저전력 제품군. 일반 F시리즈 보다 클럭이 낮으며 별도의 저전력 모드와 별도의 저전력 모드를 갖춘 타이머/통신기능을 갖춘 제품군.2.4. STM32G
F 시리즈의 일부를 대체하는 신형 메인스트림 라인업. G0의 경우 F0의 Cortex M0에서 Cortex M0+로 코어가 변경되었고 전라인업이 기존 F시리즈 대비 더 높은 클럭에도 대응이 가능하다.2.5. STM32U
Cortex M33기반의 차세대 저전력 프로세서.2.6. STM32W
무선통신 기능을 내장한 마이크로컨트롤러 현재까지 STM32WB, STM32WL 2종류의 제품군이 나와있으며 둘다 ISM밴드를 쓰는마이크로 컨트롤러다STM32WB는 Cortex-M4기반의 2.4Ghz의 블루투스,Zigbee 통신을 지원하는 모듈로 상대적으로 고성능 칩셋을 목표로 하는 제품군이다
STM32WL은 Cortex-M0+ 900Mhz대역의 LoRaWAN,Sigfox를 지원하는 저전력 IoT 시장용 제품군이다.
2.7. STM32MP
STM32기반 마이크로프로세서 라인업. Cortex M4 기반 MCU와 Cortex A7기반 듀얼코어 프로세서가 통합된 혼합형 프로세서AP로써도 기능하기 때문에 OpenSTLinux라는 별도의 리눅스 배포판을 깔아서 사용이 가능하며 여기에 각종 애플리케이션을 올려 사용이 가능하다.
2020년대에 코어텍스 A7에 기반한 제품이 출시된것처럼 본 제품은 본격적인 컴퓨팅이 아닌 HMI장비를 위한 UI를 구동하는것을 메인으로 만들어진 제품군이다. 물론 ST사 제품이 다 그러하듯이 필요하다면 그냥 마이크로컨트롤러처럼 써도 큰 문제는 없다.
2.8. STM32C
2023년에 출시된 제품군.# 가장 가격효율적인 STM32 시리즈를 표방하고 있으며 기존에 8비트/16비트 시장을 정면 도전하는 포지션을 갖고 제한된 폼펙터 안에서 STM32의 기능을 최대한 제공하는 구성을 갖추고 있으며 덕분에 RAM,플래시 용량은 역대 STM32중 가장 적다.8비트 마이크로컨트롤러를 대체한다는 목표 때문에 가장 작은 핀 개수와 그에 따른 매우 작은 패키지 크기를 자랑하며 기존 8비트 프로세서들이 5V에서 동작하는 제품이 많았다는 점 때문인지 일부 I/O가 5V 입출력에 대응하도록 설계되어 있으며 STM32시리즈 최초로 8핀 패키지가 출시되는 제품이기도 하다.
2.9. STSPIN 시리즈 마이크로컨트롤러
원래 STSPIN 시리즈는 ST의 자체 모터컨트롤러 라인업이나 BLDC 라인업 일부에는 BLDC모터의 정밀제어를 위해서 STM32 코어+BLDC 드라이브용 MOSFET 드라이버+부수 기능 등이 통합된 STSPIN 마이크로컨트롤러가 존재한다.즉 모터 드라이브 통합형 마이크로컨트롤러다.BLDC 모터용이며 코어는 F/G 시리즈를 사용한다. 그래서 모델에 따라서 STSPINF/STSPING 형식으로 통칭되며 당연히 마이크로컨트롤러인 만큼 별도의 GPIO와 각종 확장된 기능을 갖춰 모터 드라이브를 갖춘 부가제품을 만들기에는 적합하나 그 특이한 구조 때문에 많이 쓰이는 라인업은 아니다.
3. 개발환경
3.1. NUCLEO 개발보드
ST에서 직접 개발 판매하는 레퍼런스 개발보드 제품군이다. 모든 보드는 흰색으로 나오며[2] 핀 개수에 따라 3종류로 구분되어 출시된다.- NUCLEO-32: 초소형보드. Arduino nano와 같은 규격으로 출시되며 주로 L,U시리즈 초저전력 보드들이 이규격으로 나온다.
- NUCLEO-64: 보통 NUCLEO하면 가장 많이 떠올리는 보드. 아두이노와 연결 가능한 핀헤더 소켓을 탑재하고 있으며 ST링크가 완전히 일체형인 32와는 다르게 64부터는 분리가능한 구조를 쓰기도 한다[3]
- NUCLEO-144: 핀이 가장 많은 MCU나 고성능 MCU를 탑재해서 가장 많은 I/O와 성능등을 제공하는 제품. 아두이노 형식의 핀 소켓을 가진 기본형 모델들과는 다르게 독자적인 소켓으로 출시되며[4] 기본적인 GPIO핀 정도에 버튼만 달려있는 기본형 NUCLEO와는 다르게 이 라인업부터 보드에 PC통신용 USB커넥터나[5] 랜포트 등이 기본탑재되어 나온다.
개발보드의 판매가를 높게 부르는 게 관행이었던[6] 다른 회사들과는 다르게 싸게는 2만원 대로 매우 저렴하게 판매하기도 하고 심지어 전시회나 무료교육 등을 통해 무료로 살포하는 경우도[7] 빈번하다.
개발 측면에서는 대부분의 Port에 1:1로 매칭되도록 많은 확장핀을 할당하여 개발편의성을 확실히 제공해 주고, 아두이노의 핀헤더 규격까지 지원해 주는 데다가 무엇보다도 동사의 ST-LINK 다운로더/디버거가 보드에 기본으로 포함된다[8]. 이 때문에 개발 편의성과 범용성이 매우 높은 주제에 가격까지 저렴하다.
대체로 아두이노 방식의 확장 핀헤더와 STM32방식의 확장 핀헤더를 동시에 제공하는데 이러한 확장헤더에 아두이노 용으로 널려있는 센서모듈이나 모터구동모듈 등을 바로 끼우거나 점퍼와이어로 연결하면 제품개발 검증에 필요한 간단한 프로토타입을 순식간에 구성할 수 있으며 이를 위한 확장보드 또한 NUCLEO 확장보드라는 이름으로 팔고있다.
3.2. DISCOVERY 개발보드
NUCLEO보다는 마이너하지만 그래도 만만찮은 저렴한 가격과 종류를 가지고 있다. 주로 녹색 PCB로 생산되며 NUCLEO와는 다르게 디버거 파트를 따로 잘라내기 힘들다. 다만 ST-LINK/DISCOVERY 변환 점퍼와 핀헤더는 NUCLEO와 동일하게 유지되고 있어서 ST-LINK로도 활용할 수 있다.NUCLEO는 보드 내장 주변장치가 상대적으로 빈약하여 사용자의 디바이스 추가 연결에 의존하는 비율이 높은데 비해 DISCOVERY 계열은 주변장치가 좀 더 많이 포함되고 별도 인터페이스 규격의 도터보드 형태로 확장할 수 있는 경우가 많다. 대신에 가격대도 NUCLEO보드들 보다 높은 편에 속한다.
3.3. STEVAL 개발키트
ST가 제공하는 솔루션을 쓰는 모든 종류의 특정목적용 검증키트 브랜드이며 STM32가 포함된 제품들의 경우 STM32+각종 ST제 센서/제어소자 등이 포함된 제품이라는 특징이 있으며 이때문에 가격은 가장 높다.특성상 STM32 만 달린게 아니라 다양한 소자/부품이 탑재되며 반대로 STM32는 장식인 수준이거나 아예 STM32가 안탑재된 제품이 혼재되어 있다.
3.4. CubeIDE
CubeIDE는 ST마이크로에서 공식적으로 제공해주는 무료 개발 IDE이다. Eclipse + GCC 기반의 별도의 무료 IDE였던 Atollic사[9]의 TrueStudio와 STMicro에서 별도의 툴로 제공되었던 프로젝트 생성기인 CubeMX를 단일 IDE로 통합시킨 것이다.3.4.1. Keil/IAR 같은 상용 IDE와의 비교
기본적으로 컨트롤러용 펌웨어 개발 IDE는 MCU용 유료 IDE 업계의 양대 산맥인 KEIL[10]이나 IAR이 주로 쓰였는데 STMicro에서 자사 무료 IDE인 CubeIDE에 힘을 주면서 어느 정도는 입지가 애매해진 상황이다.KEIL이나 IAR의 강점은 8051같은 8비트급의 다종다양한 로우엔드 MCU를 대부분 포괄하는 광범위한 범위에서 통합된 개발환경을 신뢰성 있게 제공해 주는 것에 있고 이는 컴파일러 생태계가 전통적으로 부실했던 8비트급 MCU 생태계[11] 에서는 장점으로 작용했고 실제로도 두 회사는 그러한 장점을 무기로 시장 점유율을 굳혀 왔다.
하지만STM32는 32비트급 ARM아키텍처를 기본으로 하는 제품군이고 ARM 진영에서는 오래 전부터 걸출한 컴파일러인 GCC나 ARM에서 자체적으로 개발/출시한 RVDS가 버티고 있었기 때문에 두 회사가 가졌던 강점이 ARM 생태계에서만은 퇴색할 수밖에 없었던 것이다.
IAR이나 KEIL의 컴파일러 성능을 대체로 비교하면 IAR/KEIL진영이 코드사이즈 축소를 좀 더 공격적으로 세세하게 옵션을 잡아서 하는 대신 생성되는 코드의 안정성이 좀 떨어지고[12] GCC는 반대로 코드는 근소하게 큰 대신 실행이 좀 더 안정적이다. 그런데 이러한 일장일단이라는 것도 케이스 바이 케이스로 적용되고 차이 또한 근소한 수준인데다가 프로그램코드에 할당되는 메모리공간이 상대적으로 부족한 8비트급 MCU에 비해 ARM기반 MCU는 메모리공간이 대체로 많다 보니 오히려 IAR/KEIL의 공격적인 코드사이즈 최적화의 의미가 퇴색될 수밖에 없게 된 것. 때문에 무료이면서도 STMicro 본가에서 직접 개발하고 지원까지 해주는 CubeIDE에 비해서 IAR/KEIL의 입지는 상대적으로 취약할 수밖에 없다.
Keil/IAR과 CubeIDE간의 보다 확실한 격차를 볼 수 있는 곳은 IDE의 UI 수준이다. CubeIDE는 연식은 좀 있지만 일반적인 SW엔지니어들 입장에서 상당히 익숙하고 2020년대 기준에서도 중간은 가는 업계표준급 범용 IDE인 Eclipse를 커스터마이즈한 제품이라서 UI도 중간수준은 되는 반면 Keil/IAR의 UI 수준은 90년대의 Visual Studio 6.0 시절의 UI에 비해서도 큰 발전이 없는 수준이다.
때문에 8비트 MCU시절부터 KEIL/IAR이 제공하는 IDE와 지원 환경에 익숙했던 기존 펌웨어 엔지니어들의 입장에서야 STM32 개발환경으로 넘어와도 KEIL이나 IAR 환경을 유지하는 것이 선호되는 반면 STM32로 펌웨어 개발경력을 시작하면서 ARM기반 MCU환경에서 주로 개발하려고 하는 신규 유입 펌린이 입장 에서는 아예 처음부터 CubeIDE를 선택하는 게 유리하다. 실상 대형 업체에서 KEIL/IAR 등을 선호한다는 것도 특별히 성능이나 기능이 뛰어나서라기 보다는 유료 개발지원과 그에 따른 리스크 경감, 즉 몇백만원을 주고 책임 분산을 해줄 곳을 찾는 측면이 크다. 게다가 그 유료라는 것도 업체 입장에서는 1회성 비용으로 크게 비싼 것도 아닌다. 또한 CubeIDE는 ST에서 직접 만드는 만큼 ST가 출시한 다른 STM32용 개발프로그램과 호환성이 높지만 IAR과 KEIL은 ST가 직접 개발한 Cube 시리즈 개발프로그램과 호환성이 보장되지 않는 경우가 많아 불편할수 있다.ST가 아톨릭을 인수한뒤 CubeMX말고 다른 개발 프로그램에 힘을 줘 다양한 프로그램이 나오고 있다는 점에서 Cube가 다른 툴에 비해서 가지는 강점이다. 다만 그렇다고 다른 툴이 다 망할 수준이었냐면 아니며 여러 종류의 칩을 병행해 사용하는 회사의 경우[13] IAR이나 KEIL의 범용성은 확실히 무시 못하는데다가 어찌되었든 IAR와 KEIL이 공격적으로 코드를 최적화해서 메모리가 부족한 칩을 사용하는 프로젝트에서는 결국에는 IAR과 KEIL을 쓸수밖에 없었기 때문이다. 따라서 이미 IAR이나 KEIL을 쓰는 업체가 CubeIDE계열로 바꿀 이유는 많지 않아 실제 업무에서 CubeIDE를 쓰는 회사 비중은 조금조금씩 늘어나고 있기는 하나 아직은 비중이 낮다.
3.5. ARM Mbed Studio
Mbed는 ARM사의 ARM MCU를 타겟으로 하는 임베디드용 경량 RTOS이다. MBed Studio는 그 MBed OS및 해당 OS상에서 실행되는 사용자 어플리케이션을 개발할 수 있도록 해주는 IDE환경이다.STM32 계열의 MCU가 ARM기반이고 NUCLEO/DISCOVERY 할 것 없이 다양한 보드가 출시되어 있다 보니 MBed에서도 상당한 수의 NUCLEO 및 DISCOVERY 보드 모델을 기본으로 지원해준다.
3.6. ST LINK
STM8과 STM32를 동시에 지원하는 ST의 공식 디버거.오픈소스로 공개된 자료가 있어 서드파티 제품도 많지만 크기 문제가 아니라면 ST 제품도 가격이 저렴한지라 그냥 정품 ST LINK도 많이 쓰인다.
ST LINK는 다음과 같은 버전이 있다.
- V2 - 시장에 깔린 제품 대다수는 V2로 기본적으로 내부에 STM32F103CT8이 탑재되어 있으며 STM8과 STM32 프로그래밍을 지원한다.
- V3 - 2020년에 출시된 차세대 제품. 원래 20핀짜리 커넥터를 쓰던 V2와는 다르게 좀더 작은 14핀 커넥터를 쓰며 STM32H시리즈로 메인 프로세서가 변경되었고 다음과 같은 종류로 나눠진다
- V3SET - 기본형. V2 대비 다음과 같은 기능이 추가되어 있다.[14]
- 버추얼 시리얼포트.
- 신호 변환기능. 단순 GPIO신호 뿐만 아니라 SPI/UART/I2C/CAN등의 통신 신호도 USB로 읽을수 있게 바꿔준다.
- 확장보드를 연결하면 14핀 커넥터 뿐만 아니라 기존 20핀 커넥터나 10핀짜리 커넥터도 쓸수있으며 시리얼 와이어만 따로 뽑아서 쓸수도 있다
- 보드 자체에서 전원을 뽑아서 프로그래밍 타겟에 전원을 공급 가능하다.
- V3MINI - V3SET 에서 구성품을 최대한 단순화 시켜 SWD 프로그래밍 기능과 VCP 기능정도만 남겨놓은 기기. 매우 컴팩트하며 추가적으로 USB-C 타입 케이블을 사용해 연결한다.
- V3MOD - V3 미니 정도의 사이즈에 V3SET 의 기능을 담은 기기. 다만 안그래도 사이즈가 작은데 전부 다 구겨박으려고 하니까 연결 접점만 있어 사용성은 좀 떨어진다.
- V3PWR - V3SET의 구성에 미세전력 분석 프로브를 내장한 고급형 장비. 미세전류를 분석해 타겟 기기의 소모전력 측정에 도움을 주는 기기다.
[1] 이마저도 5 라인업의 경우에는 C 라인업이 추가될때 강화된 거라 출시 이후 한동안은 7만 존재하던 최고급 라인업이었다.[2] 단 NUCLEO 확장보드는 일관성없으며 보통 파란색으로 나온다.[3] 모든 NUCLEO-64가 그런건 아니고 일부 라인업은 아예 보드와 완전히 통합된 형태인 경우도 있다.[4] 사실 이 ST Zio 커넥터는 아두이노 우노의 헤더 소켓의 길이를 늘려놓고 2열로 바꾼거라 다른 NUCLEO보드들이 그러하듯 여전히 UNO보드들과 호환된다.[5] 기본형 NUCLEO들이 전부 가진 ST-LINK에 연결된 USB가 아닌 타겟 MCU에 직접 접속가능한 USB다. 144 이하 모델들은 일부 모델에만 달려있거나 USB기능이 있어도 미장착이 된다.[6] 그나마 범용성이 높은 구성의 개발보드에서는 이런 고가정책 관행은 많이 줄었다. 다만 좀 특수한 주변장치가 내장된 개발보드는 여전히 가격이 높다. 칩벤더에서 직접 판매하는 기본 EVK 가격과 써드파티에서 출시한 호환 EVK간의 가격이 기능은 거의 동일한 주제에 몇십배나 차이나는 경우도 흔하다.[7] 가장 쉽게 받을수 있는 경로는 한국 ST의 무료 강의를 수강할 경우 해당 강의에서 사용할 보드를 무료로 하나 준다.[8] 타 회사의 유사 제품들의 경우 교육용이 아닌 업체용 정품의 경우 수십만원이 넘는 반면 ST-LINK는 본품도 Nucleo 개발보드 만큼이나 저렴하다. 그런데 Nucleo에서는 그것조차도 따로 구매할 필요가 없다. 오히려 Nucleo에 내장된 디버거는 사실상 핀배열만 제외하고는 ST-LINK 본품 그 자체이기 때문에 오히려 거꾸로 Nucleo보드를 ST-LINK로 활용할 수 있으며 실제로 이를 위한 점퍼와 헤더핀이 따로 있어서 NUCLEO보드와 연결을 해제하고 다른보드에 연결해 쓸 수 있다. 게다가 최신 보드일 경우 최신 ST-LNIK에 맞춰 출시되기 때문에 ST-LINK/V3가 탑재된 NUCLEO제품은 오히려 탑재된 V3를 쓰는게 정품 V3를 사는거보다 더 싸게 먹힌다.[9] 원래는 별도의 회사였으나 ST에 먹혔다.[10] 현재는 ARM에 인수되었다.[11] 8비트 MCU는 전통적으로 범용레지스터의 부재와 좁은 메모리공간, 그리고 업계에서 8비트급은 어셈블리어로 프로그래밍하던 관행 등과 맞물리면서 상대적으로 C컴파일러의 최적화 효율성이 떨어지지는 편이었다. 사실 Keil이 C51계열 컴파일러로 성장하게 된 계기도 8비트급에서 효율적으로 돌아가는 C컴파일러를 만들어내는데 성공했다는 계기가 크다.[12] GCC에서는 Warning 수준의 컴파일 경고만 띄우고 멀쩡하게 실행되는 코드가 IAR에서는 런타임오류를 터뜨리며 실행이 안되는 경우가 종종 발생한다.[13] 은근히 많다. 가장 큰 문제점은 부품을 공급하는 회사가 여러곳일 경우 이 업체들마다 쓰는 제품이 다른경우가 있기 때문이다.[14] 다만 추가기능을 사용하려면 악세서리로 구성된 확장보드를 사용해야 하지만 어차피 기본 구성품으로 들어가있다.