Toby's Study Blog
article thumbnail

πŸšƒ RTOS λž€?

μ‚¬μš©μž - ν”„λ‘œκ·Έλž¨ - ν•˜λ“œμ›¨μ–΄ κ°„ μ†Œν†΅μ„ 톡해 λ„μ™€μ£ΌλŠ” OSμ—μ„œ μˆ˜ν–‰ν•˜λŠ” μž‘μ—…μ΄ μ œν•œ μ‹œκ°„ μ•ˆμ— μ •ν™•ν•˜κ²Œ 이루어져야
ν•  λ•Œ μ‚¬μš©ν•˜λŠ” 것이 RTOS이닀.
Window와 같은 OSλŠ” μš©λŸ‰μ΄ 크고 MCUλŠ” μ‹€μ‹œκ°„μ„±μ΄ μ€‘μš”ν•˜κΈ° λ•Œλ¬Έμ— RTOS 쀑 κ°€λ²Όμš΄ RTOSλ₯Ό 주둜 μ‚¬μš©ν•œλ‹€. 

μ‹€μ‹œκ°„μ€ κΈ°ν•œμ„ κ²½κ³Όν•΄μ„œλŠ” μ•ˆ λœλ‹€.

πŸšƒ RTOS의 λΆ„λ₯˜

RTOSλŠ” 크게 μ†Œν”„νŠΈμ›¨μ–΄μ™€ ν•˜λ“œμ›¨μ–΄ RTOS둜 λ‚˜λ‰œλ‹€.

  • μ†Œν”„νŠΈμ›¨μ–΄ RTOS
    μ›ν•˜λŠ” μž₯μΉ˜μ—μ„œ RTOS μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ‹€ν–‰ν•˜μ—¬ RTOSλ₯Ό μ‚¬μš©ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.
    μ‹€μ‹œκ°„μ„±μ΄ μš”κ΅¬λ˜λ‚˜ μ†Œν”„νŠΈμ›¨μ–΄μƒμ˜ λ”œλ ˆμ΄ λ“±μ˜ μž₯μ• κ°€ μžˆμ–΄λ„ 될 λ•Œ μ‚¬μš©ν•œλ‹€.
    (β€» e.g. μ‹€μ‹œκ°„ κ²Œμž„, λΉ„λ””μ˜€ 슀트리밍, 각쒅 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 등에 μ‚¬μš©ν•˜λ©° FreeRTOS, ChibiOS/RT 등이 μžˆλ‹€.)
  • ν•˜λ“œμ›¨μ–΄ RTOS
    RTOS κΈ°λŠ₯이 μžˆλŠ” λ³„λ„μ˜ ν•˜λ“œμ›¨μ–΄ μž₯치λ₯Ό μ‚¬μš©ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.
    μ—„κ²©ν•œ μ‹€μ‹œκ°„μ„±μ΄ μš”κ΅¬λ˜λ©° μž₯μ• κ°€ μΌμ–΄λ‚˜μ„œλŠ” μ•ˆ λ˜λŠ” κΈ°λŠ₯일 λ•Œ μ‚¬μš©ν•œλ‹€. 
    (β€» e.g. μžλ™μ°¨ 에어백, λΉ„ν–‰ μ œμ–΄ μ‹œμŠ€ν…œ 등에 μ‚¬μš©ν•˜λ©°  VxWorks, QNX, RTOS-32 등이 μžˆλ‹€.) 

πŸšƒ RTOS의 κΈ°λŠ₯

