한국어
Embedded
 

지난 포스트에서는 욕토프로젝트를 이용하여 라즈베리파이3를 위한 Qt 프레임웍 + 임베디드 리눅스 시스템을 구축해보았다.

 

이번 포스트는 이 시스템을 위한 Qt 응용프로그램 SDK를 만들고 SDK를 설치하여 간단한 응용프로그램을 개발 및 실행 시켜본다.

 

여기서 설명하는 내용은 지난  포스트에서 설명했던 작업의 연장선이기 때문에 개발환경이 준비가 안되었다면 이전 글을 참고해야 한다.

 

SDK 빌드

 

Qt SDK를 만들기 위해서는 이전에 만든 레시피를 조금 수정해야한다. basic-qt5-image.bb파일을 편집기로 열고 상단에 아래의 내용을 추가한다.

inherit populate_sdk_qt5

 

또한 Qt응용프로그램은 윈도우 시스템없이 eglfs로 실행할 것이므로 local.conf파일을 열고 하단에 아래의 내용을 추가한다.
DISTRO_FEATURES_remove = "x11 wayland"

 

이제 아래의 명령으로 SDK를 빌드할 수 있다.

$ bitbake basic-qt5-image -c populate_sdk

 

빌드가 성공적으로 완료되면 tmp/deploy/sdk 디렉토리에 SDK 설치 스크립트 파일이 만들어진다.

poky-glibc-x86_64-basic-qt5-image-cortexa7t2hf-neon-vfpv4-toolchain-2.6.1.sh

 

설치파일을 실행하고 기본위치(/opt)에 설치한다.

$ ./poky-glibc-x86_64-basic-qt5-image-cortexa7t2hf-neon-vfpv4-toolchain-2.6.1.sh

 

설치를 완료하고 다음과 같이 환경설정 스크립트를 실행한다.

$ source /opt/poky/2.6.1/environment-setup-cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi

 

 

QtCreator 설정

 

이제 같은 터미널에서 QtCreator를 실행하고 Tools - Options - Kits 메뉴를 선택.

 

먼저 컴파일러를 추가한다.

/opt/poky/2.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++

 

그다음 디버거를 추가한다.

/opt/poky/2.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gdb

 

qmake는 아래의 위치에서 찾을 수 있다.

/opt/poky/2.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/qmake

 

Kits탭에서 새롭게 추가한 컴파일러, 디버거, qmake를 지정하고 설정을 완료한다. 이제 추가한 Kit으로 빌드 할 수 있다.

qtcreator_kits.png

 

 

예제 응용프로그램 작성

 

아래는 테스트를 위한 간단한 Qt 응용프로그램 예제이다.

 

시스템에 폰트가 없기 때문에 폰트를 준비하고 main.cpp에서는 이 폰트를 로드한다. 

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QFontDatabase>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);

    int id = QFontDatabase::addApplicationFont(qApp->applicationDirPath()+"/NotoSansCJKkr-Regular.otf");
    QString family = QFontDatabase::applicationFontFamilies(id).at(0);

    QFont NotoSans(family);
    app.setFont(NotoSans);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;

    return app.exec();
}

 

main.qml

import QtQuick 2.11
import QtQuick.Window 2.11

Window {
    id: window
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Text {
        id: text
        text: qsTr("Makersweb.net \n 환영합니다.")
        anchors.centerIn: parent
        font.pixelSize: 30
        horizontalAlignment: Text.AlignHCenter
    }
}

 

배포 및 실행

 

이제 빌드된 실행파일과 폰트를 라즈베리파이에 복사한다. (간단히 scp를 이용하였다.)

$ scp hello root@192.168.0.26:/home/root

 

다음과 같이 응용프로그램을 실행하면 전체 화면으로 실행된다.

root@raspberrypi3:~# ./hello -platform eglfs

 

yocto+raspberrypi3+qt5_2019-03-19_21-55-02.jpg

 

이 글과 연관된 다른 글
  1. [2019/12/09] HelloWorld 커널 모듈과 yocto 레시피 추가 방법 by makersweb (919)
  2. [2019/11/13] 라즈베리파이3에서 Boot to Qt 실행해보기 by makersweb (594)
  3. [2019/06/21] yocto의 몇가지 중요한 용어 및 개념 by makersweb (828)
  4. [2019/05/20] 라즈베리파이3와 PC간 Serial 통신 테스트 by makersweb (3331)
  5. [2019/02/01] yocto project, 라즈베리파이를 위한 Qt + 임베디드리눅스 빌드 by makersweb (4748)
번호 제목 글쓴이 날짜 조회 수
24 STM32(Cortex-M3) 개발 - Firmware Flashing file makersweb 2019.07.23 743
23 libopencm3 활용, Cortex-M 펌웨어 개발 makersweb 2019.07.14 449
22 yocto의 몇가지 중요한 용어 및 개념 makersweb 2019.06.21 828
21 라즈베리파이3와 PC간 Serial 통신 테스트 file makersweb 2019.05.20 3331
» 욕토 프로젝트를 이용한 Qt SDK 빌드 for 라즈베리파이3 file makersweb 2019.03.19 1326
19 yocto project, 라즈베리파이를 위한 Qt + 임베디드리눅스 빌드 file makersweb 2019.02.01 4748
18 STM32(Cortex-M3) 개발환경구축 with Eclipse file makersweb 2018.11.08 1867
17 ST, STM32 MCU용 ‘통합 개발 환경(IDE)’ 무료 제공 makersweb 2015.03.04 8469
16 USB OTG 기술의 개념 file pjk 2014.11.03 7956
15 USB 핀아웃 file pjk 2014.10.11 5597
14 시리얼 인터페이스 커넥터를 위한 핀아웃 file pjk 2014.10.10 4392
13 STM32와 CAN(Controller Area Network) Loop Back file makersweb 2017.01.23 3407
12 윈도우10에서 Prolific USB to Serial 드라이버 인식문제 file makersweb 2016.01.24 15934
11 AVRISP mkII 펌웨어 업그레이드 file makersweb 2015.07.22 6131
10 이클립스에서 IAR프로젝트 사용방법 file makersweb 2015.07.09 8070
9 JFlashARM으로 MCU에 bin(바이너리)다운로드 file makersweb 2015.06.07 3855
8 AVR(AT90USB162)을 USB to Serial 로 이용하기 file makersweb 2015.02.14 4500
7 실시간 운영 체제 또는 RTOS(Real Time Operating System) pjk 2014.12.02 5153
6 폴링(Polling), 인터럽트(Interrupt), DMA(Direct Memory Access) file pjk 2014.10.24 5110
5 부트로더의 start.S 분석 file makersweb 2014.03.23 3013