RTOS를 포스팅해야지 하고 이론적 배경만 쓰고 잠시 쉬었다. 다시 RTOS를 다뤄야 할 일이 생길 수도 있어서 하나씩 정리해보려고 한다.
우선 RTOS에 대한 이론적 배경은 이전 포스팅을 참고하면 되고,
https://vuzwa.tistory.com/entry/0-FreeRTOS-FreeRTOS%EB%9E%80
지금부터는 ST의 개발 보드인 B-L475E-IOT01A1으로 FreeRTOS를 하나씩 알아볼 계획이다.
개인적으로 ST 개발 보드를 구매할 계획이라면 이 보드를 추천한다. ST개발 보드만 10가지 이상 구매하고 사용해봤는데 범용적으로 거의 모든 기능을 다 실습해볼 수 있는 보드로 적합한 것 같다. 센서도 많이 달려있고, 무선통신 모듈도 달려있기 때문에 이 보드 하나면 웬만한 건 다 해볼 수 있다.
그럼 이제 RTOS를 설정해보자! STM32CubeIDE와 STM32CubeMX를 사용할 건데 혹시 설치 안되어 있으면 아래 링크 참고해 설치 바람.
링크 타고 들어가서 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를 파보도록 하겠다.
- 끝 -
'OS(운영체제) > FreeRTOS' 카테고리의 다른 글
5. Free RTOS - Task 상태와 동작 (0) | 2022.11.08 |
---|---|
4. Free RTOS - Task 생성하기, Multi Task(with STM32L475VGT, B-L475E-IOT01A1) (0) | 2022.11.07 |
3. Free RTOS - CMSIS_RTOS vs FreeRTOS (0) | 2022.11.02 |
2. Free RTOS - UART 사용하기(with STM32L475VGT, B-L475E-IOT01A1) (2) | 2022.09.27 |
0. FreeRTOS - FreeRTOS란? (0) | 2021.05.27 |