Embedded System Lab. II GUI Programming in Embedded Linux 경희대학교 컴퓨터공학과 조 진 성.

Slides:



Advertisements
Similar presentations
㈜다산씨앤씨 The next generation Windows-based Terminal1 교육 정보화를 위한 W B T 제안서.
Advertisements

2013 년 2 학기 임베디드 프로그래밍. 권장사양  HOST PC 권장사항  리눅스 배포판이 설치된 PC - 권장 배포판 : Asianux open edition3 ( 라곤 하지만 Ubuntu, Fedora, CentOS 등 다양한 리눅스 프랫폼이 가능 )  PC.
시스템 개요 진화 과정 RIA & X-Internet Web Client/Server Main FRame
졸업 프로젝트 중간보고서 12조 Spot Browser.
QT/Embedded와 웹 서버 Qt/Embedded 개요 Qt/Embedded 개발 환경 구축
Let’s Speak English Well
1월 19일 주일오전예배 핸드폰 전원을 꺼주시기 바랍니다.
Distributed and Cloud Computing Lab. Embedded System Software 개발 환경 설정 Dept. of Computer Science and Engineering Sogang University, Seoul, KOREA 1.
Root File System 충북대학교 지능로봇연구실.
개발 환경 설치 Embedded System Software
EZ Board-M In-Ho, Roh Real Time System Lab.
임베디드 시스템 개발 환경 (1) Lecture #3.
임베디드 SW 시스템 소개 - 임베디드 운영체제 - 임베디드 리눅스 - 임베디드 인터넷
임베디드 시스템 개론 8. 임베디드 시스템 개발 환경 8주차 강의 자료 Embedded System Lab.
임베디드 시스템 개발을 위한 리눅스 환경설정.
5과 하나님의 말씀인 성경.
Network Lab. Yong bae, Kim
기술부 1차 세미나 - SGE * Clunix 클루닉스 2006년 기술부/부장 서진우
FTP 09 SPARCS 박철웅 [dothack].
2017 은광교회 청년디모데 여름 수련회 ( ).
Windows CE 시스템 개발 환경 구축.
제6장 FUSING.
PXA270 개발환경 설정 Ubuntu 실습용.
개발 환경 개발 환경 개요 PXA270과 타겟 시스템 툴체인 환경 구축 JTAG 유틸리티 미니컴 Make 유틸리티
크로스 컴파일 환경 구축.
오목게임 W32 로봇시스템제어(하) GROUP 7 노성동, 하선웅, 김관준
NFS, FTP coearth, george.
제16장 QT/Embedded.
Kernel Porting Lecture #7.
제4장 Cross Compiler 설치.
Minicom,tftp,nfs설정,vnc설정
FUSING.
임베디드 프로그래밍 Lecture #
Tftp, nfs, samba 실습 임베디드 시스템 I.
Linux를 이용한 Embedded 장비 개발
임베디드 리눅스 시스템의 기본 개념 강의 목표 내용 임베디드 리눅스 시스템의 기본 개념과 주제 제시 1. 임베디드 시스템
QT 프로그래밍 발표: 김래영.
Development Environment of Embedded System : part 1
The next generation Windows-based Terminal
Double O to the I to the A+ 문무활, 유용승, 홍민정
임베디드 시스템 개론 3주차 Embedded System..
Embedded System Porting (2)
Embeded 기초 다지기 2015년 10월 26일 intern Sally
14장. NFS 서버의 설치와 운영.
PROJECT DIGITAL FRAME 홍민우 이욱중 이승연.
임베디드 소프트웨어 동향. 임베디드 소프트웨어 동향 임베디드 S/W 시장분류 솔루션 측면 시스템 측면 운영체제 개발도구 설계도구 테스트도구 유선통신 무선통신 정보가전 자동차제어 산업자동화 사무자동화 군사/항공우주 의료장비 솔루션 공급 업체 임베디드 S/W시장 임베디드.
Chapter 8 연결형 프로토콜 서버 발표자 : SE Lab 황 성 하
Department of Computer Engineering
IPv6 기반의 Mobile IP 기술 개발 (iSCSI 성능 분석) - 프로젝트 중간보고서 -
나를 안아줘요! 조 태 문.
QT/Embedded, iPop을 이용한 네트워크 오목게임
QT/Embedded, iPop을 이용한 네트워크 오목게임
고급 시스템 프로그래밍 및 실습 Term Project : Qt 프로그래밍을 이용한 오목 게임
실시간 자원 량 정보 제공을 결합한 Heartbeat
Mips cross compile OS LAB.
홈 네트워크 시뮬레이션 정 찬 번 석 성 환.
인터넷보안 실습 2012년 1학기.
신저작권법에 의해 한국 내에서 보호를 받는 저작물이므로 무단전제와 무단복제를 금합니다.
2d game pRogramming 1차 발표 이재남.
Operating System Multiple Access Chatting Program using Multithread
MONSTER CAR 구정재 한석우 김재형.
NFS (Network File system)
Internet 유선 랜카드 A 회사 네트워크 장비 (인터넷 공유 기능 활성화)
地方自治團體의 財政 < 地方自治團體의 財政 > 1. 意義
통신 메모리 공유를 이용한 클라이언트/서버 설정 방법
실시간 음성 채팅 서비스 (Voice Chatting Programe)
임베디드 리눅스 설치 및 동작 Lecture #5.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
Department of Computer Engineering
Presentation transcript:

