π 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μ κΈ°λ₯μ μμ½νλ©΄ μλμ κ°λ€..
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 |