월요일 출장으로 춘천 김유정역 앞 카페에서 잠깐 글을 적습니다.
8비트 마이컴만 사용하다가 32비트로 넘어오면서 관심만 가지고 있던 freertos를 사용해 본다.
STM32CubeMX를 사용하여 핀 설정, 타이머 설정등을 하면 기본코드를 자동으로 생성할 수 있다.
구글에서 stm32 freertos 정도로 검색하면 많이 찾아볼 수 있다.
실제 OS를 생성해서 필요한 작업들을 진행하다보면서 TASK와 THREAD가 무슨 차이가 있는지가 궁금하다.
찾아봐도 명확한 설명이 없다.
몇가지 자료를 분석하여 나름 이른 결론은 다음과 같다. (잘못 파악했을 수도 있습니다. ^^)
Process
OS에서의 하나의 프로그램이라 생각한다. 워드프로세서를 작성하거나 음악을 재생하거나 하는등의 프로그램 한가지이다.
STM32에서는 Main으로 시작하여 osKernelStart();라는 함수를 통하여 1개의 Process만이 동작하게된다.
Task
OS에서 시분할의 개념을 적용하여 여러개의 TASK가 존재할 경우 강제로 일정시간만큼 처리가 되도록 한다.
즉 여러개의 TASK가 동시에 동작하는 것으로 볼수 있다.
한개의 TASK에 문제가 있더라도 다른 TASK들은 동작을 진행한다.
Thread
한개의 프로그램(Process)에 여러개의 Therad가 존재한다.
각각의 Thread는 별도의 자원(RAM)을 가지고 동작을 한다. 여러 Thread가 동작할때 다음 Thread로 넘어가기 위해서는 osDelay(); Semaphore 등의 진행중인 Thread를 중단하고 다른 Thread가 동작해주도록하는 것이 필요하다.
자동생성되는 STM32의 FreeRTOS의 소스코드에서는 osThreadCreate()를 사용하여 Thread를 생성한다.
Porcess는 하나이고 멀티테스킁 처럼 적용하려면 Thread를 사용해야 한다.
혹시 개념설명이 잘된것이 있으면 알려주세요~
'STMicro STM32' 카테고리의 다른 글
[HM-10] BLE 모듈 제어하기_SLEEP모드 (0) | 2020.12.10 |
---|---|
[EEPROM] M24128 I2C EEPRM 제어하기 (0) | 2020.11.01 |
[LUX센서] BH1750 사용하기. (2) | 2020.11.01 |
IAR 손상된 프로젝트 복구하기 (1) | 2020.10.28 |
ST 홈페이지에서 STM8S 자료를 찾아보자. (0) | 2020.09.24 |
댓글