👨‍💻 개발일지 (0) : SoC 소개 및 라이브러리 다운로드

STM32 시리즈는 스위스 제네바에 본사를 둔 ST마이크로일렉트로닉스의 Microcontrollers 중 32-bit Arm CPU를 기반으로 제작된 MCU 라인업을 의미하며, 각 용도에 맞게 4가지로 분류하며, 각각 Wireless, Ultra-low-power, Mainstream, High Performance으로 구성되어 있다. STM32F407은 High Performance MCUs 라인업 제품이다.

1. STM32F407 Specification

이제 STM32F407의 간단한 스펙을 살펴보자 아래 리스트는 🔗 ST 공식 홈페이지에 기술된 내용이다.

  • 168Mhz Cortex-M4 (with floating point unit)
  • 2 × USB OTG (one with HS support)
  • Audio: dedicated audio PLL and 2 full duplex I²S
  • Up to 15 communication interfaces (including 6 × USARTs running at up to 11.25 Mbit/s, 3 × SPI running at up to 45 Mbit/s, 3 × I²C, 2 × CAN, SDIO)
  • Analog: two 12-bit DACs, three 12-bit ADCs reaching 2.4 MSPS or 7.2 MSPS in interleaved mode
  • Up to 17 timers: 16- and 32-bit running at up to 168 MHz
  • Easily extendable memory range using the flexible static memory controller supporting Compact Flash, SRAM, PSRAM, NOR and NAND memori
  • Analog true random number generator
  • The STM32F417 also integrates a crypto/hash processor providing hardware acceleration for AES 128, 192, 256, Triple DES, and hash (MD5, SHA-1)

2. ST offer Library

ST에서 제공하는 STM32 시리즈 라이브러리는 총 4(Mbed 제외)가지다. 위에서 언급 했듯 본 시리즈에서는 Standard Peripheral Libraries를 사용하여 EVM Board를 제어하지만 간단하게 다른 라이브러리들도 살펴보자. 아래 소 단락들은 🔗 ST 공식 자료에서 발췌한 내용을 정리 한 것이다.

  • STM32Snippets
  • Standard Peripheral Libraries
  • Low-Layer APIs
  • HAL APIs

2.1 STM32Snippets

STM32Snippets은 STM32L0 및 ST32F0 주변장치 및 레지스터에 집적 접근하며 제어하는 라이브러리이다. 추상화 개념이 적고 8bit 배경지식에서 넘어온 로우레벨 개발자를 위해 제작되었다. 특징으로는 높은 최적화 레지스터의 직접 접근, 작은 코드사이즈, 레지스터 레벨의 디버깅이 있다.

단점으로는 지원 MCU는 STM32L0 및 ST32F0 뿐이며, USB 같은 복잡한 주변장치에는 부적합 하다. 또한 추상화 정도가 낮기 때문에 개발자가 주변장치의 동작방식을 레지스터 레벨에서 이해하고 있어야한다.

2.2 Standard Peripheral Libraries

절차지향적인 C 언어 배경지식을 가진 임베디드 개발자를 위한 라이브러리이다. 특징으로는 평균 정도의 최적화 성능, 레지스터의 직접접근이 필요하지 않으며, 100% 모든 주변장치를 커버한다. 디버깅이 쉽고 USB, TCP-IP, Graphics, Touch Sense 같은 복잡한 미들웨어의 확장이 편하다.

단점은 특정 STM 시리즈만 사용이 가능한것 (물론 STM32Snippets보다는 범위가 넓다.), 미들웨어가 시리즈별로 다를 가능성, STM32 L0, L4 및 F7 이후버전은 지원계획이 없음 등이 있다.

2.3 Low-Layer APIs

Low Layer API는 STM32Snippets와 마찬가지로 로우레벨 개발자를 위한 라이브러리이다. 이 라이브러리는 아래 HAL과 같이 비교적 최근에 등장한 라이브러리이며 STM32Snippets의 장점가지고 있다.

단점으로는 STM32Snippets의 단점과 마찬가지다.

2.4 HAL APIs

HAL 은 Hardware Abstraction Layer의 약자로 가장 높은 수준의 추상화를 제공한다. 시리즈별로 포팅이 쉽고 100% 모든 주변장치를 커버한다. 많은 미들웨어와 통합되어 있으며 CubeMX IDE를 사용하면, 초기 코드 생성도 알아서 해준다.

단점으로는 로우레벨 개발자들은 적응하기위한 시간이 필요하다.

2.5 비교 및 지원 현황

원문을 보면 QnA에 어떤 라이브러리를 사용할지에 대한 추천 사항이 나와있다. 질문(예시: 8bit에서 32bit CPU로 넘어가려는 개발자는 어떤 라이브러리를 사용해야 합니까? 🤔🤔) 에 대한 대부분의 답은 HAL 혹은 LL을 이용하는 것을 추천한다. ST에서 Standard Peripheral Libraries보다는 HAL 과 LL에 대한 지원에 초점을 맞추려 노력 중 인 것 같다.

3. Library Downloads 및 살펴보기

3.1 Library Download

이제 EVM에서 사용할 STM32F4XX 시리즈의 Standard Peripheral Library를 다운로드 받아 보자. 라이브러리는 ST의 공식 홈페이지에서 다운로드 받을 수 있다. 👇👇

🔗 STM32F4XX Standard Peripheral Library Download

STM32F4XX SPL은 ST에서 STSW-STM32065 라고 불리며 관리되고 있다. 2022년 1월 기준 최신버전은 ver 1.8.0 이다. 또한 위에서 언급했듯 Standard Peripheral Library는시리즈마다 다르기 때문에 STM32F1XX 같은 다른 시리즈에는 적용할 수 없다.

Download latest 를 누르면 라이센스 동의를위한 팝업창 및 이름, 이메일을 적는 팝업창이 나타난다. 기본적인 정보를 적고 팝업창에 적었던 메일계정에 로그인을해 메일을 확인하면 다운로드 할 수 있는 메일이 와 있음을 확인할 수 있다. 📧

3.2 Library 내부 살펴보기

라이브러리는 다음과 같이 구성되어 있으며 굵은 글자로 표시된 디렉터리가 우리가 자주 방문할 핵심 디렉터리다.

📁 _htmresc
📁 Libraries
📁 Project
📁 Utilities
📃 MCD-ST Liberty SW License Agreement V2.pdf
📃 Release_Notes.html
📃 stm32f4xx_dsp_stdperiph_lib_um.chm

Libraries 는 SPL의 핵심코드 및 CMSIS가 들어있고 Project 에는 프로젝트의 기본 템플릿과 예제들이 수록되어 있다. Project 템플릿에는 IDE 별로 TrueSTUDIO, EWARM, MDK-ARM 등 다양한 IDE 기본 프로젝트 파일들이 있으니 원하는 IDE를 선택하여 사용하자(본 포스팅에서는 EWARM을 사용하지만 유료 툴 이니 Keil 혹은 TrueSTUDIO를 고려해도 좋다).

0개의 댓글