RTOSλŠ” μž‘μ—…μ„ μ œν•œ μ‹œκ°„ μ•ˆμ— μ™„λ£Œν•΄μ•Ό ν•˜λ―€λ‘œ μž‘μ—…μ„ λ“€μ–΄μ˜¨ μˆœμ„œλŒ€λ‘œ μ²˜λ¦¬ν•˜λŠ” 것이 μ•„λ‹Œ
μ œν•œ μ‹œκ°„μ— λ”°λ₯Έ μš°μ„ μˆœμœ„μ— 따라 μ²˜λ¦¬ν•œλ‹€. 
(β€» MCUκ°€ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ™€ ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œλ§Œμ„ κ°€μ§€κ³  μžˆμ„ 경우 μ•„λž˜ κ·Έλ¦Όκ³Ό 같이 λ™μž‘ν•˜λ©°
    μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œλ₯Ό κ°€μ§ˆ 경우 μ—¬λŸ¬ μž‘μ—…μ΄ λ³‘λ ¬λ‘œ μš°μ„ μˆœμœ„μ— 따라 μ²˜λ¦¬λœλ‹€.)  

γ„ΉRTOS μž‘μ—… 처리 μ˜ˆμ‹œ(β€» ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œκ°€ ν•˜λ‚˜μΌ λ•Œ)

RTOS의 κΈ°λŠ₯을 μš”μ•½ν•˜λ©΄ μ•„λž˜μ™€ κ°™λ‹€..

1. μŠ€μΌ€μ€„λ§
   pthread_create() ν•¨μˆ˜λ₯Ό 톡해 FREERTOS와 같은 운영 μ²΄μ œμ— μŠ€λ ˆλ“œ 생성을 μš”μ²­ν•˜κ³ , ν•΄λ‹Ή μš΄μ˜μ²΄μ œλŠ”
    μ„€μ •ν•œ μŠ€λ ˆλ“œμ˜ μš°μ„  μˆœμœ„μ— 따라 μŠ€λ ˆλ“œλ₯Ό μ‹€ν–‰ν•œλ‹€. 

2. 동기화

    μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμŒμ„ μ•Œλ¦¬λŠ” 이벀트 λ³€μˆ˜λ₯Ό μ—¬λŸ¬ 개의 μŠ€λ ˆλ“œμ—μ„œ κ³΅μœ ν•˜λŠ” 데 ꡬ체적으둜 μ•„λž˜μ™€ κ°™λ‹€.
    μš°μ„ μˆœμœ„κ°€ 더 높은 μŠ€λ ˆλ“œ 1μ—μ„œ event_flag 값을 μ„€μ •ν•˜κ³  μŠ€λ ˆλ“œ 2μ—μ„œλŠ” event_flag 값이 μ„€μ •λ˜μ§€ μ•ŠμœΌλ©΄
    λŒ€κΈ°ν•˜λŠ” λ°©μ‹μœΌλ‘œ μŠ€λ ˆλ“œ 2κ°€ λ™μ‹œμ— λ˜λŠ” λ¨Όμ € μ‹€ν–‰λ˜μ–΄ μˆœμ„œκ°€ λ°”λ€Œμ–΄ λ‹€λ₯Έ 값이 μ €μž₯ λ˜λŠ” 좜λ ₯λ˜κ±°λ‚˜ 
    함을 λ°©μ§€ν•œλ‹€.

3. μ‹œκ°„ μ œμ–΄
    RTOSμ—μ„œ μ œκ³΅ν•˜λŠ” APIλ₯Ό 톡해 μ›ν•˜λŠ” μž‘μ—…μ„ μ›ν•˜λŠ” μˆœκ°„μ— μ •μ§€ 및 μ‹œμž‘ λ“±μ˜ μ‹œκ°„μ  μ œμ–΄λ₯Ό ν•  수 μžˆλ‹€. 

4. 효율적 μž‘μ—… 처리 
    μž‘μ—…λ“€μ˜ 동기화와 μž‘μ—…μ— ν• λ‹Ήλ˜λŠ” λ©”λͺ¨λ¦¬ μ œμ–΄ 및 관리λ₯Ό 톡해 μž‘μ—…μ„ 더 효율적으둜 μ²˜λ¦¬ν•  수 있게 ν•œλ‹€.

