公開日:2025/01/23
LCDが表示デバイスの主役となってすでに20年以上経過しますが、現在もさまざまなシーンで利用範囲が拡大しています。
また近年では、タッチパネルの普及や表示情報量の増加などにも伴い、複数のディスプレイをもつ機器も増えてきました。
今回は、そのようなニーズを満たすために、デュアルディスプレイを実現する方法について簡単にご紹介します。
1. 開発環境
1) MPU選定
今回使用するMPUは、ルネサス エレクトロニクス社製の「RZ/G2E」です。
RZ/G2EはLCD(LVDS出力)を2チャンネル内蔵し、それぞれが異なる表示を行うことでデュアルディスプレイシステムが構成可能です。
また、Arm® Cortex®-A53デュアルコア1.2GHzと3DグラフィックスエンジンPowerVR GE8300により、動画表示をはじめリッチなGUIにも対応でき、産業用途向けHMIなどのアプリケーションに最適です。
2) 動作環境
「αSMARC-RZ/G2E」は、RZ/G2Eを採用したSMARC®規格準拠のSoM(システムオンモジュール)で、複雑なCPUとメモリ周りの回路がモジュール化されています。そのため、システムに合わせたキャリアボードを作成するだけで、さまざまな用途に対応することができます。
今回は、リファレンスとなるSMARCキャリアボード「αSMARC-EVB1」と組み合わせて使用します。

フォームファクター | SMARC2.1 ShortSize |
---|---|
CPU | R8A774C0HA01BG (552pin FCBGA) Arm® Cortex®-A53デュアルコア1.2GHz |
ROM |
|
RAM |
|
SMARC I/F |
|
今回は、以下の構成でモバイルディスプレイを2台接続します。

3) 開発環境
「αSMARC-RZ/G2E」は、Linux(Yocto Project)を採用しています。YoctoProject およびその開発に関しては、技術コラムVol.17「i.MX 8MとYoctoProjectでLinux開発!」をご覧ください。
2. ソフトウェアの作成
開発環境が準備できれば、いよいよソフトウェアの作成となります。
今回はデュアルディスプレイに対応するため、LinuxのDevice Treeを変更して、lvds0とlvds1の両方を有効にします。
以下は、lvds0とlvds1の解像度をそれぞれWVGA(800x480)にする場合の設定例です。
・記述内容
/ {
panel@1 {
compatible = "panel-lvds";
data-mapping = "jeida-24";
width-mm = <152>;
height-mm = <91>;
panel-timing {
clock-frequency = <33260000>;
hactive = <800>;
vactive = <480>;
hsync-len = <10>;
hfront-porch = <0>;
hback-porch = <256>;
vfront-porch = <0>;
vback-porch = <45>;
vsync-len = <5>;
};
port {
lvds1_panel_in: endpoint {
remote-endpoint = <&lvds1_out>;
};
};
};
panel@0 {
compatible = "panel-lvds";
data-mapping = "jeida-24";
width-mm = <152>;
height-mm = <91>;
panel-timing {
clock-frequency = <33260000>;
hactive = <800>;
vactive = <480>;
hsync-len = <10>;
hfront-porch = <0>;
hback-porch = <256>;
vfront-porch = <0>;
vback-porch = <45>;
vsync-len = <5>;
};
port {
lvds0_panel_in: endpoint {
remote-endpoint = <lvds0_out>;
};
};
};
};
&lvds0 {
status = "okay";
clocks = <&cpg CPG_MOD 727>, <&extal_clk>;
clock-names = "fck", "extal";
ports {
port@1 {
lvds0_out: endpoint {
remote-endpoint = <&lvds0_panel_in>;
};
};
};
};
&lvds1 {
status = "okay";
clocks = <&cpg CPG_MOD 727>, <&extal_clk>;
clock-names = "fck", "extal";
ports {
port@1 {
lvds1_out: endpoint {
remote-endpoint = <&lvds1_panel_in>;
};
};
};
};
&du {
status = "okay";
clocks = <&cpg CPG_MOD 724>,
<&cpg CPG_MOD 723>,
<&extal_clk>;
clock-names = "du.0", "du.1", "extal";
};
3. 実行
作成したLinuxシステムを起動します。設定に問題がなければ、以下のような画面が2つのディスプレイに表示されます。
(今回のシステム開発では、タッチパネル等のユーザーインタフェースを設定していませんので、必要な場合にはUSBマウスを接続することで代用できます。)


作成するアプリケーション次第では、以下のようなデュアルディスプレイ表示が可能となります。

4. まとめ
今回はデュアルディスプレイのシステムについて、実現方法の概要をご紹介いたしました。
LCD表示に対応した組込み用MPUのほとんどがシングルディスプレイ出力であり、マルチディスプレイを実現するためには、複数のMPUを組み合わせて相互に通信を行いながら表示するシステムも多く見かけます。
今回使用したRZ/G2Eはデュアルディスプレイ出力に対応していますので、安価で比較的簡単に実現することが可能です。また、ソフトウェアのメンテナンスの負担も軽減することができます。デュアルディスプレイシステムをご検討の方は、ぜひご参考にしてみてください。
製品のご案内
本コラム以外にも開発にお役立ていただける技術情報をアプリケーションノートとして公開しております。
ご興味のある方は、ぜひ製品をご利用ください。
- ※記載されている会社名、製品名は、各社の商標または登録商標です。
- ※記載の内容は改良のため、予告なく変更する場合がございます。