1 / 23

임베디드시스템

임베디드시스템. 2012 년도 가을학기. 담당교수. 조장우 , 동아대학교 컴퓨터공학과 , SF 619 호 e-mail: jwjo@dau.ac.kr www: http://web.donga.ac.kr/jwjo phone: 200-7780. 성적평가. 중간 시험 : 30% 기말 시험 : 30% 실험 보고서 : 20% 설계 과제 : 10% 출 석 : 10%. 교재. PXA270 을 이용한 임베디드 시스템구조 및 응용 , 상학당

cuyler
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. 임베디드시스템 2012년도 가을학기

  2. 담당교수 • 조장우, 동아대학교 컴퓨터공학과, SF619호 • e-mail: jwjo@dau.ac.kr • www: http://web.donga.ac.kr/jwjo • phone: 200-7780

  3. 성적평가 • 중간 시험: 30% • 기말 시험: 30% • 실험 보고서: 20% • 설계 과제: 10% • 출 석: 10%

  4. 교재 • PXA270을 이용한 임베디드 시스템구조 및 응용, 상학당 • X-Hyper270TKU 실습교재, 하이버스 • 입문자를 위한 임베디드시스템, 사이텍미디어 • 재미있는 임베디드시스템 디자인, CMPBooks • RTOS를 이용한 실시간 임베디드 시스템 디자인, 에이콘 • 임베디드시스템을 위한 RTOS, 에이콘 • …

  5. 임베디드시스템이란? • 특정한 기능을수행하기 위하여 결합된 컴퓨터 시스템 • HW 로 구현한 기능과 비교 • Computers Inside a Product (or a System) • 다양한 목적으로 사용되는 PC와 달리, 한 가지 또는 몇 가지 특수한 작업을 수행 • PDA와 같이 Embedded System에서도 점차 범용성을 띄어 가고 있다

  6. 임베디드 시스템 구현 방법 • 하드웨어구현 VS. 소프트웨어구현 • 부동소수점연산(80386과 이전의 프로세서) • 모뎀, 랜카드 • 프린터 • 네트워크 기능이 추가되면? • 논리곱(Logical and) • SW: bool a, b, c; c = a && b; • HW: AND gate

  7. 소프트웨어의 장점 • 일반적으로 소프트웨어 개발에서는 개발 도구를 염가로 갖출 수 있음 • 같은 CPU 보드라도 소프트웨어를 바꿔 넣음으로써 다른 처리를 하게 할 수 있고 메모리의 용량에 빈 곳이 있으면, 기능을 추가할 수도 있음 • 프로그램에 문제(버그)가 발견되면 즉석에서 수정할 수 있음

  8. 하드웨어의 단점 • ASIC 등의 하드웨어 개발에서는 일반적으로 고가의 개발 도구를 필요로 함 • 개발에는 큰 투자와 시간이 필요 • 또 다른 처리를 하게 하거나 기능을 추가하려면, 그로 인한 회로가 필요 • 또 회로에 잘못이 발견되었을 때에 그것을 수정하기 위해서는 많은 수고와 비용요구

  9. 소프트웨어의 단점 • 소프트웨어를 동작시키려면 “CPU+메모리”가 필요 • 그러나 일부러 ASIC를 개발하는 것보다는 훨씬 싼 가격으로 CPU 보드를 실현할 수 있음 • 하드웨어만으로 처리하는 경우와 소프트웨어로 처리하는 경우를 비교하면, 일반적으로는 하드웨어로 처리하는 쪽이 고속임 • 사람이 버튼을 눌러 LED를 점등 시키는 것과 같은 그다지 고속이 아닌 처리는 소프트웨어로도 충분히 처리할 수 있지만 • ns급의 성능이 요구되는 처리는 하드웨어로 처리해야 함 • 소프트웨어에서의 처리 성능을 높이기 위해서는 한층 고속의 CPU를 사용해야 함 • 그러나 고성능의 CPU는 가격도 비싸고 • 그것이 제품 가격에 반영되므로 어느 정도 성능의 CPU를 채용해야 하는가 하는 것은 사실 매우 중요한 문제임

  10. 임베디드 시스템의 구성 • 임베디드 시스템 구성 • 임베디드 H/W • 프로세서/컨트롤러, 메모리, I/O 장치, 네트워크 장치, 센서, 구동기 • 임베디드 S/W • 운영체제, 시스템 S/W, 응용 S/W H/W S/W Micro Processor OS - Kernel Memory 시스템 소프트웨어 입출력 장치 응용 소프트웨어 네트워크 장치 임베디드 시스템

  11. 범용컴퓨터와 비교 • 임베디드 • 마이크로 프로세서의 성능? • 전체 제품의 일부 • 특정 기능 수행 • 필요한 주변장치 • 사용자의 개입 없이 동작 • 범용컴퓨터 • 마이크로 프로세서 • 제품 자체 • 범용 기능 수행 • 필요할 수 있는 주변장치 • 사용자와 대화형으로 동작

  12. Where Are the Processors? Where Has CS Focused? Direct2% InteractiveComputers Robots6% Vehicles12% 200Mper Year 8.5B Parts per Year Servers,etc. Embedded Computers 80% In Vehicles In Robots Embedded 프로세서 Source: DARPA/Intel (Tennenhouse)

  13. 임베디드 소프트웨어 구조 입문자를 위한 임베디드시스템5 장

  14. 라운드 로빈 구조의 예 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에 넘겨주거나 가져온다. } } } What is the worst wait?

  15. 인터럽트 라운드로빈 구조의 예 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; }

  16. 인터럽트 라운드로빈 구조의 예 (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로 데이터를 넘겨 주거나 가져 온다 } } } What is the worst wait?

  17. 펑션큐스케줄링 구조의 예 !! 함수 포인터들의 큐; 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 에게 필요한 일을 처리 } What is the worst wait?

  18. 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로부터 데이터를 받거나 준다 } }

  19. The Shared-Data Problem 입문자를 위한 임베디드시스템4.3

  20. Classic shared-data problem static int iTemperature[2]; void interrupt vReadTemperatures (void) { iTemperatures[0] = !! 하드웨어로부터 값을 읽음 iTemperatures[1] = !! 하드웨어로부터 값을 읽음 } void main (void) { int iTemp0, iTemp1; while (TRUE) { iTemp0 = iTemperatures[0]; iTemp1 = iTemperatures[1]; if (iTemp0 != iTemp1) !! 비상 경보를 울린다; } }

  21. Classic shared-data problem static int iTemperature[2]; void main (void) { int iTemp0, iTemp1; while (TRUE) { // iTemp0 = iTemperatures[0]; // iTemp1 = iTemperatures[1]; // if (iTemp0 != iTemp1) if (iTemperatures[0] != iTemperatures[1]) !! 비상 경보를 울린다; } }

  22. Classic shared-data problem static int iTemperature[2]; void main (void) { int iTemp0, iTemp1; while (TRUE) { iTemp0 = iTemperatures[0]; iTemp1 = iTemperatures[1]; if (iTemp0 != iTemp1) !! 비상 경보를 울린다; } }

  23. Classic shared-data problem static int iTemperature[2]; void main (void) { int iTemp0, iTemp1; while (TRUE) { disable(); iTemp0 = iTemperatures[0]; iTemp1 = iTemperatures[1]; enable(); if (iTemp0 != iTemp1) !! 비상 경보를 울린다; } }

More Related