Don't think! Just do it!

종합 IT 기술 정체성 카오스 블로그! 이... 이곳은 어디지?

임베디드 소프트웨어/Zephyr

[nRF52840 + Zephyr] #7. RTOS 기본

방피터 2023. 5. 24. 21:53

RTOS 가 기본적으로 제공하는 기능들이 있어.
5가지 정도인데 아래를 보자구!
👇👇👇


1. Task(Thread) management
2. Memory management
3. Time management
4. Inter-task communication
5. Synchronization


모든 rtos가 비슷해.
(제퍼도 마찬가지!)
그래서 난 새로운 rtos를 사용해야 할 때 항상 저 기준을 적용하고 있어.

Thread management

Thread 혹은 Task의 생성, 삭제, 정지, 재시작 등등의 기능을 말하는 거야.
Delay로 많이 사용하는 sleep도 thread의 기능 중에  하나임.

제퍼에서도 k_thread_create, k_thread_suspend 와 같은 함수들이 있어.

 

Memory management

이건 malloc과 free에 대한 건데, Mcu 다룰 때는 무서워서 잘 안쓰지.
메모리가 작고 힙관리도 안되고 해서 malloc/free 함부러 쓰면 바로 hard fault!

하지만 이제는 피할 수 없는 정도까지 왔어. 동적 할당을 사용하는 라이브러리들을 사용해야 하기 때문이지!
RTOS에서는 비교적 안전하게 동적 할당을 사용할 수 있도록 기능을 제공해.

k_malloc, k_free

 

Time management

Software timer 말고는 특별한 건 없어.
그런데 이게 강력하지!
MCU에서 timer를 사용하려면 HW timer 설정하고 전역변수를 남발해야하지;;
물론 OS에서 제공하는 타이머는 HW timer 만큼 정확하지는 않지만

초단위나 수백 ms 단위의 타이머로 간단하게 사용하기는 매우 좋아. 꿀!

제퍼에서의 timer 활용

 

Inter-task communication

모든 rtos에는 Task 간 데이터를 주고 받을 수 있는 queue나 flag 등의 기능을 제공하고 있어.
Timeout처리도 가능해서 활용도가 매우 높아! 정말 사랑스러운 기능이지!

Task 간 Message queue

 

Synchronization

Semaphore, mutex 같은 기능을 말하는거야.
Rtos 사용에는 필수적이라 꼭 알아둬야 해!


제퍼도 위에서 설명한 다섯가지 기능군으로 nRF보드 위에서 테스트해볼거야. ㅎㅎ
생각보다 쉽고 재밌으니까 잘 따라 오라귯!
안녕!👋



2023.05.30 - [임베디드 소프트웨어/Zephyr] - [nRF52840 + Zephyr] #8. Thread Management

 

[nRF52840 + Zephyr] #8. Thread Management

제퍼에서 thread를 굳이 나누자면 System thread와 User thread로 나눌 수 있어. System thread는 main()을 호출하는 main thread와 idle thread 그리고 workqueue thread 정도가 될거고 User thread는 말 그대로 유저가 만드는

engschool.tistory.com

 

반응형