EASY-EAI コンパイル環境のデプロイと更新
1.1 EASY-EAIコンパイル環境のデプロイ
1.1.1 EASY-EAIコンパイル環境の概要
EASY-EAIコンパイル環境は独自に開発したオンラインコンパイル環境(開発ボードオンライン)であり、PCとボード間のリアルタイムな同期マッピング関係を構築し、PCでのクロスコンパイル時に開発ボードの依存ライブラリをリアルタイムでリンクできるようにします。以下の利点があります:
(1)従来のクロスコンパイラにおいて、PCとボード間で依存ライブラリが不一致であることに起因する様々な開発上の問題を解決します。
(2)ユーザーが従来のクロスコンパイラの環境変数を設定・変更する手間を省きます。
(3)PCとボード間のリアルタイムマッピングにより、ファイル転送速度が大幅に向上し、大ファイルのリアルタイム転送のニーズに応えます。
(4)開発ボード上でのローカル開発もサポートしており、開発手法の柔軟性を高めます。
**💡 特記事項 ** :ユーザーの社内ネットワークがイントラネットとインターネットで分離されている(開発者の作業端末が外部インターネットにアクセスできない)環境の場合は、開発者コミュニティの『EASY-EAIコンパイル環境のオフラインインストール』をご参照ください。本ドキュメントの以降の内容をお読みいただく必要はありません。
1.1.2 PC側Ubuntuシステム環境の準備
EASY-EAIコンパイル環境はUbuntuのDockerコンテナ技術を使用するため、PC側のホストマシンがDockerコマンドやDockerイメージなどのDockerコンテナ技術関連のソフトウェアをサポートしている必要があります。
PC側のUbuntuシステムにて、以下のコマンドを使用してdockerコマンドをインストールします。これにより、UbuntuまたはUbuntuのrepoミラーサイトからdockerコマンドがダウンロードされ、インストールされます。
sudo apt-get remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginsudo rm -f /etc/apt/sources.list.d/docker.list*sudo apt-get update -y && sudo apt-get install -y docker.ioユーザーをdockerグループに追加します(これにより、非rootユーザー権限でDockerを管理できるようになります)。コマンドは以下の通りです:
sudo groupadd dockersudo usermod -aG docker $USER変更を成功させるには、PC側のUbuntuシステムを再起動して設定を反映させる必要があります。これにより、以降PC側のUbuntuでdockerコマンドを使用する際に「sudo」を省略できるようになります。 参考元: Docker 公式ドキュメント
1.1.3 EASY-EAIコンパイル環境の取得
リンク: develop_environment_20260310.tar.gz
EASY-EAIコンパイル環境ツールキット「develop_environment_20250802.tar.gz」(通常は最新版の使用を推奨します)をダウンロードします。その後、以下の図に示すように、PCのUbuntuシステムのホームディレクトリにコピーして配置します。

EASY-EAIコンパイル環境の取得
1.1.4 EASY-EAIコンパイル環境のインストール
EASY-EAIコンパイル環境ツールキットを解凍し、run.shスクリプトを実行します。これでEASY-EAIコンパイル環境のインストールとデプロイが行われます。
tar -xvf develop_environment_20250802.tar.gzcd develop_environment/./run.sh 2204結果は以下になります

**💡 注意 ** : 初回に ./run.sh 2204 を実行する際は、PC側の仮想マシンがインターネットにアクセスできる必要があります。EASY-EAIコンパイル環境のインストールに成功した後は、インターネットに接続していなくても、./run.sh 2204 を実行することで繰り返しEASY-EAIコンパイル環境に入ることができます。
1.1.5 EASY-EAIコンパイル環境の利用 ファイルの同期
EASY-EAIコンパイル環境内で /opt を確認すると、仮想マシンUbuntuシステムのホームディレクトリになっています。ユーザーはここでソースコードの配置、編集、およびコンパイルを行うことができます。

