1 / 20

임베디드 최종 발표

2004.06.21 D 조. 임베디드 최종 발표. 김동광 (971564) 채희준 (981823) 정지현 (001669). 프로젝트 제목 USB Networking 을 이용한 임베디드 메신져 개발 프로젝트 목적 USB Network 이라는 Target 을 가지고 임베디드 보드와 HOST(PC) 와의 통신을 하기 위한 드라이버 개발 및 임베디드 보드에 맞는 UI 개발 임베디드에 맞는 개발을 위한 지식 확보 및 실습을 목적으로 하고 있다 . 개발 내역

ranit
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. 2004.06.21 D조 임베디드 최종 발표 김동광(971564) 채희준(981823) 정지현(001669)

  2. 프로젝트 제목 USB Networking을 이용한 임베디드 메신져 개발 프로젝트 목적 USB Network이라는 Target을 가지고 임베디드 보드와 HOST(PC)와의 통신을 하기 위한 드라이버 개발 및 임베디드 보드에 맞는 UI개발 임베디드에 맞는 개발을 위한 지식 확보 및 실습을 목적으로 하고 있다. 개발 내역 S3C2410 칩을 사용하는 MIZI보드를 USB Network장비로 인식하는 Device를 개발해서 HostPC(Linux)와 네트워크를 통해서 데이터를 주고 받을 수 있는 모듈 개발. 해당 모듈을 이용한 메신져 프로그램 개발. 개 요

  3. 개발 모델 • 처음 시도한 개발 모델 • 기존에 존재한 Usb-ethernet드라이버를 S3C2410으로 포팅하는것을 목표로 시도하였으나, MIZI보드의 PM문제로 중단. • (2004.06.16) 보드의 PM문제가 아닌 usbnet버전차이에 의한것으로 밝혀짐.. Linux Kernel 2.4.18.mz2 Linux Kernel 2.4.18 S3C2410usb_core Usb-uhci Usb-eth Usbnet USB Cable <MIZI Board> <Linux Host>

  4. 개발 모델(2) • Usb-ethernet의 를 대신해서 C2C케이블을 이용하여, host리눅스와 mizi모드 리눅스를 각자 host로 인식 시키켜서 네트워크 통신을 목표로 개발. • host pc(linux 2.4.20)는 문제 없이 usbnet이 적재되면서 c2c케이블을 인식 하지만 mizi보드에서는 인식이 안됨. Linux Kernel 2.4.18.mz2 Linux Kernel 2.4.20 usb_core Usb-uhci Usb-net Usbnet C2C USB Cable <MIZI Board> <Linux Host>

  5. 개발 모델(3) • 메신져를 usb를 네트워크 디바이스로 인식해서 통신하는 것을 대신해서. Serial 포트를 이용해서 character방식으로 데이터를 주고 받는 방식으로 임시 개발 하도록 변경하였음. Linux Kernel 2.4.18.mz2 Linux Kernel 2.4.20 ttyS0 ttyS0 Serial Cable <MIZI Board> <Linux Host>

  6. 개발 사양 HostPC Linux RedHat 9.0 2.4.20-8 kernel  2.4.18-14로 버전 변경 USBNetwork Device S3C2410 MIZIBoard 2.4.18 mz2 QT QT Embedded 2.3.7 QT X11 2.3.2 리눅스에서는 USBNet모듈을 이용해서 USBNetwork장비를 이용하는 Host로 작동하도록 설정한다. USB-Eth를 이용해서 MIZI보드를 USB Network장비로 인식할수 있도록 설정하여, HostPC와 통신이 가능하도록 한다. S3C2410용 Usb-eth는 아직 개발되어 있지 않기 때문에 기존에 존재하는 SA1100,PXA를 이용해서 Porting을 목적으로 한다. 개발 방법

  7. 팀원 김동광 (971564) 채희준 (981823) 정지현 (001669) 팀원별 역할 Core USB Device개발 : 김동광 Qt&Qt/Embedded를 이용한 UI 개발, Sub USB Device개발 : 정지현 Network 개발,Sub USB Device개발 : 채희준 팀원의 구성 및 역할

  8. Use Case

  9. 기능적 요구 사항 대화하는데 있어서 두명이 동시에 이야기를 해도 문제 없이 작동해야 된다. 처음 두명의 클라이언트중에 한명은 다른 사용자의 접속을 기다리고, 다른 한명은 자신이 접속하려고 하는 사용자의 IP를 입력으로 접속이 이루어 져야된다. 클라이언트는 실행시에 자신의 역할(서버/클라이언트)이 정해지지 않고, 실행후의 작업에 의해서 결정되어야 한다. 한번에 전송가능한 문자 메시지의 최대 길이는256byte로 제한한다. 비 기능적 요구사항 인터페이스의 정리. 문자 전송에 대한 정확성 보장. 사용자의 접속에 있어서 오류가 있으면 안된다. 정리되지 않은 사용자가 존재하면 안된다. 요구사항 분석

  10. 시스템 설계

  11. Sequence Diagram

  12. 설계 Interface화면 1) 실행후 접속화면 2) 사용자의 접속 대기

  13. 설계 Interface화면 <MIZI Board> <Linux HostPC>

  14. 분석내용 USB-Eth가 커널에 적재 되기 위해서는 usb_ctl에 맞는 형태의 usb-eth파일이 필요하다. S3C2410은 usb-eth가 존재하지 않고 usb_ctl까지만 존재하기 때문에 이곳에 정의해 놓은 인터페이스형태를 SA1100,PXA의 소스파일을 가져와서 변경해서 사용. 진행 사항 -usb-eth인식

  15. HostPC Usbnet모듈을 커널에 등록하고 네트워크 설정 완료. MIZI Board 기존에 존재하는 Usb-eth인 SA1100, PXA를 포팅하였지만, HostPC에서 정상적으로 인식되지 않고 있음. SA1100,PXA용 usb-eth가 S3C2410을 USBNetwork Device로 인식하는데 실패 하였다고 판단됨. MIZI보드의 USB PM부분의 문제로 인해서 현재의 환경내에서는 usb-eth구현이 불가능하다고 판단되어 작업 중지. 진행 사항-usb-eth

  16. HostPC의 Usbnet은 정상적으로 load됨. Board의 Usbnet은 정상적으로 load되지만, ifconfig명령으로 “usb0”를 등록하려고 하면 no device 가 오류가 나면서 작동이 안됨. 2.9.18-mz5의 usbnet을 포팅하여 커널에 적용하려고 했더니, mz2에는 없는 함수에 의해서 적용이 안됨. 2.9.18-mz5의 usbcore 커널 모듈을 보드에 이식해서 커널에 적용 성공. 그러나 “usb0”의 인터페이스 등록에는 실패. 기존 hostPC의 usbnet이 정상적으로 작동하는 점에 착안해서 2.4.20-8의 usbnet를 MIZI보드로 이식 하려고 작업. 2.4.20-8의 usbnet정의된부분과 2.4.18-mz2의 usbcore의 인터페이스상의 차이에 의해서 이식 실패. 작업중에 발견한점. usbcore,usbnet의 커널 적재 여부와 상관없이 ifconfig usb0 명령이 동일한 오류가 발생함. MIZI보드의 usbnet모듈의 문제가 아닌 usb0에 대한 추가적인 정보가 존재하지 않는것인지 의문이 듬. Socket통신 기반의 메신져 클라이언트 개발 완료. 진행 사항(2)-usbnet인식

  17. Host의 ttyS0와 MIZI보드의 ttyS0를 이용한 character 통신을 위한 serial port초기화 작업 시작. ttyS0로 부터 데이터를 전송하기는 성공하였지만, 데이터를 읽는데는 오류가 발생. 처음 몇번은 읽어들이지만, 계속적인 데이터 전송은 읽혀들이지 않음. 시리얼 통신을 위한 환결 설정에 문제가 있다고 판단되서, 초기 파라미터에 대한 연구. 정상적인 통신 완성 Pthread를 이용한 read/write모듈 개발. 디자인 적용. Serial 모듈과 메신져를 통합사항은 미결. 진행 사항(3) – serial통신

  18. 미지 보드측의 usb-eth의 문제가 아니라 host pc의 리눅스 커널과의 연계상에 문제가 있는것에 의심을 두어 다른 커널 버전을 찾아 보게 됨. 미지보드용 리눅스 커널과 같은 거널 버전을 가지고 있는 2.4.18-18버전을 Host 시스템에 탑재 미지 보드 2.4.18.mz2버전 커널 적재 s3c2410_usbcore적재 s3c2410_usb-eth적재 Ifconfig s3c2410_usbf up netmask 255.255.255.0 HostPC 2.4.18-14 kernel적재 Usbnet적재 Ifconfig usb0 10.10.11.3 up netmask 255.255.255.0 소켓 통신 성공!!! 미지보드와 HostPC상의 usb-eth, usbnet의 버전차이에 의해서 호환성에 문제가 있었던 것 같음. 진행 사항(4) – usb-eth

  19. 현재까지는 리눅스의 콘솔에서 하는 작업만을 해오다가, 이번에 처음으로 QT를 사용해서 리눅스 윈도우 프로그래밍을 하면서 MS-Windows와는 형태의 이벤트 처리 방식과 리눅스라는 환경이 결합해서 시행착오를 많이 격음. QT embedded를 처음 사용하면서 QT와 QT embedded사이에서 생각지 않은 버전문제를 겪었고, 테스트 하는 과정에서 환경설정 및 framebuffer를 사용하면서 어려움을 많이 겪음. Kernel모듈에 대한 경험이 적은 상황에서 임베디드 Kernel부분까지 하려고 하다 보니 너무 많은것을 공부해야 된다는 어려움과, 쉽게누군가에게 물어볼 사람이 없었다는것. 보드와 PC와 시리얼연결과 ethernet연결을 하면서 복잡한 환경 구축. 프로젝트 수행중에 겪었던 어려운점.

  20. 처음으로 Qt/Qt embedded를 사용해서 윈도우와는 다른 철학이 있는 UI컴포넌트를 사용한 경험. Kernel모듈이라는것에 대한 완벽한 이해. 임베디드 개발에 대한 개념 획득. 리눅스에 대해서 익숙해 질 수 있었다. 프로젝트 수행중에 얻은 경험.

More Related