'공대생의 일기/Embedded'에 해당되는 글 2건

  1. 2010.12.28 [QT]qt3환경설정
  2. 2010.12.28 [QT]qt에 대하여
공대생의 일기/Embedded2010. 12. 28. 02:01
2009년

설치. ( qte에서 (보드없이)사용가능한 )

 

① CD 의 /kenel/mkimage를 /usr/bin와 /usr.src 에 옮긴다.

② /usr/src/linux-2.6.21 -xstation 으로 이동한다.

③ xstation에 기본적으로 설정된 환경을 적용합니다.

#make xstation_defconfig

 

④기본 설정 환경 이외에 설정될 환경을 적용합니다.

# make oldconfig

 

⑤ 마지막으로 커널 이미지를 생성합니다.

# make uImage

 

⑥ 툴 체인을 최상위로 이동 합니다.

#cp toolchain_ tar.gz /

 

⑦ 최상위에서 압축을 풀어줍니다.

# tar zxvf toolchain_tar.gz

 

⑧ 다음과 같은 경로에 설치가 된다.

 

/usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-softloat-linux-gnu/bin

 

⑨ #cd /usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-softloat-linux-gnu/bin 으로 옮긴다.

 

⑩ path를 지정해 준다.

 

# vi /root/.bash_profile

 

PATH = $ PATH : $ HOME/bin

PATH = /usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-softloat-linux-gnu/bin:$PATH

 

⑪ 부팅을 해줘야 하는데 부팅후 오류를 방지하기위해 부팅을 하지 않고

# source /root/./bash_profile

 

⑫ #echo $PATH

 

⑬ 최상위 디렉토리로 가서

#arm - tab 키 두 번 해서 arm 파일 나오면 성공.!

(tool 체인 설치 끝)

 

⑭ qt에 대한 관리를 위해서 최상위 디렉토리에섯 qtdir이라는 디렉토리를 만듭니다.

#mkdir/qtdir

 

⑮해당 디렉토리로 이동합니다.

#cd /qtdir

 

⑯qt소스 및 관련 파일을 복사 해두기 위해서 qtsrc 디렉토리를 만듭니다.

 

#mkdir qtsrc

 

⑰qtsrc 디렉토리에 qt 컴파일에 필요한 파일들을 모두 복사합니다.

 

qt_install-file.tar.gz (터치 수정 파일 및 컴파일 스크립트)

qt-embedded-free-3.3.7.tar.gz(qt 3.3.7 임베디드 소스)

qt-x11-free-3.3.7.tar.gz (qt 3.3.7 x11소스)

tsilib-0.0.2.tar.bz2(터치 스크린 소스)

 

⑱압축을 모두 해제합니다. bz2 파일은

 

#tar jxvf tslib-0.0.2.tar.bz2 를 사용하여 압축을 해제 합니다.

 

⑲ 압축이 해제 되면, 파일명과 같은 디렉토리가 생성됩니다.

 

#mv /qtdir/qtsrc/qt-embedded-free-3.3.7 /qtdir/qta

#cp -rf /qtdir/qta /qtdir/qte

#mv /qtdir/qtsrc/qt-x11-free-3.3.7 /qtdir/qtx

#mv /qtdir/qtsrc/tslib-0.0.2 /qtdir/qta/tslib

 

⑳ qt-embedded 컴파일에 사용될 스크립트 파일을 복사합니다.

#cd /qtdir/qtsrc/install-file

#cp /qtdir/qtsrc/build-arm.sh /qtdir/qta

 

수정된 터치 패드 소스를 qta의 지정된 경로로 복사 합니다.

#cp -rf qmouselinuxtp* /qtdir/qta/src/embedded

 

x11용 QT를 설치하기 위해서 설치 디렉토리로 이동합니다.

#cd /qtdir/qtx

 

#./configure -shared -thread -no-cups

컴파일 설정을 해줍니다. 쉐어드 라이브러리는 사용하고 스레드를 사용하며, 일반적인 유닉스 프린팅 시스템(cups)을 사용하지 않겠다.

 

Makefile을 수정합니다.

 

#vim Makefile

 

"all : 항목애소 sub-tutorial 앞에 #을 붙여 줍니다. (#은 주석처리)

 

컴파일 해줍니다.

#make

 

컴파일 도중 라이센스 여부가 나오면 yes를 입력합니다.

 

컴파일이 완료되면, 기존에 호스트의 qt 심볼릭 링크들을 삭제 하거나 백업을 해 줍니다.

#mv /usr/bin/qmake /usr/bin/qmake-old

#mv /usr/bin/uic /usr/bin/uic-old

#mv /usr/bin/moc /usr/bin/moc-old

#mv /usr/bin/designer /usr/bin/designer-old

 

새로운 QT x11 심볼릭 링크를 생성 합니다.

 

#ln -s /qtdir/qtx/bin/qmake /usr/bin/qmake

#ln -s /qtdir/qtx/bin/uic /usr/bin/uic

#ln -s /qtdir/qtx/bin/moc /usr/bin/moc

#ln -s /qtdir/qtx/bin/designer /usr/bin/designer

#cd /qtdir/qtx/tools/qvfb

#make clean

#make

#ln -s /qtdir/qtx/tools/qvfb/qtfb /usr/bin/qvfb

 

정상적으로 qvfb가 실행되는지 확인해 보아야 합니다.

 

#qvfb

 

 

