|
라즈베리 파이용 QT Embedded 개발 환경 구축하기
|
|
|
Created Date: 2014.04.01
Modified Date: 2014.04.17
revision 1
키워드 : QT, raspberrypi, rpi, QT Embedded
안녕하세요 버섯돌이 유재성입니다.
몇 달전에 라즈베리 파이에서 GUI를 해보겠다고 이것 저것 찾아보니...
QT Embedded에서 라즈베리를 지원한다는 소식을 접하고는 설치하기 위해 몇 주째 삽질을 엄청했었더랬죠...ㅜ.ㅜ;;;
워낙 모르는 분야고 요즘은 돌아서면 잊어 버리는지라 지금은 기억이 하나도 안나는군요.^^
당시에 글 쓰려고 준비했던 자료와 가이드 문서를 기반으로 기억을 살려서 작성하고 있지만
혹시라도 잘 못 된 정보가 있을 수 있으니 알려주시면 수정하도록 하겠습니다.
본 내용은 Qt 사이트에서 제공되는 설치 가이드(Installation Instructions)대로 진행됩니다.
http://doc.qt.digia.com/QtEnterpriseEmbedded/qtee-installation-guide.html
설치 가이드가 영어지만 자세하게 나와있으니 이해가 잘 안되는 부분은 설치 가이드를 보세요.*^_^*
Qt는 제 분야가 아닌지라 여기까지 하고 잠시 중단했지만 모쪼록 이번 기회에 많은 정보가 공유되어지길 바래봅니다.^^
1. 사전준비
- Ubuntu 12.04 LTS 64Bit Version
다른건 다 필요 없고 우분투 12.04 LTS 64비트 버전이 필요합니다.
이때 가장 중요한건 리눅스 자신 없으면 사이트에 가셔서 무조건 새로 받아서 설치하세요~
다른건 다 쉬웠는데 2주 가량 삽질했던 원인중 하나가 기존에 설치된 우분투 12.04 LTS에서
QT를 설치하려니 초반부터 32비트 관련 오류가 발생해서 해결하기 위해 구글링하면서 날린 시간입니다.ㅜㅜ;;;
구 버전은 버그가 있다고 해서 마음을 비우고 새로 받아서 진행하니 한방에 설치가 되더군요.
ㅎㅎ..이 사실 하나만으로 더 이상의 내용은 굳이 필요 없을 정도로 설치 가이드가 잘 되어 있습니다.
- Qt Enterprise Embedded 30일 평가판 신청
30일 평가판을 신청하시면 아래 강좌에서 나오는 프로그램 다운로드 경로와 30일간 사용 가능한 Key가 발급됩니다.
해당 key가 있어야 설치 할 수 있으니 반드시 신청하시기 바랍니다.
바쁘다보니 신청 후 한참 뒤에 설치했는데 설치된 컴퓨터를 기준으로 30일인것 같더군요.
- Qt Enterprise Embedded for 64bit Linux Workstation
2. 설치
64비트 버전이라서 "32-bit Support Libraries"를 설치해야 합니다.
이 과정에서 같은 12.04 버전이라고 해도 설치된 시기에 따라 제대로 안 깔리는 경우가 있더군요.
에러를 만나시면 그냥 새로 설치하세요.^^;;
32-bit Support Libraries 설치
> sudo apt-get install g++-multilib zlib1g:i386
VirtualBox 설치
저는 아래 명령어를 이용해서 설치했습니다. (wget은 한 줄로 실행 하시기 바랍니다.)
> wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
> sudo apt-get update
> sudo apt-get install virtualbox-4.3
설치가 완료되었으면 버추얼 박스를 실행 후 환경 설정을 해야 합니다.
리눅스에서 오랜만에 사용해 보니 설치보다 구동하는 방법을 몰라서 헤메였네요^^;;
실행 방법은 단순히 쉘에서 "virtualbox" 를 실행하면 됩니다.
> virtualbox
![](https://t1.daumcdn.net/cfile/tistory/24397E46546F3BB104)
이제야 익숙한 화면이 나옵니다.^^
![](https://t1.daumcdn.net/cfile/tistory/21674B38546F3BB330)
File > Preferences를 클릭해서
환경 설정 메뉴를 실행합니다.
좌측 창에서 "Network"를 선택 합니다.
![](https://t1.daumcdn.net/cfile/tistory/227C9F3D546F3BB50A)
"vboxnet0" 우측 상단에 보시면 "+ / - / 드라이버" 아이콘이 있습니다.
네트워크 정보가 없으면 "+" 아이콘을 클릭해서 Network를 하나 추가하시고
드라이버 아이콘을 클릭해서 속성 창을 실행 하세요.
![](https://t1.daumcdn.net/cfile/tistory/2108653B546F3BB72A)
IPv4 Address 와 그 아래이 Network Mask 정보를 위처럼 설정하세요.
"DHCP Server" 탭을 선택 후 위 처럼 설정하시기 바랍니다.
Qt Enterprise Embedded 설치
다운로드 받은 "qt-enterprise-embedded-linux-x64-1.5.0-online.run" 파일의 위치를 확인 하세요.
제 경우 웹에서 받았더니 "Downloads" 폴더에 받아졌네요^^
계졍밑에 보면 Downloads 폴더가 존재하는데 해당 폴더에 받아졌습니다.
![](https://t1.daumcdn.net/cfile/tistory/2478703D546F3BBB0D)
웹에서 내려 받았기때문에 다운 받은 파일을 "chmod +x" 명령으로 실행 권한을 부여 합니다.
(각자 자기 다운 받은 파일이 존재하는 경로로 수정하시거나 해당 파일 위치에서 부여하세요.)
초보분들은 너무 어려우면 그냥 쉘하나 띄우신 뒤 wget 명령으로 받으시면 됩니다.
그리고 그 폴더에서아래처럼 실행하시면 됩니다.(쉽죠?)
> chmod +x qt-enterprise-embedded-linux-x64-1.5.0-online.run
실행 권한이 생겼으니 아래 처럼 실행합니다.
> ./qt-enterprise-embedded-linux-x64-1.5.0-online.run
![](https://t1.daumcdn.net/cfile/tistory/23315443546F3BBD16)
별것 없으니 계속 진행하세요~
![](https://t1.daumcdn.net/cfile/tistory/274F0A3C546F3BBE1D)
별것 없으니 계속 진행하세요~
![](https://t1.daumcdn.net/cfile/tistory/250DBB39546F3BBF2D)
드디어 중요한 부분이 왔습니다.^^;;
![](https://t1.daumcdn.net/cfile/tistory/271F623B546F3BC10B)
사용하고 싶은 버전을 선택하면되는데 너무 많이 선택하시면 엄청 오래 걸립니다.
이중에서 눈여겨 보셔야 할 부분은 빨간색으로 표시한 부분입니다.
"Qt Enterprise Embedded"에 보시면 "Raspberry Pi"가 존재합니다.
Qt 5.2.x와 Tools, 그리고 Qt Enterprise Embedded의 "Raspberry Pi"는 필수로 선택 하시기 바랍니다.
![](https://t1.daumcdn.net/cfile/tistory/266BCE3D546F3BC21F)
별것 없으니 계속 진행하세요~
![](https://t1.daumcdn.net/cfile/tistory/2767AF3E546F3BC41B)
별것 없으니 계속 진행하세요~
![](https://t1.daumcdn.net/cfile/tistory/244AEF36546F3BC513)
드디어 설치가 진행되는군요.
![](https://t1.daumcdn.net/cfile/tistory/253A9046546F3BC603)
기다림만이 답입니다.*^_^*
드디어 설치가 종료되었습니다.*^_^*V
![](https://t1.daumcdn.net/cfile/tistory/26614E42546F3BCA1E)
임베디드 작업을 위해 기본 설치이후 추가 작업에 대한 친절한 가이드 문서가 실행됩니다.^^
Qt Creator 평가판의 실행 모습입니다.
3. SD카드 셋팅(Boot2Qt 설치)
SD카드에 라즈비안을 설치했듯이 SD카드에 Boot2Qt를 설치하도록 하겠습니다.
컴퓨터에 sd카드를 삽입 후 lsblk -d 명령을 실행합니다.
> lsblk -d
![](https://t1.daumcdn.net/cfile/tistory/232FCD46546F3BCD11)
출력되는 목록중 RM부분을 보시면 "1"로 표시되는 장치중에 SD카드가 있을 것입니다.
제 경우 빨간색으로 표시한 8GB의 sdb 장치가 SD 메모리입니다.
자신의 SD카드에 해당하는 NAME을 확인하시기 바랍니다.
이 메모리 카드를 umount 명령으로 마운트를 해제합니다.
"/dev/sdb" 부분에서 "sdb" 부분을 자신의 SD카드가 마운트된 이름으로 변경해서 실행하세요.
*주의* 잘 못 하면 엉뚱한 HDD가 날아 갈 수 있으니 신중하게 확인하세요.
아래 명령을 실행합니다.
> sudo Boot2Qt-2.x/raspberrypi-eLinux/images/deploy.sh /dev/sdb
![](https://t1.daumcdn.net/cfile/tistory/2738B436546F3BCF2C)
다시한번 SD카드가 맞는지 확인 후 "y"를 선택 해 주세요~
SD카드 준비가 끝났습니다.^^
Boot2Qt가 설치되었으니 이제부턴 라즈베리로 부팅 후 원격에서 개발된 프로그램을 라즈베리에 실시간 전송이 가능합니다.
4. 환경 설정
이제 Qt Creator에서 개발된 내용을 Boot2Qt를 이용해서 라즈베리 파이에 전송하기 위한 타겟 환경을 설정합니다.
먼저 라즈베리에 SD카드를 꼽고 부팅합니다.
![](https://t1.daumcdn.net/cfile/tistory/2129B137546F3BD235)
Qt로고가 보이면서 부팅이되야 정상입니다.^^
![](https://t1.daumcdn.net/cfile/tistory/22267E41546F3BD415)
잠시 후 Boot to Qt 화면이 나옵니다.
마우스등을 이용해서 화면을 좌/우로 이동하면서 기능들을 테스트 해 보세요.^^;;
![](https://t1.daumcdn.net/cfile/tistory/21499A33546F3BD606)
IP 설정을 위해 현재 제일 중요한 부분은 "Launcher Settings" 메뉴입니다.
해당 메뉴를 찾으세요.
![](https://t1.daumcdn.net/cfile/tistory/2205DF38546F3BD80D)
잘 보시면 위 처럼 Hostname과 라즈베리에 할당된 IP를 확인 할 수 있습니다.
반드시, 할당된 IP주소를 확인 하시기 바라며 IP주소를 종이에 메모 해 두세요.^^
제 경우 강좌를 보셨으면 아시겠지만 Hostname을 즐겨쓰는지라 호스트명도 dev4unetpi1으로 설정했습니다.
Change hostname을 클릭하면 바로 반영이 안되고 Reboot해야 변경되었던걸로 기억됩니다.
라즈베리쪽의 설정은 이것으로 끝입니다.^^
이젠 개발 툴에서의 Target 설정이 남았습니다.
좌측 상단의 "Dash Home"에서 검색어로 "qt"를 입력하시면 Qt Creator를 찾을 수 있습니다.
해당 아이콘을 찾아서 실행하세요~
![](https://t1.daumcdn.net/cfile/tistory/23340A44546F3BDC0F)
정상적인 경우 위처럼 Qt Creator가 실행됩니다.
![](https://t1.daumcdn.net/cfile/tistory/21256A46546F3BDE21)
Tools 메뉴의 Options..를 선택합니다.
![](https://t1.daumcdn.net/cfile/tistory/2459CE36546F3BDF03)
좌측 창에서 "Devices"를 선택하고 우측의 "Add" 버튼을 클릭합니다.
![](https://t1.daumcdn.net/cfile/tistory/241DF244546F3BE02B)
"Boot2Qt Device"를 선택 후 "Start Wizard"를 클릭합니다.
![](https://t1.daumcdn.net/cfile/tistory/252DF137546F3BE22F)
Device name에는 작업 한 Qt파일을 반영할 라즈베리 파이의 적절한 이름을 입력하시고...
"Device address"부분에는 방금전에 확인한 IP주소를 적습니다.
IP주소가 자주 변경되면 hostname을 이용하셔도 됩니다.
Finish 버튼을 클릭하면 Devices에 장치가 추가됩니다.
![](https://t1.daumcdn.net/cfile/tistory/21120746546F3BE339)
Device 선택 박스에서 방금전에 추가한 장치를 선택 합니다.(제경우 dev4unetpi1)
위 처럼 제가 등록한 Name과 Serial number에 IP주소가 할당되었습니다.
![](https://t1.daumcdn.net/cfile/tistory/247F113F546F3BE523)
좌측 창에서 "Build & Run"을 선택 후 우측 창에서 "Kits" 탭을 선택합니다.
![](https://t1.daumcdn.net/cfile/tistory/237D8838546F3BE614)
"Boot2Qt 2.0.0 eLinux Raspberry Pi Kit"을 선택 하시고 Device에는 좀전에 추가한 라즈베리 장치를 선택하면 끝입니다.*^_^*
5. 예제
드디어 길다면 길고 짧다면 짧은 여정의 끝이군요.
대 다수의 언어에서 항상 하는 초보용 Hello~ 시리즈가 왔습니다.
Qt Creator의 File 메뉴에서 "New File or Project.."를 선택합니다.
![](https://t1.daumcdn.net/cfile/tistory/26432736546F3BE81D)
우측 상단의 template는 "Boot2Qt/Templates"를 선택 하시고,
좌측 창의 Projects는 Applications를 선택 후 Qt Quick Application을 선택 한 뒤 Choose.. 버튼을 클릭합니다.
![](https://t1.daumcdn.net/cfile/tistory/261CFA46546F3BE931)
개발 할 프로젝트의 이름과 저장될 폴더를 지정후 Next를 클릭 합니다.
![](https://t1.daumcdn.net/cfile/tistory/241C9746546F3BEA2F)
Qt Quick 2.0 선택 후 Next~
![](https://t1.daumcdn.net/cfile/tistory/211F2044546F3BEC29)
Next~
![](https://t1.daumcdn.net/cfile/tistory/2606713B546F3BEE2A)
Finish~~
![](https://t1.daumcdn.net/cfile/tistory/22326E40546F3BEF33)
와우~ 우리는 몇 번의 클릭만으로 "Hello World"가 실행되는 프로그램(?)을 만들었습니다.
![](https://t1.daumcdn.net/cfile/tistory/22169339546F3BF022)
좌측 하단의 화살표를 클릭하시면 빌드 후 에러가 없다면 지정된 장치(라즈베리 파이)에 디플로이 됩니다.
잠시 후 라즈베리 파이와 연결된 모니터에 "Hello World"가 출력됩니다.^^
스크립트가 직관적이니 항목들을 실시간으로 바꾸면서 빌드해보시면 도움이 될 것입니다.
간단히 Hello World대신 Hello Oros를 입력 후 빌드 하면 아래 처럼 됩니다.
와우~~ 새하얀 대륙의 중앙에 유아독존 오로스를 반기는 문구가 보이는군요.*^_^*
저는 Qt를 몰라서 프로젝트 생성하면서 제공된 샘플들을 빌드 해 봤었는데..
간단한 기능을 파악하시려면 공개된 샘플들도 빌드 해 보시면서 익숙해지시기 바랍니다.
모니터가 없어서 라즈베리에 TFT-Shield를 장착해서 편하게 개발 하려고 했는데..
풋.. 생각해보니 단순 모니터가 아닌 SPI 방식이의 Shield라서 Boot2Qt가 인식 할 수 있도록 해줘야 하는것 같은데
나무꾼님이 TFT-Shield를 사용하는 방법을 알려 주실거라 믿습니다.*^^*V
고생한 만큼 본 내용이 모쪼록 도움이 되기를 바라며, QT에서의 GUI 개발관련 많은 정보가 공유되기를 기대해 봅니다.^^
[참고자료]
[1] Installation Instructions
[2] Qt Enterprise Embedded for 64bit Linux Workstation
[3] Qt 5.1.1 Sources (for manual installation)
End.
written by 버섯돌이(dev4unet)