Embedded System Lab. II GUI Programming in Embedded Linux 경희대학교 컴퓨터공학과 조 진 성

Embedded System Lab. II 2 주요 내용 임베디드 시스템에 사용 가능한 GUI 이해 임베디드 시스템에서의 네트워크 프로그래밍 이해 간단한 1:1 오목게임 구현

Embedded System Lab. II 3 Qt 소개 QT 는 trolltech 에서 개발하고 배포하는 cross 플랫폼 GUI 라이브러리 QT 를 이용해서 만들어진 코드는 ( 약간만 신경 써준다면 ), 윈도우, Mac, Linux, *nix 에 관계없이 컴파일 해서 사용 가능 C++ 을 이용해서 완전히 객체지향적으로 작성되었다는 것도 큰 장점 Qt 는 유닉스와 X11 시스템을 위한 C++ 라이브러리이자 GUI 툴킷이다. 유닉스 운영체제 ( 리눅스, 솔라리스 포함 ) 를 위한 프리 소프트웨어를 개발 한다면 라이센스 비용이 들지 않는다. Qt 를 이용한 프로그램은 속도가 매우 빠르다.

Embedded System Lab. II 4 Qt/Embedded 소개 Qt 라이브러리를 기본으로 하여 개발된 임베디드 시스템용 GUI 라이브러 리 X- 윈도우 없이 리눅스 커널에서 제공하는 Frame Buffer 를 이용하여 그래 픽 장치에 접근 개발에 필요한 사양 1. CPU – 셀 300 이상 2. RAM – HDD – 8G(linux-2G)4. Serial Port 5. internet 6. Embeded 기기 – 16bit color 지원 모델 (iPAQ) 7. 시리얼케이블 ( 커널 X -> 필요 )

Embedded System Lab. II 5 QT /Embedded 설치 및 환경 설정 (1) QT /Embedded 다운로드 ftp://ftp.trolltech.com/qt/source/qt-embedded-free tar.bz2 를 root 디 렉토리에 다운로드 압축 해제 (host) QT/ Embedded 환경설정 (host) - QTDIR : QT 가 설치되어 있는 디렉토리 - LD_LIBRARY_PATH : QT 에서 사용하는 공유 라이브러리를 이용 할 수 있도록 다음을 추가 # tar xvjf qt-embedded-free tar.bz2// 압축제거 # ln –s qt-embedded-free qte// 생성된 디렉토리를 qte 로 심볼릭을 해줌 /* ~/.bash_profile 에 다음을 추가 */ export QTDIR=/root/qte export LD_LIBRARY_PATH=/root/qte/lib:$ LD_LIBRARY_PATH

Embedded System Lab. II 6 QT /Embedded 설치 및 환경 설정 (2) 환경설정 적용 (host) QT/Emdedded Configuration(host) #./configure -embedded ipaq -shared -depths 8,16,24,32 -thread -no-cups -qt-mouse-linuxtp # source ~/.bash_profile//.bash_profile 을 재 적용 yes 를 입력

Embedded System Lab. II 7 QT /Embedded 설치 및 환경 설정 (3) libstdc++.a 라이브러리 설치 (host) 각 키트에서 제공해주는 툴 체인에는 libstdc++.a 라이브러리가 없기 때문에 부가적으로 libstdc++ 라이브러리를 해당 툴체인의 lib 디렉토리에 카피하거나 링크를 걸어주어야 한다. /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/libstdc++.a ( 위치 ) Uic 설치 (host) QT/Embedded 를 컴파일 하기 위해서는 qt-x11 용 uic 가 필요하다. /usr/lib/qt-3.1/bin/uic ( 위치 ) # cd /usr/lib/gcc-lib/i386-redhat-linux/3.2.2 # cp libstdc++.a /usr/local/huins-arm-linux-R1.1/lib/libstdc++.a # cd /usr/lib/qt-3.1/bin/uic # cp uic $QTDIR/bin