qtx.source 파일을 만들어 리부트 후 필요 시점에서 개발환경 설정을 해 줄 수 있도록 환경변수 변경 스크립트를 만들어 줍니다.

 

#vim /qtdir/qtx/qtx.source

넣어야 할 내용

 

#!/bin/sh

 

export QTDIR=/qtdir/qtx

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export QTINC=$QTDIR/include

export QTLIB=QTDIR/lib

 

qt-embedded를 컴파일 할 때 , 필요한 파일이 있습니다. qtx에 있는 uic가 qta의 bin 디렉토리에 있어야 하므로, uic 파일을 해당 디렉토리로 복사해 줍니다.

 

#cp /qtdir/qtx/bin/uic /qtdir/qta/bin

 

qte 디렉토리로 이동 합니다.

#cd /qtdir/qte

 

qte의 컴파일 환경을 설정해 줍니다.

 

./configure -shared -thread -no-cups -qvfb -no-nis -no-s시 -no-ipv6 -qt-libpng -qt-libjpeg

 

컴파일 해 줍니다.

#make

 

vi 명령어를 사용하여 qte.source 스크립트를 만들어 줍니다.

#vim /qtdir/qte/qte/source

 

#!/bin/sh

 

export QTDIR=/qtdir/qte

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export PATH=$QTDIR/bin:$LD_LIBRARY_PATH$PATH

 

 

컴파일 테스트

#source /qtdir/qte/qte.source

#cd /qtdir/qte/examples/hello

 

#make

 

#qvfb&

 

# ./hello -qws

 

 

실행이 완료 되면 QVFB에 응용 프로그램이 구동되는 것을 볼 수 있습니다.

 

 

 

-embedded[arm] 설치

 

① QT arm 용 소스 디렉토리로 이동 합니다.

 

#cd /qtdir/qta

 

② 빌드 스크립트의 내용을 현재 장비 그리고 본 문서에 맞도록 일부 변경합니다.

 

#vim build-arm.sh

 

변경할 내용은 다음과 같다.

 

#!/bin/sh

 

#build tslib

cd tslib/

export CC=arm-softloat-linux-qnu-gcc

#./autogen.sh --host=arm-linux

./confiqure--host=arm-linux -prefix=/usr/src/linux-2.6.21-xstation

#make clean

 

.....이하 생략.....

 

 

③qstring.h 파일을 수정 합니다.

#vim qstring.h

 

196라인부터 202라인 까지의 내용을 주석처리를 하고 한 줄을 추가로 입력 해 줍니다.

 

/*

 

#ifdef Q_NO_PACKED_REFERENCE

ushort &unicode(){ return *(&ucs); }

#else

ushort &unicode(){ return ucs; }

#endif

*/

 

ushort &unicode() { ushort& tmp =ucs; return tmp;}

 

 

④ 크로스 컴파일 및 관련 라이브러리를 사용할수 있도록 qmake.conf를 설정 합니다.

 

196 라인 정도에 있는 QMAKE_INCDIR에 /qtdir/qta/include를 넣어 줍니다.

그리고 그 아랫줄에 QMAKE_LIBDIR에 /qtdir/qta/lib를 넣어 줍니다. 그리고 20여줄 아래에 보면 QMAKE_LIB_DYNLOAD에 -lts(엘티에스)를 추가 시켜 줍니다.

 

 

QMAKE_INCDIR = /qtdir/qta/include

QMAKE_LIBDIR = /qtdir/qta/lib

..(20여줄 생략)

QMAKE_LIBS_DYLOAD = -ldl -lts

......

 

수정이 끝나면, 저장하고 종료합니다. 종료가 다되면 컴파일을 시작할 수 있습니다.

 

⑤ 빌드 스크립트는 터치 패드 드라이버를 컴파일 하고, 그 이후에 필요한 헤더파일을 qta디렉토리로 복사해 줍니다. 복사된 뒤에, qta를 설정하고, 컴파일 합니다.

 

#build-arm.sh

 

⑥스크립트 수행 중 라이선스 부분에서 yes를 선택합니다.

 

⑦수행중 디스플레이 해상도 선택 부분에서 16을 선택 합니다.

(삼성 6410은 24를 지원 합니다.)

 

⑧컴파일이 정상적으로 종료되면 Enjoy! 라는 메시지를 확인 할 수 있습니다.

 

⑨컴파일이 완료 되어었으면, 라이브러리가 정상 컴파일 되었는지 확인합니다.

#cd/ qtdir/qta/lib

#file libqte-mt.so.3.3.7

 

ARM version 이라고 출력되었으면, 이것은 arm 보드에서 구동이 가능하다.

 

⑩프로그램시 qta로 환경설정을 바꿔주는 스크립트를 만든다.

#!/bin/sh

 

export QTDIR =/qtdir/qta

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export QMAKESPEC=/qtdir/qta/mkspecs/qws/linux-arm-q++

export QTLIB = $QTDIR/lib

 

⑪타겟 포팅

 

#mkdir /nfsroot/qta

#체 /qtdir/qta/lib/libqte-mt* /nfsroot/qta

 

⑫보드에 적용

 

(타겟) #mount -t nfs ip :/mnt/nfs -o rw,rsize=1024,nolock

(타겟) #cd /usr/lib

(타겟) #cp /mnt/nfs/qta/* /usr/lib

 


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

[QT]qt에 대하여  (0) 2010.12.28
Posted by 검지발가락♡
공대생의 일기/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 검지발가락♡