TinyOS란 무엇인가?
TinyOS는 한 번에 하나의 응용 프로그램(어플리케이션)만 실행합니다. 이것은 기존의 PC 또는 임베디드 시스템 OS와 다릅니다. 기본적으로 TinyOS는 센서에서 데이터를 획득해서 무선 네트워크에 전송하는 간단한 작업을 담당하고 있습니다. 따라서 TinyOS는 여러 응용 프로그램을 동시에 실행하는 기능은 제외되어 있습니다. 또한 설계 단계에서 전력 소비와 메모리 소비를 줄이기 위해서 노력합니다. 그러나 몇 가지 기능을 동시에 조작하려고하면 하나의 응용 프로그램은 매우 작은 단위로 작업이 세분화 된 작업의 형태로 운영됩니다. 마지막으로, 커널은 이러한 기능을위한 하나의 함수로 구성되어 있습니다.
TinyOS 컴파일
TinyOS 커널의 동작 순서를 이해하기 전에 nesC로 작성된 소프트웨어의 컴파일 단계를 이해해야 합니다. nesC로 작성된 코드는 컴파일러 언어로 번역됩니다. 언어로 번역 된 후 컴파일러에 의해 기계 수준의 이진 파일로 컴파일됩니다. 컴파일은 make (예 : make telosb)를 사용하여 이루어집니다. nesC는 C 변환 및 컴파일이 한 번에 이루어집니다. 컴파일 과정에서 사용되는 파일 (* .nc)는 그 내용에 따라 해당 디렉토리에 배포되지만, make가 포함 된 포함 옵션을 분석하여 찾을 수 있습니다. 컴파일 된 바이너리 파일을 플랫폼에 다운로드 한 후 전원이 투입되어 하드웨어와 커널이 초기화됩니다. 그렇다면 TinyOS 커널이 작동합니다. 커널은 전원이 꺼질 때까지 무한 루프에서 실행되는 간단한 FIFO 스타일의 스케줄러에서 작동합니다.
TinyOS 동작 순서
전원 투입시의 동작은 파일에서 분석 할 수 있습니다. TinyOS에서 MainM 구성 요소의 위치는 파일을 분석하여 확인할 수 있습니다. MainM는 nesC는 C로 변환 할 때 사용되는 함수가 포함되어 있습니다. TinyOS의 하위 MainM 구성 요소는 Telos B (Telos 개정 B) 소프트웨어의 컴파일에 사용됩니다. 선택하면 main ()의 첫 감소 된 호출 hardwareInit ()에서 실행됩니다. 하드웨어, 즉 센서와 칩의 초기화를 실행합니다. 하드웨어 초기화 후 TOSH_sched_init ()를 호출하여 스케줄러를 초기화 스케줄러 변수와 작업 큐 (작업 큐)를 초기화합니다. StdControl.init ()의 호출과 StdControl.start ()의 호출은 각 응용 프로그램이 사용하는 초기화를위한 명령입니다. 이 명령은 각 컴포넌트에 필요한 초기화 루틴이 포함되어 있습니다. 응용 프로그램에서 사용되는 구성 요소가 많은 경우 각 구성 요소의 모든 StdControl 코드가이 위치에서 선택됩니다. 불린다. 응용 프로그램이 StdControl.init () 및 StdControl.start () 규칙에 의해 초기화 된 후 __ nesc_enable_interrupt ()를 사용하여 하드웨어 인터럽트가 활성화되고 무한 루프 TinyOS 작업에서 TinyOS TOSH_run_task ()를 호출 있습니다. 스케줄러를 실행합니다. 커널에서 작업 스케줄러, 즉 TOSH_run_task ()를 실행합니다.