이 운영 체제는 클래스 할당 중에 생성되었습니다. 코드는 실험적이고 고도로 테스트되지 않았지만 작동해야합니다.
OS는 매우 간단한 라운드 로빈 스케줄러를 사용하며 262144 클럭 사이클마다 컨텍스트 스위치를 수행합니다. 이 동작은 OCR0A 및 TIMER0의 프리 스칼러를 설정하여 제어 할 수 있습니다. 응용 프로그램에서 Timer0을 사용할 수 없으며 스케줄러에서만 사용됩니다.
프로젝트에서 os 로 시작하는 파일을 간단히 넣으십시오. 귀하의 요구에 맞게 os_config.h 편집하십시오. 메인에서 os_init() 호출하고 os_task_add(task_func, task_data) 로 작업을 만듭니다. 스케줄러를 시작하려면 os_run() 호출하십시오. 이 호출은 결코 반환되지 않으므로 후속 코드는 실행되지 않습니다.
현재 작업은 현재 종료되지 않을 수 있으며 os_current_task_kill() 사용하여 종료 해야합니다 . os_task_add 에 주어진 void-pointer에 액세스하려면 os_current_task_get_data() 호출하십시오.
스택이 매우 제한되어 있으므로 재귀 나 깊은 콜 스택을 사용하지 마십시오. 스케줄러에 사용되기 때문에 Timer0을 사용할 수 없습니다! 사용자 정의 인터럽트 서비스 루틴을 사용할 때는 인터럽트를 다시 만들려고하지 마십시오!
운영 체제는 os_config.h 의 다음 정의 MACROS를 사용하여 컴파일 시간에 구성 할 수 있습니다.
OS_STACK_SIZE 하나의 작업의 스택 크기를 제어합니다.OS_TASK_COUNT 제어 동시에 얼마나 많은 작업을 생성 할 수 있는지 제어합니다. Copyright 2020 Stephan Brunner
이에 따라이 소프트웨어 및 관련 문서 파일 ( "소프트웨어")의 사본을 얻는 사람에게는 허가가 부여됩니다. 소프트웨어의 사용, 복사, 수정, 합병, 배포, 배포, 숭고 및/또는 소프트웨어의 사본을 판매 할 권한을 포함하여 제한없이 소프트웨어를 처리 할 수 있도록 소프트웨어를 제공 할 권한이 없습니다.
위의 저작권 통지 및이 권한 통지는 소프트웨어의 모든 사본 또는 실질적인 부분에 포함되어야합니다.
이 소프트웨어는 상업성, 특정 목적에 대한 적합성 및 비 침해에 대한 보증을 포함하여 명시 적 또는 묵시적 보증없이 "그대로"제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타, 소프트웨어 또는 소프트웨어의 사용 또는 기타 거래에서 발생하는 계약, 불법 행위 또는 기타의 행동에 관계없이 청구, 손해 또는 기타 책임에 대해 책임을지지 않아야합니다.