FreeRTOS 실험 및 실제 임베디드 하드웨어로 포팅하기 위한 FreeRTOS 애플리케이션을 개발할 수 있는 환경을 제공
하지만, Linux 포트를 사용하는 FreeRTOS 애플리케이션은 실시간 동작을 보이진 않음
ARM Cortex-M 시리즈 프로세서를 대상으로 하는 바이너리를 빌드할 있는 컴파일러 설치
sudo apt install gcc-arm-none-eabi gdb-multiarch
FreeRTOS의 최신 소스 코드를 GitHub에서 클론
git clone https://github.com/FreeRTOS/FreeRTOS.git
설치가 완료되면, 해당 디렉토리로 이동
cd FreeRTOS
*그리고 Submodule을 설치해줘야한다.
(내가 못찼은건지 모르겠지만, 공식 문서에서 찾은게 아닌, Stack Overflow 열심히 해매면서 찾아냈다..)
git submodule update --init --recursive
Linux용 RTOS Port Layer(POSIX) 위치
Demo Project (1) : 커널 전용 데모
간단한 Blinky 스타일 데모(BLINKY_DEMO
), 또는 보다 포괄적인 스타일 데모(FULL_DEMO
) 상수를 설정하여(mainSELECTED_APPLICATION
), main.c
가장 상단에 정의되어 있음
(FULL_DEMO
로 설정된 경우)
mainSELECTED_APPLICATION
이 BLINKY_DEMO
로 설정되어 있을 경우,
main()
함수는 main_blinky()
함수를 호출함 (from main_blinky.c
)
main_blinky()
는 2개의 Task (software timer 및 queue로 구성된)를 포함하고 있으며,
하나의 Task(송신 Task)는 200ms마다 queue를 통해 값 100을 다른 Task로 반복적으로 전송하며,
(예시)
timer는 2000ms마다 같은 queue에 값 200을 전송함
(예시)
그리고 수신 Task는 queue에서 두 값 중 하나를 받을때마다 메시지를 출력함
mainSELECTED_APPLICATION
이 FULL_DEMO
로 설정되어 있을 경우,
main()
함수는 main_full()
함수를 호출함 (from main.full.c
)
main_full()
은 하나의 the standard demo tasks
들로 구성되어 있으며, 해당 Task는 특정한 기능을 수행하지는 않고, RTOS 포트의 테스트 및 FreeRTOS API 사용 방법을 보여주는 역할을 함
전체 데모에는 check Task가 포함되어 있으며, 이 Task는 10초마다 실행되며, 가장 높은 우선수위를 가져 항상 처리 시간을 확보할 수 있도록 보장됨.(해당 Task의 주요 기능은 모든 표준 데모 태스크가 여전히 정상적으로 동작하고 있는지 확인하는 역할을 함)
Check Task는 실행될 때마다 상태 문자열을 콘솔에 출력하며, 만약 모든 표준 데모 태스크가 오류 없이 실행 중이라면, 문자열에는 "OK"와 현재 틱 카운트가 포함됨
(예시)
Posix/Linux 시뮬레이터 데모를 위해, 경로 이동
(현 예제에서는 커널 전용 데모를 빌드하고자 하여, 3.2에서 기술한 Demo Project (1) : 커널 전용 데모 의 경로에서 진행)
cd FreeRTOS/Demo/Posix_GCC
make 명령어로 Posix_GCC 데모 프로젝트 빌드
make
빌드가 성공적으로 완료되면, build
디렉토리가 생성되며, 하위에 posix_demo
파일이 생성됨
posix_demo
파일 실행
./posix_demo
*[실행화면]