1 / 6

임베디드 소프트웨어 구조

임베디드 소프트웨어 구조. 라운드 로빈 구조의 예. void main (void) { while (TRUE) { if (!! I/O 장치 A 가 서비스가 필요하다면 ) { !! I/O 장치 A 에 대해 필요한 것을 처리한다 . !! 데이터를 I/O 장치 A 에 넘겨주거나 가져온다 . } if (!! I/O 장치 B 가 서비스가 필요하다면 ) { !! I/O 장치 B 에 대해 필요한 것을 처리한다 .

heath
Download Presentation

임베디드 소프트웨어 구조

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 임베디드 소프트웨어 구조

  2. 라운드 로빈 구조의 예 void main (void) { while (TRUE) { if (!! I/O 장치 A가 서비스가 필요하다면) { !! I/O 장치 A에 대해 필요한 것을 처리한다. !! 데이터를 I/O 장치 A에 넘겨주거나 가져온다. } if (!! I/O 장치 B가 서비스가 필요하다면) { !! I/O 장치 B에 대해 필요한 것을 처리한다. !! 데이터를 I/O 장치 B에 넘겨주거나 가져온다. } .생략표시 . if (!! I/O 장치 Z가 서비스가 필요하다면) { !! I/O 장치 Z에 대해 필요한 것을 처리한다. !! 데이터를 I/O 장치 Z에 넘겨주거나 가져온다. } } }

  3. 인터럽트 라운드로빈 구조의 예 • 인터럽트 라운드로빈 구조의 예 BOOL fDeviceA = FALSE; BOOL fDeviceB = FASLSE; . . . BOOL fDeviceZ = FALSE; Void interrupt vHandleDeviceA (void) { !! I/O 장치 A를 처리한다 fDeviceA = TRUE; } void interrupt vHandleDeviceB (void) { !! I/O 장치 B를 처리한다 fDeviceB = TRUE; } . . . void interrupt vHandleDeviceZ (void) { !! I/O 장치 Z를 처리한다 fDeviceZ = TRUE; }

  4. 인터럽트 라운드로빈 구조의 예 (Cont’d) void main (void) { while (TRUE) { if (fDeviceA) { fDeviceA = FALSE; !! I/O 장치 A로 데이터를 넘겨 주거나 가져 온다 } if (fDeviceB) { fDeviceB = FALSE; !! I/O 장치 B로 데이터를 넘겨 주거나 가져 온다 } . . . if (fDeviceZ) { fDeviceZ = FALSE; !! I/O 장치 Z로 데이터를 넘겨 주거나 가져 온다 } } }

  5. 펑션큐스케줄링 구조의 예 !! 함수 포인터들의 큐; void interrupt vHandleDeviceA (void) { !! I/O 장치 A에 대해 필요한 것을 처리 !! function_A 에 대한 함수 포인터를 함수 포인터들의 큐에 삽입 } void interrupt vHandeDeviceB (void) { !! I/O 장치 B에 대해 필요한 일을 처리 !! function_B 에 대한 함수 포인터를 함수 포인터들의 큐에 삽입 } void main (void) { while (TRUE) { while (!!함수 포인터들의 큐가 비어 있다 면 기다림) … !! 큐에 있는 첫 번째 함수 호출 } } void function_A (void) { !! 장치 A 에게 필요한 일을 처리 } void function_B (void) { !! 장치 B 에게 필요한 일을 처리 }

  6. 5.4 RTOS 구조의 예 void interrupt vHandleDeviceA (void) { !! I/O 장치 A에 대해 필요한 일을 처리한다 !! 시그널 X를 설정한다 } void interrupt vHandleDeviceB (void) { !! I/O 장치 B에 대해 필요한 일을 처리한다 !! 시그널 Y를 설정한다 } . . . void Task1 (void) { while (TRUE) { !! 시그널 X를 기다린다 !! I/O 장치 A로부터 데이터를 받거나 준다 } } void Task2 (void) { while (TRUE) { !! 시그널 Y를 기다린다 !! I/O 장치 B로부터 데이터를 받거나 준다 } }

More Related