Embedded System Lab. II 8 QT /Embedded 설치 및 환경 설정 (4) 컴파일 (host) 컴파일이 성공적으로 끝났으면 QT/Embedded 라이브러리를 확인 # cd $QTDIR # make ARM 용으로 컴파일 된 library 을 볼 수 있다.

Embedded System Lab. II 9 QT /Embedded 설치 및 환경 설정 (5) 타겟보드 환경설정 ARM 용으로 컴파일된 qt-embedded-free 즉 qte 를 NFS 설정을 통해서 마 운트 한다.(target) 타겟에서 호스트에 있는 qt 라이브러리를 참조하기 위해 NFS 설정을 한 다.(host) – 아래 내용은 각자 환경에 따라 적절히 변경 할 것 ~/.profile 환경설정 (target) /* ~/.profile 에 다음을 추가 */ export QTDIR=/mnt/nfs/qte export LD_LIBRARY_PATH=/mnt/nfs/qte/lib:$LD_LIBRARY_PATH export QWS_MOUSE_PROTO=linuxtp:/dev/ts /* /etc/exports 파일에 다음을 추가 */ /root/qte (rw, no_root_squash) # service nfs restart// 서비스 restart target# mount –t nfs :/root/qte /mnt/nfs/qte //nfs mount target# source ~/.profile// 설정 적용

Embedded System Lab. II 10 QT /Embedded 설치 및 환경 설정 (6) libstdc++ 라이브러리 설치 (target) Host 에서 target 으로 라이브러리 복사과정은 생략 – 적절한 방식으로 옮길 것 target# cp libstdc++.a /lib//host 에 있는 libstdc++ 을 target 에 복사 target# cd /lib//’/lib’ 로 이동 target# ln –s /lib/libstdc++.a libstdc++-libc6.1-2.so.3 // 라이브러리를 심볼릭 해줌 ~/.profile ~/.profile 적용 심볼릭

Embedded System Lab. II 11 QT /Embedded 설치 및 환경 설정 (7) 예제프로그램 테스트 Host 쪽의 Qt/Embedded 의 샘플 프로그램을 컴파일한다. Qt 프로그램을 실행하기 위해서는 Xindow 종료시켜야한다. 따라서, ps 로 xwindow 를 확인한후 ‘kill -9 75’ 를 실행하여 xwindow 를 종료시킨다.

Embedded System Lab. II 12 QT /Embedded 설치 및 환경 설정 (8) 응용프로그램을 다운로드후 실행 (target) #./hello –qws// 응용프로그램 실행 프로그램 다운로드 과정 생략 X 프로세스를 죽인 후 실행시키면 터치 스크린의 초록바탕에 실행 되는 것을 확인 할 수 있다.

Embedded System Lab. II 13 QT /Embedded Application(1) 어플리케이션 개요 임베디드 키트상에서 Qt/E 를 이용하여 간단한 1:1 네트워크 게임 실행 간단한 리눅스 용 프로그램을 임베디드 키트상에 올려봄으로써 임베디드 기기 와 리눅스에 대한 이해

Embedded System Lab. II 14 QT /Embedded Application(2) 어플리케이션 인터페이스 - 메인화면 오목판 턴 알림 로고 검은 돌 / 하얀 돌 놓은 개수 표시 메뉴 버튼 ( 좌부터 ). Connect. Disconnect. IP information

Embedded System Lab. II 15 QT /Embedded Application(3) 어플리케이션 인터페이스 – 네트워크 연결 IP 주소 입력 1. Connect 버튼 클릭 Port 번호 입력 2. 터치 패드로 입력 3. OK 버튼 클릭 IP number 알림 창

Embedded System Lab. II 16 QT /Embedded Application(4) 어플리케이션 상속도  CSockIo : 소켓통신 (UDP 이용 ) 관련 클래스  CConnectDlg : 접속대화상자 관련 클래스  CGameBoard : 오목게임 메인 클래스  MainWindow : MainWindow 폼 클래스

