공대생의 일기/Embedded2010. 12. 28. 01:54
2008년

검지발가락이 정리한 임베디드 리눅스/GUI QT 강의 내용

 

Windows와 Linux 양쪽의 플랫폼에서 동작 가능하게 하기 위해 노르웨이의 TrollTech의 두 명의 창업자에 의해 개발이 시작되었음.

 

1.중점 설계 사항

․ 각 플랫폼별 라이브러리를 따로 작성

․ 개발자는 플랫폼 의존적인 부분을 신경쓰지 않고 고 수준 API만을 쓰도록 지원

․ C++을 기반으로 작성

 

1)장점

․ 세련된 UI 디자인

․ 16년의 오래된 역사 만큼 안정성 보장

․ 풍부한 레퍼런스 및 기술 문서 제공

․ GPL 라이선스 및 QPL 상업용 라이선스로 제공

․ 빠른 버그 패치

․ 국제화 지원 - Uicode 지원

․ 다른 GUI 툴킷에 비해 코드량이 적음

․ 처음 접하는 개발자돠 쉽게 익히고 활용 가능

 

2)단점

 

․ 해외와 달리 국내에서는 부족한 개발 저변

․ 상업용을 위해서는 라이선스를 구입해야 함.

․ C++ 및 MOC로 인한 느린 컴파일 속도

․ GTK+에 비해 상대적으로 큰 용량이 필요.

 

3)활용 분야

․ KDE프로젝트

․ PMP나 스마트 폰등을 통해 해외에서 상용화 되었음

 

4)특징

(1)멀티 플렛폼 C++ GUI ToolKit

 

․ 해당 플랫폼에서 재컴파일 하는 것으로 유닉스/윈도우/Mac/Embedded 환경에서 실행가능

 

(2)C++ 기반 객체 지향 클래스 라이브러리

 

․ QT 모든 구현이 C++ Class로 캡슐화하여 사용이 용이하고 상속을 이용하여 확장 기능

 

(3)국제화 기능 지원(2.0부터 | 18n 기본 제공)

 

․ 유니코드 지원

․ QT Languist를 통해 메시지의 번역이 쉬움 (QT3.0이후)

 

(4)Opne Source

 

․ 모든 소스가 오픈되어 있음.

․ 필요에 따라 Library Customizing 이나 debugging 가능

 

(5)Signal / Slot 메커니즘

 

․ 객체의 신호를 다른 객체 슬롯에 연결함으로써 프로그램 동작을 결정

 

(6)표준 GUI를 구성할 수 있는 풍부한 Widget

 

․ 표준 User Interface(Push button, list, menu, checkbox..) 모두 제공

․ 표준 Look 과 Feel을 제공(Theme 기능 제공)

 

(7)QT용 font 지원

 

․ qpf라는 QT용 폰트 지원

․ 사이즈 작고 속도 빠름

 

(8)멀티 Thread 지원

 

․ QThread 라는 쓰레드 클레스를 지원하여 쓰레드 프로그램 작성이 쉬움

 

(9)비디오 프레임 버퍼 직접 액세스 하여 Display 기능 수행

 

․ Qt/E 라이브러리가 직접 프레임 버퍼를 제어함.

 

(10)타 GUI 툴킷에 비해 적은 코드량

 

․ 텍스트 문자가 흘러가는 위젯을 작성하기 위한 코드 작성시

 

․ MOTIF : 224라인

․ MFC : 164라인

․ Qt : 64라인

 

 

2.

1)Qtopia

 

․ Qt/Embedded 기반으로 만들어진 Window Manager(WM)로서 콘솔 상에서 실행하는 Qt/E 어플리케이션 MS-windows처럼 윈도우 상의 아이콘을 클릭하여 실행 할 수 있는 환경 제공

 

․ WM 기능 뿐만 아니라 Qt/E 기반으로 여러 가지 어플리케이션을 포함하고 있으므로 Qtopia를 타겟보드에 포팅하여 PDA를 위한 WM 기능 구현

2)Qt Designer

 

․ GUI 프로그램의 초기 디자인 Tool

․ 각 GUI 위젯의 속성 설정

․ 간단한 코드 입력

․ 저장시 .ui 라는 xml 형태의 파일로 저장됨

 

3.

Qt x11

QT-embeded

qtx

qte

qta

x86

x86

ARM

qvfb

가상 버퍼를 만든 뒤 애뮬레이터 사용시.

 

qvfb가 사용된

library 추출하여

보드에 이식.

uic

moc

qmake

 

 

1) uic

․ ui. 파일을 컴파일 가능한 .cpp 및 .h로 추출해주는 Tool

․ Xml 형태의 .ui파일을 분석하여 소스형태로 추출

․ uic 출을 이용한 소스 파일 추출 예제

 

 

2)MOC (Meta Object Compiler)

 

․ Qt 만의 SIGNAL/SLOT 문법은 C++에서 제공해 주지 않기 때문에 내부적으로 미리 처리하기위한 코드(Preprocessor)를 작성해야 함.

․ 원본소스의 헤더 파일 분석하여 자동으로 추가적인 소스파일(moc_기존파일명.cpp)을 생성함.

․ 원본소스 헤더파일내의 QOBJECT라는 매크로가 선언되어 있어야함.

․ slots 함수 및 signal 함수들을 파싱하여 새로운 소스파일을 생성함.

 

 

4)QMAKE

 

․ UIC/MOC등 복잡한 컴파일 절차를 간소화 하기위해 만들어짐.

․ 소스파일들에 대한 프로젝트 파일(.pro) 생성과 Makefile 생성의 두 가지 기능을 가짐.

․ qmake 실행 디렉토리내의 소스파일들과 디자인 파일(.ui)을 검색하여 프로젝트 파일을 생성해줌

․ 프로젝트 파일을 이용하여 Makefile을 생성함.

․ 프로젝트 파일 생성 예


․ Makefile 생성 예

 

 

 

5)QVFB(Qt Virtual Frame Buffer)

 

․ x86 리눅스 상에 가상의 프레임 버퍼를 만들어 줌.

․ x86 상에서 작성된 Embedded Qt 프로그램을 테스트 할 수 있음.

․ 가상의 프레임 버퍼이기 때문에 실제로 Embedded 장비에서도 똑같이 동작한다고 보장하기 힘듬.

․ QPF 폰트를 생성하기 위해서는 반드시 필요.

'공대생의 일기 > Embedded' 카테고리의 다른 글

[QT]qt3환경설정  (0) 2010.12.28
Posted by 검지발가락♡