임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

23
임베디드 시스템 설계 프로젝트 “EMPOS-II를 활용한 영어단어 학습기003분반 20조 (12101387 김대기 && 12081045 이재혁)

Transcript of 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

Page 1: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

임베디드 시스템 설계 프로젝트 “EMPOS-II를 활용한 영어단어 학습기”

003분반

20조

(12101387 김대기 && 12081045 이재혁)

Page 2: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

목차

• 프로그램 개발 동기 & 목적

• 팀원 소개 & 역할 분담

• 프로그램의 주요 기능 소개

• 구체적인 프로그램 설명

• 프로그램 시연

• 결론 및 향후 발전 가능성 제시

• 질의 응답

Page 3: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

프로그램 개발 동기 & 목적 (1/2)

• EMPOS-II 보드를 이용해 영어 단어를 학습할 수 있는 환경을 구현하는 것이 우리 프로젝트의 목표!

• 3가지 이상의 EMPOS-II 디바이스를 이용하면서 실생활에 유용한 어플리케이션을 개발하는데 해당 주제가 적합하다고 판단.

Page 4: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

프로그램 개발 동기 & 목적 (2/2) • 1)Text LCD, 2)Push-Down button, 3)7-Segment LCD,

4)LED 등 EMPOS-II 보드의 4가지 디바이스를 활용해 영어 단어 학습기를 구현하기로 함!

• 디바이스 드라이버 작성과 Memory Map 등 수업시간에 배운 내용으로 각 디바이스를 활용!

Page 5: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

팀원 소개 & 역할 분담

• 이재혁 •디바이스 드라이버, 디버깅 및 코드 최적화

• 김대기 •프로그램 디자인, 어플리케이션 개발, 문서 작업

Page 6: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

프로그램 주요 기능 소개 (1/4)

'This' is a vehicle with wings and one or more engines that enable it to fly through the air.

1) Text LCD를 통해 문제 및 보기 출제

1) Taxi 2) Bus 3) Ship 4) Subway 5) Airplane

Page 7: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

프로그램 주요 기능 소개 (2/4)

1) Taxi 2) Bus 3) Ship 4) Subway 5) Airplane

2) push-down button을 통해 정답 입력

1 2 3 4 5 x x x

1~5번 까지의 button만을 이용

Page 8: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

프로그램 주요 기능 소개 (3/4)

3) 맞혔거나 틀렸을 경우 LED 반짝임

맞혔을 경우 틀렸을 경우

시간

Page 9: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

프로그램 주요 기능 소개 (4/4)

4) 지금까지 맞힌 개수를 7 Segment에 표시

Page 10: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

구체적인 프로그램 설명 (1/9)

• 각 디바이스 컨트롤 방법

디바이스 컨트롤 방법

Text LCD Mmap

LED Mmap

7 Segment Device Driver

Push-down Button Device Driver

Page 11: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

구체적인 프로그램 설명 (2/9)

프로그램 flow chart

Page 12: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

구체적인 프로그램 설명 (3/9)

• 영어 단어 문제를 관리하기 위해 구조체 배열 이용.

• 구조체를 이용하면 ‘문제, 보기, 정답을 한 묶음’으로 처리할 수 있고 배열로 선언할 수 있어 편리하다. (순수한 C이기 때문에 클래스 사용 불가!)