Embedded System Lab. II 17 QT /Embedded Application(5) 어플리케이션 흐름도 Server 네트워크 연결 Start ok 턴 방식 Client First 네트워크 종료 게임 종료 Start Client Game 패킷 게임적용

Embedded System Lab. II 18 QT /Embedded Application(6) 어플리케이션 알고리즘 게임보드는 14*14 크기의 2 차원 배열을 적용하여 배열상에서 흰돌과 검은돌 을 넣고 뺄 수 있도록 한다. 오목게임의 룰을 적용하여 연속으로 5 개의 같은 돌이 놓였을 경우 게임이 끝 나게 된다. 돌을 놓을 경우 첫 번째 배열 부터 Vertical, Horizontal, LeftDown, RightDown 체크를 하여 연속된 돌이 5 개 있는지 체크한다. 오목판에 돌이 다 차면 비기고 새 게임이 시작 된다

Embedded System Lab. II 19 QT /Embedded Application(7) 네트워크 부분 턴 방식의 게임 진행을 한다. 하나의 프로그램에서 서버 / 클라이언트의 역할을 동시에 하고, 접속을 하는 쪽이 클라이언트가 된다. 항상 클라이언트부터 게임을 시작한다. 한 게임이 끝나면 진 사람부터 다시 게임을 시작한다. 네트워크 구성 클라이언트 Client socket 서버 Client socket udp packet

Embedded System Lab. II 20 QT /Embedded Application(8) 네트워크 프로토콜 messagecommandxy COMMAND CONNECT 접속요청 CONNECT_ACK 접속에 대한 응답 CLOSE 게임종료 SHOOT 돌 놓기 SHOOT_ACK 돌 놓기 응답 MESSAGE 사용 안 함

Embedded System Lab. II 21 QT /Embedded Application(9) 네트워크 흐름도 clientserver OnNewPacketConnect() OnNewPacketConnectAck() connect connect_ack game start OnNewPacketShoot() shoot OnNewPacketShootAck() shoot_ack OnNewPacketClose() close game quit

Embedded System Lab. II 22 QT /Embedded Application(10) 어플리케이션 프로젝트 생성 작성된 어플리케이션 폴더에서 프로젝트 파일생성 생성된 프로젝트 파일 * 파일은 폴더명으로 생성됨

Embedded System Lab. II 23 QT /Embedded Application(11) Makefile 생성 Makefile 설정 #qmake –spec /root/qt-embedded-free-3.3.4/mkspecs/qws/linux-ipag-g++ -o Makfile omol_arm.pro 생성된 Makefile  qmake 시 주어지는 옵션을 자세히 모를 경우 ‘$QTDIR/example’ 에 있는 예제 응용프로그램의 Makefile 을 참고. 생성된 Makefile 의 컴파일러를 확인한다. Gcc 로 되어 있을경우 arm-linux-gcc 로 변경한다.

Embedded System Lab. II 24 QT /Embedded Application(12) 컴파일 타겟보드에 QT 라이브러리와 어플케이션 복사 타겟보드에서 QT app 를 실행하기 위해 라이브러리를 복사 위 그림에서는 nfs 로 연결해 호스트에 있는 어플리케이션과 라이브러리를 타겟으로 복사하고 있다.

Embedded System Lab. II 25 QT /Embedded Application(13) 타겟보드의 환경설정 라이브러리의 심볼릭을 해준다. #cd /qte/lib #ln –s libqte-mt.so libqte-mt.so.3 타겟보드의 ~/.profile 을 열어 host 에서 복사된 QT 라이브러리의 위치를 잡고, 터치스크린을 이용할수 있도록 마우스 프로토콜을 설정한다. # source ~/.profile 하는 것을 잊지 않도록 한다. 심볼릭을 해주는 이유는 어플리케이션 실행 시 해당 이름의 라이브러리를 찾기 때문이다.

Embedded System Lab. II 26 QT /Embedded Application(14) 어플리케이션 실행 작성된 app 가 네트워크 프로그램이므로 실행 전에 ip 를 맞춰 준다. 타겟 1 타겟 2 이전까지의 어플리케이션 복사와 라이브러리 설치는 두 타겟 모두 동일하게 설치된다. #ps #kill #./omok -qws 타겟의 xwindow 을 종료하고 app 을 실행한다.

Embedded System Lab. II 27 QT /Embedded Application(15) 실행화면 1 키트 실행 화면

Embedded System Lab. II 28 QT /Embedded Application(16) 실행화면 2 KIT 2 개를 연결하여 게임을 실행 한 모습