みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

raspberrypi2 yocto QtCreatorで開発

前回、yocto向けに開発環境を作成したが、Qtアプリケーションの開発にはQtCreatorを利用したほうが便利。 QtCreatorはQtアプリケーションの開発以外にも高度なデバッグ機能が利用することができる。 RPi2側はQt5が動作する状態になっていればそのまま利用できる。 PC側もtoolchainについては前回作成したものがインストールされている状態であれば特に変更なく、QtCreatorを導入するだけで良い。

RPi2側の準備

QtCreatorとはネットワークで接続される必要がある。 また、QtCreatorの設定時にIPアドレスが必要になるため、 RPi2のコンソールで下記のコマンドを実行して調べておく。

# ifconfig

QtCreatorの導入

https://www.qt.io/download-open-source/からダウンロードする。

ブラウザでダウンロードすることもできるが、ここでは以下のようにコマンドラインで作業する。

$ cd ~/
$ wget http://download.qt-project.org/official_releases/online_installers/qt-opensource-linux-x64-online.run
$ chmod +x ./qt-opensource-linux-x64-online.run
$ ./qt-opensource-linux-x64-online.run

インストーラが起動するので、画面の指示に従ってインストールする。 デフォルトでは~/Qt以下にインストールされることになる。 インストールするコンポーネントを選択する画面が表示されるが、こちらはデフォルトのままにする。 QtCreatorを起動せずにインストーラを完了する。

QtCreatorの起動

通常のPCでQtCreatorを利用する場合は、「~/Qt/Tools/QtCreator/bin/qtcreator.sh」で起動できるが、yoctoでRPi2向けの開発を行う場合は以下の手順を踏む必要がある。

  1. yoctoのtoolchainの環境変数の設定
  2. yoctoのQt関連の環境変数の設定
  3. QtCreatorの起動

具体的には以下のようになる。

$ source /opt/poky/1.7/environment-setup-cortexa7t2hf-vfp-vfpv4-neon-poky-linux-gnueabi
$ source /opt/poky/1.7/sysroots/x86_64-pokysdk-linux/environment-setup.d/qt5.sh
$ /home/mickey/Qt/Tools/QtCreator/bin/qtcreator.sh

これを毎回実行するのは手間なので、起動スクリプト作成する。

起動スクリプトの作成

~/bin/qtcreator.shを実行するとRPi2向けの作業に必要な設定がされた状態でQtCreatorが起動できるようにする。

$ mkdir ~/bin
$ touch ~/bin/qtcreator.sh
$ chmod +x ~/bin/qtcreator.sh

内容は以下のようにする。

#!/bin/bash
source /opt/poky/1.7/environment-setup-cortexa7t2hf-vfp-vfpv4-neon-poky-linux-gnueabi && \
source /opt/poky/1.7/sysroots/x86_64-pokysdk-linux/environment-setup.d/qt5.sh && \
/home/mickey/Qt/Tools/QtCreator/bin/qtcreator.sh

これで以下のコマンドで起動できるようになる。

$ ~/bin/qtcreator.sh

QtCreatorの利用

初回時の設定

QtCraetorをインストールしたあとすぐにはRPi2へ接続するための情報が無いため、 以下の手順が必要になる。

  1. デバイスの作成
  2. キットの作成

デバイスの作成

以下の手順でデバイスを新規に作成しにraspberrypi2を追加する。

  1. メニューから「ツール(T)」->「オプション(O)...」を選択
  2. 左側のリストから「デバイス」を選択
  3. デバイスタブの右側の「追加(A)...」ボタンを押下
  4. 「デバイス構成ウィザードを選択」で「一般的なLinuxデバイス」を選択し「ウィザード開始」ボタンを押下
  5. 以下の情報を入力し「次へ(N)>」ボタンを押下
項目 設定値
この構成を識別する為の名前 raspberrypi2
デバイスのホスト名かIPアドレス (RPi2のIPアドレス)
デバイスにログインする際のユーザー名 root
認証方法 パスワード
パスワード (空欄)

この時点で設定が間違っていなければ、「デバイステストが成功しました。」と表示され、デバイスにraspberry2が追加される。

キットの作成

キットを作成するためには以下の情報が予め設定されている必要がある。

  1. Qtバージョン
  2. コンパイラ
  3. デバッガ