μœ„ μž‘μ—…λ“€μ„ osThreadFlags와 osEventFlagsλ₯Ό 톡해 μˆ˜ν–‰ν•  수 있으며 μ•„λž˜μ™€ 같은 νŠΉμ§•μ΄ μžˆλ‹€.

                   κ΅¬ λΆ„                             osThreadFlags                      osEventFlags
           μŠ€λ ˆλ“œμ™€μ˜ 관계 μŠ€λ ˆλ“œκ°€ 자체적으둜 ν”Œλž˜κ·Έλ₯Ό 관리함 μŠ€λ ˆλ“œκ°€ 자체적으둜 이벀트λ₯Ό κ³΅μœ ν•¨
               μ‚¬μš© 방법 μŠ€λ ˆλ“œκ°€ 직접 ν”Œλž˜κ·Έλ₯Ό μ„€μ •ν•˜κ³  λŒ€κΈ° 이벀트 ν”Œλž˜κ·Έ 객체λ₯Ό 생성 및 μ‚¬μš©ν•˜λ©°
ν”Œλž˜κ·Έλ₯Ό μ„€μ •ν•˜κ³  λŒ€κΈ°
                  μž₯ 점 μŠ€λ ˆλ“œ 간에 직접 톡신 κ°€λŠ₯
ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ 각쒅 이벀트 κ΅¬ν˜„ κ°€λŠ₯
μŠ€λ ˆλ“œ 간에 κ°„μ ‘ 톡신 κ°€λŠ₯
이벀트 객체λ₯Ό 톡해 이벀트 κ΅¬ν˜„ κ°€λŠ₯
                  단 점 μŠ€λ ˆλ“œ 간에 직접 ν†΅μ‹ ν•˜κΈ° λ•Œλ¬Έμ— 데이터 좩돌이
λ°œμƒν•  수 있음
이벀트 ν”Œλž˜κ·Έ 객체λ₯Ό 생성해야 ν•˜λ©°
μ‚¬μš© 방법이 λ‹€μ†Œ λ³΅μž‘ν•¨

ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•΄μ„œ 톡신을 ν•˜λŠ” 점은 λ˜‘κ°™μœΌλ‚˜ 직접 적으둜 톡신, 객체λ₯Ό μ΄μš©ν•΄ κ°„μ ‘μ μœΌλ‘œ 톡신 μ΄λΌλŠ” 차이점이 μžˆλ‹€.
더 ꡬ체적으둜 RTOSλ₯Ό μ‚¬μš©ν•˜λŠ” 과정은 μ‹€μŠ΅μ„ 톡해 확인해 보고자 ν•œλ‹€. 

πŸšƒ FreeRTOS

FREERTOSλŠ” μ•„λ§ˆμ‘΄μ—μ„œ μ„œλΉ„μŠ€μ€‘μΈ MCU용 무료 μ‹€μ‹œκ°„ 운영 체제(RTOS)이닀. 

μ½”λ“œκ°€ 맀우 μž‘μ•„ λ©”λͺ¨λ¦¬ μš©λŸ‰μ΄ μž‘μ€ MCUμ—μ„œλ„ μ‚¬μš© κ°€λŠ₯ν•˜λ©° νš¨μœ¨μ„±μ΄ λ†’μ•„ λΉ λ₯΄λ©° 
λŒ€λΆ€λΆ„μ˜ MCUμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ νŠΉμ§•μ΄ μžˆλ‹€.

 

[μ°Έμ‘°]

https://rakuraku.tistory.com/328



 



'embedded' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[stm32] Bluetooth 이둠 및 μ‹€μŠ΅  (0) 2023.10.11
[stm32] RTOS μ‹€μŠ΅  (0) 2023.09.18
[stm32] I2C 톡신 μ‹€μŠ΅  (0) 2023.09.11
[stm32] I2C 톡신 이둠 정리  (0) 2023.09.11
[stm32] ADC & DMA μ‹€μŠ΅  (0) 2023.09.06
profile

Toby's Study Blog

@Toby12

ν¬μŠ€νŒ…μ΄ μ’‹μ•˜λ‹€λ©΄ "μ’‹μ•„μš”β€οΈ" λ˜λŠ” "κ΅¬λ…πŸ‘πŸ»" ν•΄μ£Όμ„Έμš”!

검색 νƒœκ·Έ