EASY-EAIコンパイル環境の利用 ファイルの同期
依存ライブラリの同期: クロスコンパイルツールチェーンと依存ライブラリが分離されているため、開発ボード(依存ライブラリ)を個別にEASY-EAIコンパイル環境の /mnt にマウントする必要があります。操作は以下の通りです:
シリアル通信デバッグを通じて、開発ボードのIPアドレス(例:192.168.3.121)を確認します。EASY-EAIコンパイル環境からpingが通ることを確認した後、mountコマンドを使用して開発ボードを /mnt にマウントします:
sudo mount -t nfs -o nolock 192.168.3.121:/ /mnt
EASY-EAIコンパイル環境の利用 ファイルの同期
したがって、EASY-EAIコンパイル環境で /mnt 内のファイルを編集するだけで、自動的に開発ボードのrootfsルートディレクトリに同期されます。
なお、マウントコマンドを手動で入力するのが手間に感じる場合は、あらかじめ用意されているマウントスクリプト load_rootfs を使用することも可能です:
load_rootfs 192.168.3.119
EASY-EAIコンパイル環境の利用 ファイルの同期
さらに、サードパーティ製のライブラリをコンパイルする必要があり、かつそのサードパーティベンダーが当社の開発ボードを購入していない場合は、エクスポート済みの rootfs.img を /mnt にロードすることで、そのサードパーティ製ライブラリをコンパイルできます。

