기록

[Free RTOS_024] 포팅 - 프로젝트 셋업과 CMSIS 본문

[2025~] Embedded/Free RTOS

[Free RTOS_024] 포팅 - 프로젝트 셋업과 CMSIS

heylo 2025. 3. 7. 14:33

프로젝트명은 원하는 이름으로 결정 후 > Finish

 

Initialize all peripherals with their default Mode?

에 Yes

 

 

Open Associated Perspective? 에도

Yes

 

 

SDK로드가 완료되면 아래와 같이 칩인

STM32F103RBTx 를 확인할 수 있다.

이 SDK 파일은 
CMSIS 라이브러리, HAL 라이브러리 등으로 구성돼있습니다.

 

우리가 사용하고 있는 보드는 Nucleo-F103RB입니다.

이 보드의 중앙부에 Cortex-M3 칩이 들어있습니다.

 

https://www.mouser.kr/ProductDetail/STMicroelectronics/NUCLEO-F103RB?qs=fK8dlpkaUMs2W6dqxUbL2w%3D%3D&mgh=1&utm_id=17722985420&utm_source=google&utm_medium=cpc&utm_marketing_tactic=apaccorp&gad_source=1&gclid=Cj0KCQjwna6_BhCbARIsALId2Z0YKGy8BpGw326LlRS5Ura_0tFq7AhbcvSuXP0VcbcFdaxYEY6SYMIaAlMuEALw_wcB

 

STM Cube IDE에서 보드를 선택하면

이 보드에 맞는 라이브러리들(CMSIS, HAL)을 알아서 다운받아줍니다.

 

라이브러리는 소프트웨어를 쉽게 만들 수 있게 도와주는 코드모음입니다.

HAL 라이브러리를 이용하면 아두이노만큼 쉽게 LED를 켤 수 있습니다.

 

CMSIS
https://blog.domski.pl/spl-vs-hal-which-one-should-you-use/
- 코어텍스 마이크로 컨트롤러 소프트웨어 인터페이스 표준
- CMSIS는 ARM CORTEX 프로세서 기반 마이크로 컨트롤러 벤더 독립 하드웨어 추상화 계층이다

-  CMSIS는 일반 도구 인터페이스를 정의하고 일관된 장치 지원을 가능하게 한다

-  CMSIS 소프트웨어 인터페이스는 소프트웨어 재사용을 단순화하고 
마이크로컨트롤러 개발자의 학습 곡선을 줄이며 
새로운 장치 의 출시 시간을 단축한다

-  CMSIS는 프로세서 및 주변 장치, 실시간 운영 체제 및 
미들웨어 구성요소에 대한 인터페이스를 제공한다. 


-  CMSIS에는 장치, 보드 및 소프트웨어에 대한 전달 메커니즘이 포함되어 있으며 
여러 공급 업체의 소프트웨어 구성 요소를 결합할 수 있다.

 

HAL
- SPL(Standard Peripheral Library)의 중단에 대한 대안으로 등장

- HAL 드라이버는 풍부한 API 세트를 제공하고 
애플리케이션 상위 계층과 쉽게 상호 작용하도록 설계 되었다

- 각 드라이버는 가장 일반적인 주변 장치 기능을 포함하는 기능 세트로 구성된다. 
각 드라이버의 개발은 드라이버 구조, 기능 및 매개변수 이름을 표준화하는 
공통 API에 의해 주도된다

- HAL의 가장 큰 장점은 이식성

- 클럭 설정, 핀 muxing, 주변 장치 설정 등을 위한 
코드 생성을위한 STM32CubeMX 도구와 결합하여 
장치 전체에 표준화 된 API를 제공과 동시에 자연스럽게 연동이 된다

HAL 라이브러리는 내부 주변 장치를 위한 라이브러리 일뿐만 아니라 
또한 FreeRTOS, FatFS 및 SD 카드 지원을 구성 할 수 있다.

주어진 주변기기 (USART1, USART2...)의 여러 인스턴스에 대한 
동시 API 호출을 허용하는 주변기기 다중 인스턴스 지원

프로젝트를 동일한 제품군 또는 다른 Cortex를 사용하여 
다른 MCU로 마이그레이션하려는 경우 
HAL이 최선의 선택


HAL의 주요 기능
- 특정 주변 장치 기능의 경우 확장 API뿐만 아니라 
공통 주변 장치 기능을 포괄하는 교차 제품군 휴대용 API 집합

- 세 가지 API 프로그래밍 모델: 폴링, 인터럽트 및 DMA
- APIs are RTOS compliant. reentrant API