본문 바로가기
코스웨어/10년 스마트폰BSP

[BSP] 업무일지 -김기찬-

by 알 수 없는 사용자 2010. 7. 16.
728x90
반응형
오전수업

 오늘 오전에는 ARM 프로젝트 마무리 및 발표가 있었다. ARM 프로젝트는 줄별로 조를 짜고 각자 나름의 주제를 가지고 프로젝트를 진행했다. ARM 프로젝트는 주제는 자유롭데 여태까지 배운 인터럽트, 디버그유닛을 이용한 통신, Timer/Count, PIT, ADC 를 꼭 다 사용해야 했다. 
 1조는 C++ 프로젝트인 도서관리 프로그램을 ARM으로 구현했다. 디버그유닛과 인터럽트를 이용해서 키보드로 입력하는 내용이 하이퍼 터미널과 텍스트 LCD로 출력되록 했다. 그리고 PIT를 이용해 일정시간 입력이 없으면 점등되어 있던 LED가 꺼지도록 했다. 그리고 ADC와 빛의 세기에 따라 달라지는 가변저항을 이용해서 어두우면 텍스트 LCD의 백라이트가 켜지고 밝으면 꺼지도록 만들었다. 내 개인적인 생각으로는 텍스트 LCD의 백라이트를 조절되게 만든것이 잘 만들었다는 생각이 들었다.
 그리고 2조인 우리조는 ARM을 이용해 도어락 기능을 구현했다. 우리조의 경우 서로 의견과 코드를 주고 받으면서 각자 프로그램을 완성했기에 내가 작성한 프로그램을 설명한다.
 우선 전원이 들어오면 텍스트 LCD로 'SECURITY ON!'(정상모드) 이라는 문자를 띄운다. 그리고 스위치를 눌러 인터럽트를 걸어주면 디버그유닛을 사용하도록 설정하고 LCD에 'ENTER PASS'(패스워드 입력모드) 라는 문자를 띄운다. 그리고 패스워드 입력모드에 들어갔을때 아무런 입력없이 10초 정도가 지나면 다시 정상모드로 돌아온다. 패스워드는 하이퍼터미널에서 입력한다. 그리고 3번이상 암호를 틀릴경우 'WARNING'(경고모드) 계속 출력하게 된다. 이 때 ADC와 가변저항을 이용해서 일정시간 가변저항의 저항을 늘려주게 되면 다시 정상모드로 돌아가게끔 작성했다. 그리고 LED와 TC를 이용해서 정상 모드에서는 LED가 주기적으로 깜빡거리고 패스워드를 정확하게 입력하면 LED가 꺼지고 'OK!'라는 문자가 출력되게 작성했다.
 3조는 1조와 마찬가지로 C++ 도서관리 프로그램을 ARM으로 구현했다. 하지만 1조에 비해서 그 구현도가 상당히 높았다. 거기다가 기존의 printf 함수와 scanf 함수를 그대로 사용하게끔 구성했다. 기능을 그대로 구현하는데 꽤 고생한 듯한 모습이 보였다.
 4조는 비쥬얼로 승부를 했다. 4조의 프로젝트는 신호등의 구현이었다. 먼저 PIT를 이용해 신호등 불이 일정시간을 주기로 차례차례 들어오도록 작성했다. 그리고 인터럽트를 이용해서 신호등을 자동모드와 수동모드로 나누어서 사용할 수 있도록 했다. 그 다음은 ADC와 가변저항을 이용해서 주변이 어두워질 경우 야간모드로 들어가서 밤이 늦으면 신호등이 동작안하고 노란색 불만 깜빡거리는 것을 구현했다. 그리고 디버그유닛을 이용해서 신호등의 상황을 하이퍼터미널로 출력하도록 했다. 그리고 실제 신호등 모형을 만들어서 프로젝트를 발표해서 확실히 알아보기가 편했다.
 5조는 주차시스템을 구현했다. 먼저 처음에는 꺼져있다가 차가 들어오는 상황을 인터럽트로 보고 인터럽트가 걸리면 'welcom' 라는 문자가 출력된다. 그리고 다음은 차가 주차되면 'parking' 라는 문자가 출력되고 차가 나가는 상황이 되면 'bye bye'라는 문자가 출력된다. 
 
오후수업

 오후에는 C++ 프로젝트 마무리를 했다. 강사님이 제시하신 가이드라인과 좀 다르게 작성하다 보니 오래 걸리고 미흡한 부분이 많다. 
 나는 책 대여를 기준으로 코드를 작성했다. 처음에 생각했던것 보다 고려해야 할 부분이 많았다. 
 
 내가 작성한 프로그램에 메인 메뉴이다.
 먼저 메뉴를 생각하고 메뉴의 기능을 하나씩 구성해 가는 방식으로 코드를 작성했다. 회원, 도서, 대여 별로 헤더파일을 따로 작성하고 클래스를 다르게 작성했다. 그리고 대여 부분은 처음에는 클래스 상속을 이용하려 했는데 쓸데없는 용량도 많아지게 되고 생각보다 여의치 않아서 friend class 로 설정해서 코드를 작성했다. 그리고 제일 미흡하게 생각하는 부분은 입력된 내용을 파일로 저장하고 그 파일을 불러 오게 할 생각이었는데 일단 기본적인 기능을 구현하려고 생각하다 보니 그 부분을 구현하기에는 조금 시간이 모자랐다.
 아쉬운 대로 텍스트 파일로 저장만 시키도록 만들었는데 일단 제출하고 모자란 부분에 대해서는 더 공부해서 하나씩 메꿔나가봐야 할 듯하다. 
 
728x90