1. Free RTOS(with STM32L475VGT, B-L475E-IOT01A1)

728x90
반응형

RTOS를 포스팅해야지 하고 이론적 배경만 쓰고 잠시 쉬었다. 다시 RTOS를 다뤄야 할 일이 생길 수도 있어서 하나씩 정리해보려고 한다. 

 

우선 RTOS에 대한 이론적 배경은 이전 포스팅을 참고하면 되고, 

https://vuzwa.tistory.com/entry/0-FreeRTOS-FreeRTOS%EB%9E%80

 

0. FreeRTOS - FreeRTOS란?

1. FreeRTOS 란 ?  1.1 RTOS ? 실시간(Real Time) 운영체제(Operating System)의 약자이다. RTOS는 제한된 시간내에 원하는 작업을 모두 처리하는것을 보장하는 운영체제를 뜻한다. RTOS가 들어가는 기기는 거의..

vuzwa.tistory.com

 

 

지금부터는 ST의 개발 보드인 B-L475E-IOT01A1으로 FreeRTOS를 하나씩 알아볼 계획이다. 

 

개인적으로 ST 개발 보드를 구매할 계획이라면 이 보드를 추천한다.  ST개발 보드만 10가지 이상 구매하고 사용해봤는데 범용적으로 거의 모든 기능을 다 실습해볼 수 있는 보드로 적합한 것 같다. 센서도 많이 달려있고, 무선통신 모듈도 달려있기 때문에 이 보드 하나면 웬만한 건 다 해볼 수 있다. 

 

그럼 이제 RTOS를 설정해보자! STM32CubeIDE와 STM32CubeMX를 사용할 건데 혹시 설치 안되어 있으면 아래 링크 참고해 설치 바람.

https://vuzwa.tistory.com/entry/STM32-1-STM32-B-L475E-IOT01A1-%EA%B0%9C%EB%B0%9C%EB%B3%B4%EB%93%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0STM32L475VGT6

 

[STM32] 1. STM32, B-L475E-IOT01A1 개발보드 알아보기(STM32L475VGT6)

MCU 제어 관련 포스팅을 시작해보려 한다. 본 포스팅에서 사용하는 개발 보드는 STM32L475VGT6이 내장된 B-L475E-IOT01A1 보드다. 개발 보드는 IOT를 위한 개발 보드라고 말할 수 있다. 보드에는 BLE 4.1, Wi-Fi

vuzwa.tistory.com

 

링크 타고 들어가서 1, 2, 3, 4번 글까지 따라 해 보고 다시 돌아오면 됨.

 

 

 

 


우선 STM32CubeIDE를 실행하면 아래와 같은 화면이 나온다. 버전에 따라 다른 화면이 나올 수도 있다.

 

좌측의 Start new STM32 project를 누른다. 혹시 저 버튼이 안 보이면 당황하지 말고 File -> New -> STM32 Project를 누르면 된다.

 

 

이런 화면이 나온다. 좌측 상단에서 Board Selector 메뉴를 눌러서 보드를 선택하면 된다.

 

 

검색하면 이렇게 나온다. 선택하고 우측 하단에 "Next"를 누른다.

 

 

여기서 Project Name 입력하고 다시 Next 누른 다음,

 

 

여기서 라이브러리 패키지 버전을 선택하면 되는데, 가장 최신 버전을 선택하면 된다. 포스팅 시점 기준으로 V1.17.2가 가장 최신이다. 여기까지 하고 Finish 누르면 끝 

이런 창이 나오는데 Yes를 누르면 된다.

또 Yes 누르면 진행됨.

 

이게 뭐냐면, 보드 주변에 peripherals를 초기 상태로 설정할 것이냐고 물어보는 건데 그대로 설정하면 된다. 그럼 보드에 붙어있는 각종 센서와 모듈을 사용하기 위한 상태로 MCU가 자동으로 설정된다. 

 

 

여기까지 완료하면 아래와 같이 보인다. 

 

그럼 이제 FreeRTOS를 추가해보자.

 

좌측 메뉴에서 Middleware -> FREERTOS 선택

 

Interface를 누르면 CMSIS_V1과 CMSIS_V2가 나오는데 여기서 V1을 선택한다. V1과 V2는 버전을 의미하는데, 조금 차이점이 있다. 포스팅에서 V1으로 하는 이유는 V1을 먼저 학습하고 난다면 V2는 쉽게 이해할 수 있지 않을까?

 

아무튼 CMSIS_V1을 선택한다. 

그러면 아래 Configuration에 설정할 수 있는 메뉴가 많이 생김.

 

그럼 다시 좌측 상단에 System Core에서 SYS메뉴로 이동 

 

MCU는 기본적인 Timebase를 Systick으로 사용하는데, RTOS도 Timebase로 Systick을 사용하기 때문에 충돌이 발생한다. 여기서 Timebase를 TIM6으로 설정한다. TIM6으로 설정하는 이유는 다른 Timer에는 PWM 등 여러 가지 기능이 있기 때문에 기능이 가장 적은 TIM6을 Timebase로 선택했다.

 

 

 

 

여기까지 완료하면 다시 RTOS 설정으로 돌아가서

 

Advanced settings에서 "USE_NEWLIB_REENTRANT"를 Enable로 설정한다. 사실 이 부분 경고가 발생해서 Enable로 변경해준 건데 왜 발생하는지는 공부하면서 알아가 보도록 하겠다.

 

여기까지 완료하고 나면 좌측 상단에 Device configuration Tool code generation 버튼을 클릭!

 

 

이렇게 진행된다. 이 창이 나오기 전에 창을 전환할 건지 묻는 창이 나오는데 Yes를 누르면 된다. 

 

 

 

 

여기까지 하면 RTOS를 활성화시켜서 MCU에서 RTOS가 동작하도록 만든 거다. 

 

 

Run -> Debug를 누르거나, F11을 누르면 아래와 같은 창이 나온다. 

 

 

Debugger 메뉴로 이동

 

ST-LINK S/N버튼을 체크하고, scan을 눌러서 연결된 ST-LINK를 확인한다. 이 부분은 위에서 언급한 포스팅에 나와있으니 생략.

 

여기까지 하고 OK를 누르면 디버깅이 시작된다. 

 

 

 

디버깅 창에서 Live Expressions에 uwTick를 입력해보면 타이머를 통해 보드가 정상적으로 동작하고 있는 것을 확인할 수 있다.

 

다음 포스팅에서 FreeRTOS를 알아보기 전 UART를 활용해 보드의 동작상태를 확인할 수 있는 기법(?)에 대해 설명하도록 하고 본격적으로 RTOS를 파보도록 하겠다.

 

 

 

 

- 끝 -

728x90
반응형