EASY-EAIコンパイル環境の利用 ファイルの同期
EASY-EAIコンパイル環境の終了については、exitコマンドを実行します。
exitEASY-EAIコンパイル環境へ再度入る場合は、ホストマシンで再度 ./run.sh スクリプトを実行します。
./run.sh 2204EASY-EAIコンパイル環境のその他の使用テクニックについては、『easyeai-compiler使用技巧(使用テクニック)』の記事をお読みください。この記事では、【よくある異常事態の処理】、【サードパーティ製クローズドライブラリのコンパイル】、および【複数人同時デバッグ】などの使用テクニックについて説明しています。
1.2 開発環境のアップデート
1.2.1 EASY-EAIコンパイル環境のアップデート
EASY-EAIコンパイル環境をアップデートする場合は、最新の develop_environment_xxx.tar.gz をダウンロードして再解凍し、まずその中にある clear.sh 2204 を実行してから、./run.sh 2204 を実行してください。
1.2.2 ツールチェーン依存ライブラリのアップデート
コンパイルツールチェーンの依存ライブラリはハードウェアボード上にデプロイされているため、『ファームウェアの書き込みとアップデート』の手順に従ってボードのシステムファームウェアをアップデートするだけで、開発ツールチェーンのアップデートが完了します。
2 ADB・シリアル・SSHデバッグ
2.1 ADBデバッグ
ADBデバッグには、USB-ADBインタフェースを使用します。(WindowsにUSB-ADBドライバがない場合は、ドライバのインストールが必要です。
USB Type-Cケーブルを使用して、PCとEASY EAI Nano-TBを接続します。関連するハードウェアインタフェースは下図の通りです。

ADBデバッグ
**💡 注意 ** : すでに【USB3.0モード】に切り替わっている場合、ADB機能は無効になります。この場合、ADBインタフェースは【ファームウェアの書き込み(フラッシュ)機能のみ】となります。
2.1.1 ADBデバイスの割り当て(マウント)
まずUbuntuシステムに入ります。ADBデバイスをUbuntu側に割り当てるには、「自動割り当て」と「手動割り当て」の2つのパターンがあります。
自動割り当て(パッシブ): 仮想マシンが起動している状態で、ADBケーブルが未接続(またはボードの電源がオフ)の場合。ケーブルを接続(またはボードの電源をオン)すると、自動的に下図のようなポップアップウィンドウが表示されます。

ADBデバイスの割り当て(マウント)
手動割り当て(アクティブ): 仮想マシンが起動していない時に、すでにADBがWindows側に制御されている場合。この場合は、下図に従って手動でADBデバイスを仮想マシン側にマウントする必要があります(この方法では、ADB環境が準備完了になるまで20秒ほどかかります)。

ADBデバイスの割り当て(マウント)
最後に、下図のようにADBデバイスが仮想マシンに正しく認識(マウント)されているか確認してください。

ADBデバイスの割り当て(マウント)
2.1.2 ADB経由でボードのコンソールに入る
ショートカットキー【Ctrl + Alt + T】でターミナルを開き、ターミナルに「adb shell」と入力します。下図のような画面が表示されれば、rootユーザーとして開発ボードのコンソール環境へのログインに成功しています。
adb shell
ADB経由でボードのコンソールに入る
2.1.3 ADB環境からの退出
exit コマンドを実行することで、ボードの環境から抜けてUbuntuのローカル環境に戻ることができます。
exit
ADB環境からの退出j
2.2 シリアルポートデバッグ
2.2.1 接続(配線)について
EASY EAI Nano-TBはシリアル通信を用いたデバッグをサポートしています。関連するハードウェアインターフェースは以下の図の通りです。

接続(配線)について
シリアルポートがWindowsに正常に認識されると、デバイスマネージャーから具体的なCOMポート番号(例:COM7)を確認できます。以下の図をご参照ください。

接続(配線)について
2.2.2 MobaXtermの使用手順
以下に、MobaXtermを使用してデバッグ用シリアルポート(COM7)を開く方法を説明します。 左上側のメニューから「Session」を選択し、接続タイプで「Serial」を選んだ後,シリアルポートをCOM7に選択し、speedを1.5Mbpsに設定します。

MobaXtermの使用手順
「OK」をクリックしてシリアルポートを開きます。以下の図をご参照ください。

MobaXtermの使用手順
開くと、EASY EAI Nano-TBの電源投入時からのすべてのログ情報が表示されるようになります。以下の図をご参照ください。

MobaXtermの使用手順
システムが完全に起動した後は、シェルコマンドを入力してデバッグを行うことができます。以下の通りです。

MobaXtermの使用手順
2.2.3 ユーザー名とパスワード
EASY EAI Nano-TB ユーザー名:nano
EASY EAI Nano-TB パスワード:123456
2.3 SSHデバッグ
2.3.1 接続(配線)について
EASY EAI Nano-TBは、MobaXtermなどのSSHリモートデスクトップログインを利用したデバッグが可能です。まず、LANケーブルを使用して、EASY EAI Nano-TBのギガビットイーサネットポートを、ルーターのLANポートに接続されたスイッチングハブ、またはルーターのLANポートに直接接続します。以下の図をご参照ください。

接続(配線)について
また、シリアルポートも接続します。

接続(配線)について
シリアル通信でEASY EAI Nano-TBにログインし、ip addr コマンドを実行して、eth0(有線LAN)およびwlan0(無線LAN)にルーターから動的に割り当てられたIPアドレスを確認します。
ip addr確認の結果、割り当てられたIPアドレスはそれぞれ以下の通りです。

接続(配線)について
【eth0】— IPアドレス:192.168.3.86、サブネットマスク(24):255.255.255.0
【eth1】— LANケーブルが接続されていないため、IP情報なし
【wlan0】— IPアドレス接続されていないため、IP情報なし
これらのIPアドレスを利用して、PCとの間で相互にpingを実行します。pingが通る(通信が確認できる)状態になって初めて、SSHでのログインが可能になります。
2.3.2 MobaXtermの使用手順
以下に、MobaXtermを使用してSSH接続を行う方法を説明します。
左側のメニューから「Session」を選択し、接続タイプで「SSH」を選びます。ボードのいずれかのネットワークインターフェース(ここではeth0を例とします)のIPアドレスを入力し、最後に「OK」をクリックします。以下の図をご参照ください。

MobaXtermの使用手順
初回接続時、SSHクライアント(PuTTY)はSSHホストのIPアドレスなどの情報に基づいてSSHキー(ホストキー)を生成し、SSHホストと対応するIPアドレスを紐付けて記憶します。SSHホストのIPアドレスが変更されたり、別のSSHホストが以前記録されたIPアドレスを使用したりして、SSHホストとIPアドレスが一致しなくなった場合、接続できなくなることがあります。その際は、クライアント(PuTTY)側に保存されているSSHホストとIPアドレスの紐付け情報を手動でクリアする必要があります。具体的なクリア方法については、ご使用のSSHクライアントに合わせてご自身でお調べください。
「Accept(同意する)」をクリックすると、ログイン情報の入力が求められます。以下の図をご参照ください。

MobaXtermの使用手順
2.3.3 ユーザー名とパスワード
EASY EAI Nano-TB ユーザー名:nano
EASY EAI Nano-TB パスワード:123456
3 クロスコンパイル・ローカルコンパイル・自動起動
3.1 クロスコンパイル
3.1.1 メリットとデメリット
メリット:
x86アーキテクチャのCPUを使用してコンパイルを行うため、コンパイル速度が速いです。
ソースコードの編集が容易であり、開発環境としてVS CodeやQt Creatorなどの各種IDEをサポートしています。
デメリット:
コンパイル環境のインストールと構築(デプロイ)が必要です。
プログラムのデバッグや実行操作が、ローカルコンパイルと比較して少し直感的ではありません(手順が一段階増えます)。
3.1.2 EASY-EAIコンパイル環境の概要
EASY-EAIコンパイル環境は独自に開発したオンラインコンパイル環境(開発ボードオンライン)です。PC側とボード側でリアルタイムに同期するマッピング関係を構築しており、PC側でクロスコンパイルを行う際に、開発ボード上の依存ライブラリとリアルタイムでリンクできることを保証します。
3.1.2.1 インストールおよびデプロイ方法
EASY-EAIコンパイル環境は、ツールチェーンを解凍してシステム環境変数を設定する従来のクロスコンパイル環境と比較して、デプロイがより簡単であり、様々な互換性の問題を回避できるという特徴があります。
3.1.2.2 組込みデバイス(開発ボード)のマウント
まず、run.sh スクリプトを実行してEASY-EAIコンパイル環境に入ります。

次に、シリアルデバッグを利用してデバイスのIPアドレスを確認します。

EASY-EAIコンパイル環境に戻り、開発ボードに対してpingを実行して通信を確認します。pingが通った後、IPアドレスで、mount コマンドを使用して開発ボードのrootfs(ルートディレクトリ)をEASY-EAIコンパイル環境の /mnt にマウントします。コマンドは以下の通りです:
sudo mount -t nfs -o nolock 192.168.10.194:/ /mnt
組込みデバイス(開発ボード)のマウント
EASY-EAIコンパイル環境内で実行可能プログラムをコンパイルし、それを /mnt 内にコピーすると、自動的に開発ボードのrootfs(ルートディレクトリ)に同期されます。
3.1.3 一般的なコンパイル手法のサンプル
リンク:
ここには4種類の一般的なコンパイル手法のサンプルがあります。

一般的なコンパイル手法のサンプル
各サンプルには、以下のように build.sh スクリプトとソースコードファイルが含まれています。

一般的なコンパイル手法のサンプル
任意のサンプルディレクトリに入り、その中で ./build.sh を実行すると、hello ファイルが生成されます。

一般的なコンパイル手法のサンプル
その後、EASY-EAIコンパイル環境上で、生成されたファイルを /mnt 以下の任意のサブディレクトリにコピーするだけです。

一般的なコンパイル手法のサンプル
シリアルデバッグ経由でボードにログインし、先ほど hello ファイルをコピーしたディレクトリに移動します。以下の通りです:
cd /userdata/ls コマンドを実行してディレクトリを確認すると、hello ファイルが既に同期されていることがわかります。
ls
一般的なコンパイル手法のサンプル
hello ファイルを直接実行すると、実行結果を確認できます。
./hello
一般的なコンパイル手法のサンプル
3.1.4 一般的なコンパイル手法の説明
マッピング関係からわかるように、EASY-EAIコンパイル環境の /mnt ディレクトリは開発ボードのルートディレクトリそのものです。クロスコンパイルツールの依存ライブラリはすべて開発ボード上にあるため、コンパイラに sysroot として /mnt を指定するだけで済みます。
GCC / G++:
aarch64-linux-gnu-gcc --sysroot=/mnt hello_world.c -o helloaarch64-linux-gnu-g++ --sysroot=/mnt hello_world.cpp -o helloCMAKE: CMakeList.txt ファイルに以下のインクルード文を記述するだけです。
include ($ENV{HOME}/configs/cross.cmake)QMAKE: qmake ツールは開発ボードに直接インストールされているため、EASY-EAIコンパイル環境から直接 qmake を実行できます。コマンド例は以下の通りです。
/mnt/usr/bin/qmake xxxxxx.promake3.2 ローカルコンパイル
3.2.1 メリットとデメリット
メリット:
開発ボードをそのままシングルボードコンピュータ(超小型PC)として使用でき、煩雑なアプリのデプロイ作業が不要になります。
デメリット:
rv1126BのCPUを使用してコンパイルを行うため、性能が相対的に低く、コンパイル速度が遅くなります。
ソースコードの編集が困難であり、ネイティブのviエディタしか使用できず、各種IDEを使用できません。
3.2.2 使用方法
シリアルデバッグやSSHなどの方法を利用して開発ボードのコンソール(バックグラウンド)にログインし、開発ボードをそのままUbuntuシステムがインストールされたPCとして使用します。
3.3 自動起動設定
3.3.1 概要
自動起動には4つのスクリプトファイルが関与しています。具体的には、rc.local、S99_userapp、start_app.sh、stop_app.sh です。
3.3.1.1 スクリプトの説明:
/etc/rc.local:このスクリプトは、Linuxファイルシステム起動後に最初に呼び出されるプログラムです。/etc/init.d/ 以下のすべてのスクリプトを、名前の順序に従って順次呼び出します。(例:A41はS41より先に呼び出され、S41はS99より先に呼び出されます)
/etc/init.d/S99_userapp:これはユーザーアプリケーションの起動/停止を管理するための専用スクリプトです。
/userdata/start_app.sh:ユーザーアプリケーションの起動ロジックは通常ここに記述されます。内容は自由に変更可能です。
/userdata/stop_app.sh:ユーザーアプリケーションの終了ロジックは通常ここに記述されます。内容は自由に変更可能です。
3.3.1.2 呼び出し順序と関係:

呼び出し順序と関係:
3.3.2 詳細説明:
3.3.2.1 /etc/init.d/S99_userapp
システムに組み込まれている起動スクリプトです。必要に応じてご自身で変更できます。
#!/bin/sh
if [ -e /userdata/apps/run.sh ];then cd /userdata/apps && ./run.shfi3.3.2.2 /userdata/stop_app.sh
#!/bin/sh# Kill your app when shutdown system. For example:# killall facialGate3.3.3 操作ガイド:
3.3.3.1 注意事項の説明:
通常、ユーザーのプログラムは一度起動すると終了しないため、プログラム実行コマンドの末尾に「&」を追加してバックグラウンドで実行させる必要があります。これにより、他の起動スクリプトの実行がブロック(停止)されるのを防ぐことができます。
/qSolu-facialGate &ユーザー独自の動的ライブラリ(共有ライブラリ)がユーザースペースにある場合は、起動スクリプト内に環境変数を追加することも可能です。
source /etc/profileexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/userdata/mylib/自動起動させるプログラムが Qt プログラムであり、Qt の環境変数にカスタム設定が必要な場合は、さらに Qt の環境変数を設定することもできます。
export QT_QPA_FB_DRM=1export QT_QPA_PLATFORM=linuxfb:rotation=0#export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event5:rotate=180