高速起動

【Qtデバイスの高速起動】Part4: ハードウェアについて

Published Wednesday April 26th, 2017 | Leave a comment
Posted in Qt | Tags: , , ,

この記事は The Qt Blog の Fast-Booting Qt Devices, Part 4: Hardware Matters を翻訳したものです。 執筆: Risto Avila, 2016年8月30日 みなさんこんにちは! これまで Qt デバイスの高速起動に関して 1.5 秒でブートします、Qt アプリケーションの最適化、システム全体の最適化 の3つ記事を書きました。今回はハードウェアの選択、特に同じ CPU が載っていてもアーキテクチャの違いによって高速起動に与える影響が大きいことを説明したいと思います。この比較のために、同じ NXP i.MX6 Quadcore CPU を搭載した2つのボードを用意しました。1つはソフトウェア開発向けのボードで、もう片方は製品にも使えるようなシステム・オン・モジュールのボードです。 それではちょっとしたバトルを開催しましょう! 左側は NXP SABRE i.MX6 Quad Development Board です: NXP i.MX 6 Quadcore プロセッサ、1GHz で動作 1GB DDR3 RAM 8GB eMMC 右側は Toradex Apalis […]

Read More

【Qtデバイスの高速起動】Part3: システムイメージの最適化

Published Tuesday April 25th, 2017 | Leave a comment
Posted in Qt | Tags: , , ,

この記事は The Qt Blog の Fast-Booting Qt Devices, Part 3: Optimizing System Image を翻訳したものです。 執筆: Risto Avila, 2016年5月25日 高速起動に関するブログ記事の3つ目です。最初の記事 ではクラスタのデモ が 1.56 秒で起動し、2つ目の記事 では Qt アプリケーションの最適化 について紹介しました。今回はブートローダーと NNXP i.MX6 SABRE ボード用の Linux カーネルの最適化に専念しましょう。 起動時間の高速化に着手する前に測った起動時間は 22.8 秒でした。その後ゴールを2秒以内に定めました。これに向けて様々な作業を行います。最初は一番わかりやすい rootfs からはじめました。既存の rootfs は今回のデモには必要のないものが数多く含まれていました。これにより、元々 500 MB だったサイズが 24 MB まで減らすことができました。buildroot を用いてターゲットデバイス向けの最小限の rootfs とクロスコンパイル用のツールチェインを用意しました。 この小さな rootfs で測定した起動時間は 15.6 秒でした。この中でカーネルの起動が 6 […]

Read More

【Qtデバイスの高速起動】Part2: Qt アプリケーションの最適化

Published Tuesday April 25th, 2017 | Leave a comment
Posted in Qt | Tags: , , ,

この記事は The Qt Blog の Fast-Booting Qt Devices, Part 2: Optimizing Qt Application を翻訳したものです。 執筆: Risto Avila, 2016年4月27日 先日の記事 では i.MX6 ボード上で2秒で起動する高速起動デモの紹介をしました。今回の記事では Qt QML のクラスタアプリケーションをどのように最適化したのかをカバーしたいと思います。 Qt World Summit 2015 で展示した当初のデモは PC 環境で設計され、起動時間についてはそもそも考慮されていませんでした。Loader を利用して UI のパーツを非同期にロードするような設計にはなっていましたが、起動シーケンスについてはまったく間が得られていませんでした。最適化の初めの一歩として、ユースケースについて考える必要がありました。「はじめにユーザーに見てもらいたいものはなにか?」を検討した結果、一番初めは計器類の外枠を表示し、その後で画面に表示する他のものをロードするということにしました。 以下の画像で赤いオーバーレイの部分がアプリケーションの起動直後にユーザーが目にするエリアになります。 アプリケーションのソースコードを見てみると、ダッシュボードは複数のマスク画像で、その中のいくつかは画面と同じ大きさでした。そのためこれをすべて結合し、1つのフルスクリーンの画像にし、UI の最前面に表示させるようにしました。 アプリケーションの起動を一秒でも速くするために、アプリケーションの内部構造も色々見直しました。ダッシュボードのフレームを1つの QML ファイルにまとめ、一番最初にロードするようにしました。この外枠がロードされ描画されたあとで、UI の他の部分をロードするためのローダーを有効にするようにしました。 実際にどういった処理に時間がかかっているかを調べるために、Qt Creator の QML プロファイラも活用しました。元々このデモではデスクトップアプリ向けに開発されていた Qt Quick Controls を利用していて、これによって余計に時間がかかっていた部分がありました。(余談ですが、Qt Quick Controls は組み込み向けに 設計が見直されたものが […]

Read More

【Qtデバイスの高速起動】Part1: 車載インストルメントクラスタ

Published Tuesday April 25th, 2017 | Leave a comment
Posted in Qt | Tags: , , ,

この記事は The Qt Blog の Fast-Booting Qt Devices, Part 1: Automotive Instrument Cluster を翻訳したものです。 執筆: Risto Avila, 2016年4月20日 組み込み機器を開発する場合にユーザー体験として重要となるものの一つに、システムの起動時間ががります。自動車をはじめとした多くの業界において、起動時間は必須条件という場合もあります。 これに関して「Qt で開発した端末でどのくらい高速に起動ができますか?」「システムと Qt アプリケーションを2秒以内に起動するのは可能ですか?」「Qt アプリケーションを起動するのに最低限必要なシステムは何秒で起動できますか?」といった問い合わせを数多くいただいてきました。 これらの質問に対する唯一の回答は残念ながら存在しません。その代わりに、Qt で作る組み込みシステムの最適化に関して3つのブログ記事を書くことにしました。最初の記事では車載のインストルメントクラスタを例に、私たちが開発した高速起動デモのベンチマーク結果を紹介します。次の記事では実際に「どのように」Qt や Qt Quick アプリケーションを最適化したのかを紹介し、最後の記事ではハードウェアに関わる起動時間の短縮について書く予定です。 車載インストルメントクラスタのデモ 自動車業界では、起動時間に関する明確な要求が存在します。たとえば、デジタルインストルメントクラスタでは、できる限り高速に起動することが重要です。車の起動とほぼ同時にインストルメントクラスタが起動し、適切に動作する必要があります。これはユーザー体験としてだけではなく、安全性に関する要件という側面もあります。と同時に、計器類の表示のデジタル化はどんどん進み、3D 表示のようなリッチな表現に変わっていきます。プラットフォームやフレームワークといったソフトウェアの設計的にここは注意深く行う必要があります。Qt ではこのようなインストルメントクラスタの高速起動が可能で、Embedded world 2016 instrument cluster demo で最適化されたデモを実際に作成しました。 以下の動画で結果をご覧ください。 最適化以前の起動時間は23秒でしたが、様々な最適化の結果、起動直後のスクリーンの表示までの時間を 1.5 秒に短縮することに成功しました。この時間はシステムに必要とされるものに依存します。 起動時間の分析 この動画をもとに解析し数値化した結果が以下の図になります。 コールドブートで最初の画面の描画が表示されるまでにかかった時間は 1500 ms です。ご覧のように、多くの時間は Qt アプリ以外の部分に費やされています。その部分に関してはハードウェア的に高速に起動するものを選択する事でさらに短縮できるのではないかと思っています。ボードはメモリとメモリバスが高速である必要があります。u-boot はのさらなる最適化や、別のブートローダーを導入することでもう少し高速化できる可能性がありますが、特に Qt Quick […]

Read More
Get started today with Qt Download now