struct struct_problem { char *problem; //문제 char *example; //보기 int correct; //정답 };

struct struct_problem problems[NUMBER_OF_PROBLEM];

Page 13: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

구체적인 프로그램 설명 (4/9) • 문제 데이터를 파일에서 불러오기.

void make_problems() { FILE *file = fopen("problems","r"); //파일 오픈 char line[512]; int i,j,len; for(i=0; i<NUMBER_OF_PROBLEM; i++) { for(j=0; j<3; j++) { fgets(line,sizeof(line),file); //파일에서 한 줄씩 READ len = strlen(line); switch(j) { case 0: problems[i].problem = (char *)malloc(len); strcpy(problems[i].problem, line); break; case 1: … case 2: … } } } }

Page 14: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

구체적인 프로그램 설명 (5/9)

• Text LCD는 한번에 최대 40문자(20 x 2)까지 표현할 수 있다.

• 영어 문제는 보통 40문자를 초과함.

• EX) 'This' is minced meat which has been shaped into

a flat circle. 63 문자, Overflow!!

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

Page 15: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

구체적인 프로그램 설명 (6/9)

• 해결하기 위해서는? 문제를 나눠서 보여주기!

‘ T h i s ‘ i s m i n c e d m e a

t w h i c h h a s b e e n s h a

p e d i n t o a f l a t c i r c

l e ,

언제 다음 화면을 보여줄 것인가? 일정한 시간을 기준으로? 유저가 원할 때!

Page 16: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

구체적인 프로그램 설명 (7/9)

‘ T h i s ‘ i s m i n c e d m e a

t w h i c h h a s b e e n s h a

p e d i n t o a f l a t c i r c

l e ,

push-down button중 하나를 누르면 다음 화면을 보여줌.

1 2 3 4 5 x x x

Page 17: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

구체적인 프로그램 설명 (8/9)

함수명 기능

void make_problems() 파일에 저장되어있는 데이터를 읽어 문제를 구성함

void usrsignal(int sig) 푸시다운버튼 시그널 핸들러

int get_pushbutton() 푸시다운버튼 입력을 기다리고 유저가 입력한 버튼 번호를 리턴

int print_question(struct struct_problem p)

인자로 받은 구조체를 이용해 문제와 보기를 출력하고 유저의 입력을 기다린 후 정답=0, 오답= -1 리턴

void good(int count) 문제를 맞췄을 경우 LED 반짝거림, count 만큼 반복

void bad(int count) 문제를 틀렸을 경우 LED 반짝거림, count 만큼 반복

• 유저 어플리케이션의 주요 함수

Page 18: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

구체적인 프로그램 설명 (9/9)

• main 함수 주요 부분

make_problems(); //파일에 저장되어있는 데이터를 읽어 문제를 구성함 for(i=0; i<NUMBER_OF_PROBLEM; i++) { //문제의 개수 만큼 반복 //문제 및 보기를 출제하고 리턴 값 검사 if((ret = print_question(problems[i]))==0) { //맞혔을 경우 good(5); USER_SCORE++; ioctl(dev_segm,SEGMENT_WRITE_FIRST,&USER_SCORE,4); } else { //틀렸을 경우 bad(5); } }

Page 19: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

개발 및 테스트 환경

분류 내용

Target Device HBE-EMPOS-II

Host OS Fedora

Cross-Compiler arm-linux-gcc

Text Editor gedit

Page 20: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

프로그램 시연

Page 21: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

결론 및 향후 발전 가능성 제시 (1/2)

• 실습실을 이용할 수 있는 시간이 한정되어 있기 때문에 주어진 시간 내에서 충분히 해결할 수 있는 주제를 선택했다고 판단.

• 기존 실습시간에 만들었던 디바이스 드라이버와 mmap 사용법 등을 적극 활용해 프로젝트를 완성.

• 키보드나 마우스를 통해 입력을 하고 모니터를 통해 프로그램 출력을 확인하던 다른 수업의 프로젝트와 달리 다양한 장치를 활용해 입/출력 할 수 있었던 점이 가장 흥미로웠음.

Page 22: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

결론 및 향후 발전 가능성 제시 (2/2)

• Text LCD 특성상 한글을 표현할 수 없고 그래픽 적으로 제한이 많기 때문에 TFT LCD와 터치스크린을 이용한다면 더욱 유용한 어플리케이션을 개발할 수 있을 것.

• 유저의 정보를 데이터베이스화 하여 관리한다면 유저 레벨에 맞는 문제를 출제하거나 중복된 문제를 출제하는 것을 방지할 수 있을 것.

Page 23: 임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기

Any Question?

TNX,