Qtバージョンの設定

以下の手順で操作する。

  1. メニューから「ツール(T)」->「オプション(O)...」を選択
  2. 左側のリストから「ビルドと実行」を選択
  3. 「Qtバージョン」タブを選択
  4. 右側の「追加...」ボタンを押下
  5. 「qmake実行ファイルの選択」ダイアログで「/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake」を選択し「開く(O)」ボタンを押下
  6. バージョン名を「Qt %{Qt:Version} (raspberrypi2)」に変更
  7. 「適用」ボタンを押下

コンパイラの設定

以下の手順で操作する。

  1. メニューから「ツール(T)」->「オプション(O)...」を選択
  2. 左側のリストから「ビルドと実行」を選択
  3. コンパイラ」タブを選択
  4. 右側の「追加」ボタンを押下しリストから「GCC」を選択
  5. 以下の情報を入力し「適用」ボタンを押下
項目 設定値
名前 raspberrypi2
コンパイラのパス(C) /opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++
プラットフォーム用コード生成オプション (空欄)
プラットフォーム用リンクオプション (空欄)
ABI (変更なし)

デバッガの設定

以下の手順で操作する。

  1. メニューから「ツール(T)」->「オプション(O)...」を選択
  2. 左側のリストから「ビルドと実行」を選択
  3. 「デバッガ」タブを選択
  4. 右側の「追加」ボタンを押下
  5. 以下の情報を入力し「適用」ボタンを押下
項目 設定値
名前 raspberrypi2
パス /opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gdb
ABI (変更なし)
Version (変更なし)

キットの設定

以下の手順で操作する。

  1. メニューから「ツール(T)」->「オプション(O)...」を選択
  2. 左側のリストから「ビルドと実行」を選択
  3. 「キット」タブを選択
  4. 右側の「追加」ボタンを押下
  5. 以下の情報を入力し「適用」ボタンを押下
項目 設定値
名前 raspberrypi2
ファイルシステム (空欄)
デバイス種類 一般的なLinuxデバイス
デバイス raspberrypi2
Sysroot /opt/poky/1.7/sysroots/cortexa7t2hf-vfp-vfpv4-neon-poky-linux-gnueabi
コンパイラ raspberrypi2
Environment (変更不可)
デバッガ raspberrypi2
Qtバージョン Qt 5.4.0(raspberrypi2)
Qt mkspec (空欄)
  1. 「OK」ボタンを押下

helloworld

QtCreatorを利用した本格的な開発に関してはここでは言及しないが、 RPi2で開発、デバッグが行えることを確認するために簡単なプロジェクトを作成する。 ここではコンソールに「hello world」と表示するプログラムを作成する。

プロジェクトの作成

GUIによる操作になるため、手順を以下のように個条書きで示す。

  1. QtCreatorを起動し「新しいプロジェクト」ボタンを押下する。
  2. 「新しいプロジェクト」ダイアログで以下の項目を選択し「選択...」ボタンを押下する。
    • 非Qt プロジェクト
    • C++ プロジェクト
  3. 「プロジェクト名とパス」画面で以下の内容を入力し「次へ(N)>」ボタンを押下する。
    • 名前:「hello」
    • パス:任意のフォルダ
  4. 「キットの選択」画面で「raspberrypi2」にチェックそれ以外のチェックをはずし「次へ(N)>」ボタンを押下
  5. 「プロジェクト管理」画面では何も変更せず「完了(F)」ボタンを押下
  6. 画面右側の「編集」を選択し「hello.pro」をダブルクリック
  7. 「target.path=/tmp」を追加してデプロイ先を/tmpに変更する。

ビルド及び実行

ソースコードからプログラムを作成しRPi2で実行するためには以下の処理が実行される必要がある。

  1. ビルド:実行可能ファイルを作成
  2. デプロイ:実行可能ファイルをRPiへ転送
  3. デバッグ/実行:ファイルを実行し、必要であればデバッグを行う

画面左下のf:id:mickey_happygolucky:20150225231723p:plainを押下するとビルドとデプロイが自動で実行される。

画面左下のf:id:mickey_happygolucky:20150225231738p:plainを押下するとデプロイされたのファイルを実行し、デバッグが開始される。