本初心者講座は、ルネサスエレクトロニクス社(以降、ルネサス)のArm® Cortex®-Aプロセッサ内蔵マイコン RZ/Gシリーズを初めて使うエンジニア向けの「ルネサスRZ/Gシリーズ入門講座」です。
本初心者講座のゴールは次の3つです。
- マイクロプロセッサ・RZ/Gシリーズの製品仕様、開発環境、アプリケーションを理解する。
- マイクロプロセッサ・RZ/Gシリーズの基本的な使い方を理解する。
- マイクロプロセッサ・RZ/Gシリーズの応用的な使い方を理解する。
*本講座では、マイクロプロセッサをプロセッサと称して説明いたします。
本講座は次の5回シリーズの連載で構成されます。
第1回:RZ/Gシリーズの紹介
第2回:開発環境の整備
第3回:組込みLinuxを動かしてみる
第4回:ユーザーアプリケーションを追加してみる
第5回:サブコアを使ってみる
今回は、第3回の「組み込みLinuxを動かしてみる」です。「RZ/G Verified Linux Package」を使って、組込みLinuxを動作させます。このPackageの中の「Linux Start-up Guide(Linuxスタートアップガイド)」をベースに進めます。
【課題】
1.組み込みLinuxを動作させる開発環境を理解する
組み込みLinuxを動作させるために必要な開発環境について学習し、理解します。
2. ビルド操作の手順を理解する
ビルドには、前準備が必要です。その手順を学習し、理解します。
3. SDカードの処理方法を理解する
SDカードを準備して、ビルド結果のイメージを書き込みます。SDカードの初期化から書き込みまでの手順を理解します。
目次
使用機材
(1)ハードウェア
RZ/G2Lの評価を行うボードはルネサスから販売されている評価キット「RZG2L Evaluation Board Kit」を使用します。ルネサスから提供されている情報やサンプルプログラムなどはこの評価キットを使用しているため、入門編の本講座にはうってつけです。
パソコンは、デバッグ環境用のWindowsと、ビルド用のLinuxが必要です。本講座では、Windowsのパソコンの仮想環境上でLinuxを走らせることで、パソコンを1つで済ませます。
仮想環境については、「 第2回:開発環境の整備」で、仮想環境Virtual BoxとホストLinuxのUbuntu 20.04 LTSのインストール方法を説明しました。詳しくは、「第2回:開発環境の整備」を参照してください。
RZG2L Evaluation Board Kit」にはUSBケーブル(USB Type-A- Micro USB Type-B)が同梱されていますので、ユーザーが準備するものは以下になります。
- USB電源(5V3A)
- USB type Cケーブル(電源用)
- 8GBマイクロSDカード(以降、SDカード)
(注)詳細はボードの User’s Manualを参照してください。
図1:RZG2L Evaluation Board Kit
図2:PCと評価キットの接続
(2)ソフトウェア
前述したように、仮想環境はVirtualBox 7.0、ホストLinuxはUbuntu 20.04.4 LTS、組込みLinuxはRZ/G Verified Linux Package v3.0.6-update3です。
余談ですが、筆者のPCにUbuntuをインストールしたところ、画面が小さかったので、設定を変更して作業しました。PCの仕様にも依存しますが、Ubuntuのデフォルト設定で、使いにくい場合は、設定変更できます。設定の変更法を本文の最後に《付録:Ubuntuの設定方法》として記載しておきましたので、参考にしてください。
ブートの状態を確認するためにターミナルソフトが必要です。今回は TeraTermを使います。また、USB経由でWindows PCと評価キットを通信できるようにするために、VCP(仮想COMポート)を使いますので VCPドライバーが必要です。
TeraTermとVCPドライバーは、どちらも難しい操作は必要なく、簡単にダウンロードできて、ダウンロードした実行ファイル(.exe)を実行すれば、インストールできます。
図3(a):TeraTermのダウンロードWeb
図3(b):VCPドライバーのダウンロードWeb
(3)開発環境のまとめ
使用機材・環境をまとめると次のようになります。
表1:RZ/G2Lの開発環境
使用機材・環境が明確になったら、実際の作業に移ります。
RZ/G Verified Linux Packageのダウンロード
まずは、ルネサスの WebサイトからRZ/G Verified Linux Packageの最新版をダウンロードします(執筆時はv3.0.6-update3)。UbuntuにはFirefoxというブラウザーがありますから、Firefoxを使ってダウンロードしてみましょう。
Oracle VirtualBoxを開けます。Virtual Boxの画面の左側のapsという名のUbuntuを選択して、起動します。
図4:Virtual Boxを開けてUbuntu[aps]を起動
画面の左上のFirefoxを選択します。
図5:Firefox
検索エンジン(Googleなど)でRZ/G VLPを検索します。そしてルネサスのWebを順次進んで行きます。この時ユーザー登録が必要です。
図6:RZ/G VLP検索
RZ/G2LのVLPをクリックしてダウンロードします。
図7:RZ/G VLP(VLP v3.0.6-update3)のダウンロード(1)
ドキュメント更新のお知らせやログイン画面が出てきますが、とにかく進みます。ネット環境とPCの能力に依存しますが、ダウンロードには少し時間がかかります。
図8:RZ/G VLP(VLP v3.0.6-update3)のダウンロード(2)
ファイルメニューを使って、ダウンロードファイルを開けて、ダウンロードされていることを確認します。
図9:ダウンロードファイルの確認
ファイルがダウンロードされたら、一旦、ここに保留しておきます。ビルドをする際に、別のディレクトリに移して展開(または解凍:以降、展開)して使います。ちなみに、中身は次のようになります。
図10:RZ/G Verified Linux Packageの中身
この中で、01us0616ej0105-rz-g(Linux Start-up Guide RZG2L,LC,UL)(執筆時Rev1.05)が、組込みLinuxを動かすための手順書です(以降、スタートアップガイド)。そして、tar.gzファイルがビルドの対象ファイルです。今回はこのスタートアップガイドに従ってLinuxを動かすところまでを行います。
また、r01us0553ej0115-rz-g(Release Note).pdf (以降、リリースノート)にバージョンごとの注意事項が書かれています。パッチを適用する場合は、リリースノートを参考にして進めます。
この後の作業は、Linuxのターミナルにコマンドを入力して行きますが、そのコマンドはスタートアップガイドとリリースノートの中に記述されていますので、コマンドの記述をコピー&ペーストして使うと便利です。展開前のファイルでも、ダブルクリックしてファイルを開けてコピー&ペーストできます。
作業を始める前に
前述したように、基本的な作業はスタートアップガイドに従って行います。途中で、パッチを適用します。パッチについては、リリースノートを参考にして進めます。
スタートアップガイドやリリースノートは、Linuxについて知識が有る前提で記述されています。そのため、いわゆる「Linuxを使う際には、当然知っている操作」は省略されています。本連載は、初心者向けですので、「Linuxを使う際には、当然知っている操作」も補足解説して進めます。
「 第2回:開発環境の整備」でも説明しましたが、大事なのでもう一度説明します。VLPはUbuntu 20.04でのみビルドされます。VLPをビルドするにはUbuntu 20.04が必要です。Ubuntu 20.04は、テストされた唯一のホストオペレーティングシステムであり、Yocto 3.1 (dunfell)の特定の要件であるためです。Ubuntu 22.04ではサポートされていません。
ただし、Ubuntu 20.04を実行するDocker container内でVLPをビルドすることができます。この Docker containerを作成する手順については、 GithubのURLを参照してください。
ホストパッケージのインストール
最初に行う作業は、パッケージのインストールです。ビルドを開始する前に、組込みLinux(VLP)のビルドに必要なツールのホストパッケージをインストールします。
Linuxのターミナルを開いて、apt-getコマンドを実行します。このコマンドを実行するには管理者権限が必要ですので、sudoを付けて実行します。今回、ユーザー名はaps、パスワードはinscapeです。
$ sudo apt-get update
すると「[sudo]ユーザー名」のパスワードを聞いてきますので、パスワードを入れます。しかし、「ユーザー名は sudoers ファイル内にありません。この事象は記録・報告されます」という警告が出て、sudoが使えません。このメッセージは、スタートアップガイドでは説明されていません。
原因は、sudoersというグループに新規に作成したユーザーが無いためです。これを解決するには、新規ユーザーを追加する必要があります。そこで、まずrootユーザーに切り替えます。
$ su
パスワードを聞かれますので、パスワード(inscape)を入力します。ここでプロンプトがroot@aps:/home/aps#に変わります。
次に、/etc/sudoers.dの下にユーザー名(aps)という名前のファイルを作ります。ここではテキストエディタのviコマンドを使います。
root@aps:/home/aps# sudo vi /etc/sudoers.d/aps
図11:sudo apt-get update入力
これでapsというファイルができて、同時にファイルが開きます。apsの中に、次のように書き込みます。
aps ALL=(ALL) ALL
図12:apsファイルの編集
保存して閉じるのでEscキーを押して、:wqと入力します。ちなみに保存しないで閉じる場合は:q!です。
exitと入力して、rootから抜けます。
root@aps:/home/aps# exit
再び
$ sudo apt-get update
と入力します。また、パスワードを聞かれますので、パスワード(inscape)を入力します。
図13:sudo apt-get updateの結果
いよいよ、ビルドホストに必須のホストパッケージをインストールします。次のコマンドで、Ubuntuディストリビューションに基づいてホストパッケージをインストールします。
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm p7zip-full libyaml-dev libssl-dev bmap-tools
これは、長いコマンドなのでスタートアップガイドからコピー&ペーストすると簡単で、入力ミスも起きません。テキストを選択して、マウスの右クリックでコピーします。記述が4行に渡っていますので、各行をコピー&ペーストします。このとき文末の「\」は、テキストが続いているという意味なので、コピーしません。
図14:テキストのコピー
すると、続行するかどうかを聞かれますので、yを入力します。
図15:ホストパッケージのインストールの途中経過
ところが、次のようなコメントが出てくる場合があります。出ない場合もあります。これもスタートアップガイドには記載されていません。
E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 6373 (unattended-upgr)
N: Be aware that removing the lock file is not a solution and may break your system.
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
これは、aptコマンドがロックを取得できていないか、別のインストール系の処理が動作中か、以前のインストールが正常に終了していない場合に発生するそうです。
このエラーを解決するには、次のうちのどれかのコマンドを入力して、lockを削除します。どのコマンドが有効かは、入力してみないとわかりません。
$ sudo rm /var/lib/dpkg/lock-frontend
$ sudo rm /var/lib/apt/lists/lock
$ sudo rm /var/lib/dpkg/lock
$ sudo rm /var/lib/dpkg/lock-frontend
$ sudo apt autoremove
そして、再度、以下のコマンドを入力します。
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm p7zip-full libyaml-dev libssl-dev bmap-tools
少し時間が経つと次の画面になります。
図16:ホストパッケージのインストールの結果
以上で、ホストパッケージのインストールは完了です。
ユーザー名とメールアドレスの設定
ビルド手順を開始する前に、以下のコマンドを実行し、ユーザー名とメールアドレスを設定します。この設定がないと、git コマンドを実行してパッチを適用するときにエラーが発生します。
$ git config --global user.email "you@inscape.co.jp"
$ git config --global user.name "Your Name"
するとコマンド”git”がみつかりませんというエラーになる場合があります。出ない場合もあります。
これもスタートアップガイドには記載されていません。そこで、
$ sudo apt install git
と入力します。再度、
$ git config --global user.email "you@inscape.co.jp"
$ git config --global user.name "Your Name"
を入力します。
作業ディレクトリの作成
次に、ホームディレクトリに作業ディレクトリを作成し、Yoctoレシピパッケージを展開します。次のコマンドを実行します。作業ディレクトリの名前と場所は必要に応じて決められます。
$ mkdir ~/rzg_vlp_v3.0.6
すると、ホームディレクトリにrzg_vlp_v3.0.6というディレクトリができます。
図17:作業ディレクトリの作成
ここに先ほどダウンロードしたVLPパッケージの中のTK0EF0045Z0021AZJ-v3.0.6-update3.zipをコピーします。ターミナルでコマンドを入力しても良いのですが、長文になるので、ここはフォルダツールを使います。
図18:RTK0EF0045Z0021AZJ-v3.0.6-update3.zip
そして、ターミナルに戻ってRTK0EF0045Z0021AZJ-v3.0.6-update3.zipを展開します。まず、先ほど作ったディレクトリrzg_vlp_v3.0.6に移ります。
$ cd ~/rzg_vlp_v3.0.6
そして、RTK0EF0045Z0021AZJ-v3.0.6-update3.zipを展開します。
$ unzip ./RTK0EF0045Z0021AZJ-v3.0.6-update3.zip
次にrzg_vlp_v3.0.6.tar.gzを展開します
$ tar zxvf ./RTK0EF0045Z0021AZJ-v3.0.6-update3/rzg_vlp_v3.0.6.tar.gz
図19:rzg_vlp_v3.0.6.tar.gzの展開結果
lsコマンドを使って、ファイルを確認してみましょう。次のファイルが揃っていれば問題ありません。
図20:rzg_vlp_v3.0.6のファイル構成
パッチの適用
今回ダウンロードしたVLP 3.0.6-update3の場合、 リリースノートの5.1 Notesに書いてあるパッチを適用する必要があります。
最初は次のように「~/rzg_vlp_ v3.0.6/extra」ディレクトリで VLP/G v3.0.6-update3 のパッチを作成します。
$ cd ~/rzg_vlp_v3.0.6
$ patch -p1 < ./RTK0EF0045Z0021AZJ-v3.0.6-update3/vlpg306-to-vlpg306update3.patch
図21:VLP/G v3.0.6-update3 のパッチの作成
次に、(1)For update glibc to v2.28-10+deb10u4 (All product)のパッチを適用します。
このパッチは、以前のバージョンが開発者によってネットワークから削除されたため、glibcを v2.28-10+deb10u2からv2.28-10+deb10u4にアップグレードします。オープンソースソフトウェアパッケージ(oss_pkg_rzg_v3.0.6.7z)なしでビルドすると、ビルドが失敗します。これらのパッケージなしで正常にビルドするには、次のようにパッチを適用します。
$ cd ~/rzg_vlp_v3.0.6/meta-renesas
$ patch -p1 < ../extra/0001-rz-common-recipes-debian-buster-glibc-update-to-v2.2.Patch
図22:glibcをv2.28-10+deb10u2からv2.28-10+deb10u4にアップグレードするパッチ
次に、(3)For 48Khz rate audio sound (RZ/G2L/LC/UL, RZ/G3S)のパッチを適用します。
このパッチは、現在の固定クロックを置き換えます。現在のオーディオマスタークロック(MCLK) は、一般的に使用されている44.1 kHz サンプリングレートの倍数である11.2896 MHzの固定周波数を使用します。
この手順では、現在の固定クロックをプログラム可能なVersa3 クロックに置き換えます。これにより、再生と録音に必要なオーディオサンプリングレートに基づいて、44.1 kHzサンプリングレート(11.2896 MHz クロックを使用)と48 kHzサンプリング レート(12.2880 MHzクロックを使用)の両方のサポートが有効になります。
$ cd ~/rzg_vlp_v3.0.6/meta-renesas
$ patch -p1 < ../extra/0001-rz-common-linux-update-linux-kernel-to-the-latest-re.patch
図23:現在の固定クロックを置き換えるパッチ
最後のパッチは(4)For updating the gstreamer recipe (All product)です。meta-rz-features/meta-rz-graphicsレイヤなしでgstreamer-plugins-badをビルドするときに発生したビルドエラーを解決するために、レシピが更新されています。
$ cd ~/rzg_vlp_v3.0.6/meta-renesas
$ patch -p1 < ../extra/0001-rz-common-gst-plugins-bad-Depending-bayer2raw-if-lay.patch
図24:ビルド エラーを解決するためのレシピ更新のパッチ
ビルド
いよいよbitbakeを使ってビルドをします。参照資料をリリースノートからスタートアップガイドに戻します。
ビルド前にsourceコマンドでスクリプトを実行してビルド環境の設定を行います。具体的には、TEMPLATECONFやMACHINEの環境変数を設定して、その値をコマンドに渡しています。
まず、Pokyの'oe-init-build-env'スクリプトを使用してビルドを初期化し、TEMPLATECONFをプラットフォームのconfパスにポイントします。次のコマンドを入力します。まずrzg_vlp_v3.0.6ディレクトリに戻ります。そして、TEMPLATECONF…を入力します。
$ cd ~/rzg_vlp_v3.0.6
$ TEMPLATECONF=$PWD/meta-renesas/meta-rzg2l/docs/template/conf/ source poky/oe-init-build-env build
図25:TEMPLATECONFの環境変数の設定
bitbakeを使ってビルドします。bitbakeのパラメータはcore-image-minimalを選択して、最小構成のビルドを行います。
$ MACHINE=smarc-rzg2l bitbake core-image-minimal
ビルド時間はインターネットとPCの能力に依存しますが、ビルドの完了まで筆者(自宅)の環境で十数時間かかりました。また、最初にUbuntuをインストールした際に設定したメインメモリは4096MBでしたが、8192MBまたはそれ以上に設定するのが可能であれば、もっと早くビルドが終わります。しかし、それでも数時間はかかります。
図26:ビルド結果
「NOTE: Tasks Summary: Attempted 3158 tasks of which 8 didn't need to be rerun and all succeeded.」ということで、これでビルドは完了です
SDカードの準備
次はビルドしたバイナリをSDカードに書き込んで、RZ/G2Lの評価キットでLinuxの起動を確認しますが、最初にSDカードの前準備が必要です。その後、バイナリを書き込みます。
今回は、USBのカードリーダーを使用しました。SDカードをPCに差すと、Windowsがデバイスを認識しますが無視して、仮想環境側のLinuxで認識させます。
SDカードを差し込んで、lsblkで接続を確認すると以下のようにディスク系のデバイスが表示されます。sdbがSDカードを表します。sdbが現れない時には、VirtualBoxで[デバイス]メニューの[USB][Generic Massstrage device[0100]を選択し、再度lsblkで確認します。
ちなみに、このSDカードはWindowsでボリューム名APSに初期化したものを流用しました。
図27:SDカードの確認
SDカードの準備は次の2つの方法のどちらかで行います。
(1)wicイメージを使用する。
(2)wicイメージを使用しない。
さらに、スクリプトを使用する方法もあります。スクリプトを使用する場合は、 こちらのURLを参照してください。
wicイメージを使用すると、wic(SDイメージ)を書き込むだけで簡単に書き込めます。一方、wicイメージを使用しないと、かなり手間がかかり面倒ですので、「(1)wicイメージを使用する。」を、お勧めします。
《補足》wicはSDカードイメージのファイル形式です。拡張子に.wicを使います。今までは.img が一般的でしたが、比較的新しい環境では.wicが使われる場合が多くなってきています。
(1)wicイメージを使用する
wicイメージを使用する場合は、スタートアップガイドの「3.1 Write files to the microSD card (used wic image)」に従います。
まず、umountコマンドを入力します。
$ umount /dev/sdb1
$ umount /dev/sdb2
次に、bmaptoolコマンドを使ってビルドで生成された<wic image>.wic.gzファイルをSDカードに書き込みます。<wic image>は、ビルドされた結果で変わりますが、core-image-minimal-smarc-rzg2l.wic.gzのような形式のファイルです。今回は「core-image-minimal-smarc-rzg2l-20250207012403.rootfs.wic.gz」です。
ビルド結果は「rzg_vlp_v3.0.6/build/tmp/deploy/images/smarc-rzg2l」にありますので、bmaptoolコマンドは次のように入力します。
$ sudo bmaptool copy ~/rzg_vlp_v3.0.6/build/tmp/deploy/images/smarc-rzg2l/core-image-minimal-smarc-rzg2l-20250207012403.rootfs.wic.gz /dev/sdb
図28:bmaptoolコマンド
これで、SDカードにビルド結果が書き込まれました。
(2)wicイメージを使用しない
次にwicイメージを使用しない場合を説明します。こちらの方が、手間がかかり面倒ですので、お勧めしませんが、参考までに説明しておきます。
SDカードの初期化
スタートアップガイドに従ってSDカードをumountして初期化します。まず、FAT32とext4の二つのパーティションを割り当てます。
$ sudo umount /media/aps/APS
図29:SDカードのumount
続けてfdiskコマンドを入れます。
$ sudo fdisk /dev/sdb
すると以下のメッセージが出ます。
fdisk (util-linux 2.34) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。
コマンド (m でヘルプ):
ここでは、「o」を入力します。
コマンド (m でヘルプ): o
新しい DOS ディスクラベルを作成しました。識別子は 0xc6281f26です。
コマンド (m でヘルプ):
ここでは、「n」を入力します。
コマンド (m でヘルプ): n
パーティションタイプ
p 基本パーティション (0 プライマリ, 0 拡張, 4 空き)
e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p):
ここでは、「p」を入力します。
選択 (既定値 p): p
パーティション番号 (1-4, 既定値 1):
ここでは、なにも入力せずに「Enter」します。
パーティション番号 (1-4, 既定値 1): [ENTER]
最初のセクタ (2048-15351807, 既定値 2048):
ここでは、なにも入力せずに「Enter」します。
最初のセクタ (2048-15351807, 既定値 2048): [ENTER]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-15351807, 既定値 15351807):
ここでは、「+500M」を入力します。
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-15351807, 既定値 15351807): +500M
新しいパーティション 1 をタイプ Linux、サイズ 500 MiB で作成しました。
パーティション#1にはvfat署名が書き込まれています。
署名を削除しますか?[Y]es/[N]o:
ここには、「n」を入れます。
署名を削除しますか?[Y]es/[N]o:n
図30:FAT32のパーティションに500MB割り当て
ここまででFAT32のパーティションが500MB割り当てられました。
続けて残りのパーティションをext4に割り当てます。
コマンド (m でヘルプ):
ここでは、「n」を入力します。
コマンド (m でヘルプ): n
パーティションタイプ
p 基本パーティション (1 プライマリ, 0 拡張, 3 空き)
e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p):
ここでは、「p」を入力します。
選択 (既定値 p):p
パーティション番号 (2-4, 既定値 2):
ここでは、なにも入力せずに「Enter」します。
パーティション番号 (2-4, 既定値 2): [ENTER]
最初のセクタ (1026048-15351807, 既定値 1026048):
ここでは、なにも入力せずに「Enter」します。
最初のセクタ (1026048-15351807, 既定値 1026048): [ENTER]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1026048-15351807, 既定値 15351807):
ここも、なにも入力せずに「Enter」します。
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1026048-15351807, 既定値 15351807): [ENTER]
新しいパーティション 2 をタイプ Linux、サイズ 6.9 GiB で作成しました。
パーティション#2にはvfat署名が書き込まれています。
署名を削除しますか?[Y]es/[N]o:
ここには、「n」を入れます。
署名を削除しますか?[Y]es/[N]o:n
図31:残りのパーティションをext4に割り当てる
ext4のパーティションを割り当てましたので、ここでは、「p」を入力して割り当てたパーティションを確認します。
コマンド (m でヘルプ): p
図32:パーティションの確認
一つ目のパーティションがLinuxになっていますのでW95 FAT32に変更し、書き込みを行って終了します。
コマンド (m でヘルプ):
ここでは、「t」を入力します。
コマンド (m でヘルプ): t
パーティション番号 (1,2, 既定値 2):
ここでは、「1」を入力します。
パーティション番号 (1,2, 既定値 2): 1
16 進数コード (L で利用可能なコードを一覧表示します):
ここでは、「b」を入力します。
16 進数コード (L で利用可能なコードを一覧表示します): b
パーティションのタイプを 'Linux' から 'W95 FAT32' に変更しました。
図33:パーティションのタイプを'Linux'から'W95 FAT32'に変更
コマンド (m でヘルプ):
ここでは、「w」を入力します。
コマンド (m でヘルプ):w
図34:パーティションの変更(書き込み)
パーティションを最終確認します.
$ sudo partprobe
パスワードを聞かれますので、パスワードを入れます。
$ sudo fdisk -l /dev/sdb
図35:パーティションの最終確認
パーティションがW95 FAT32となっていることを確認しました。
フォーマット
SDカードのフォーマットを行います。
最初はFAT32のフォーマットです
$ sudo mkfs.y -v -c -F 32 /dev/sdb1
図36:FAT32のフォーマット
次はext4のフォーマットです。
$ sudo mkfs.ext4 -L rootfs /dev/sdb2
図37:ext4のフォーマット
これでフォーマットが完了です。
再マウントするために、SDカードを取り外して、再度差し込みます。
そしてdfコマンドで正しく認識されているか確認します。
$ df
図38:SDカードの再マウント後の確認
sdb1とsdb2の二つのパーティションが/media/aps/以下にマウントされているのが確認できます。
SDカードにイメージをコピー
SDカード「/media/aps/ 05E5-D274」に、ビルド結果のカーネルイメージとデバイスツリーファイルをコピーします。
ビルド結果は「rzg_vlp_v3.0.6/build/tmp/deploy/images」にあります。
$ cp ~/rzg_vlp_v3.0.6/build/tmp/deploy/images/smarc-rzg2l/Image-smarc-rzg2l.bin /media/aps/05E5-D274
$ cp ~/rzg_vlp_v3.0.6 /build/tmp/deploy/images/smarc-rzg2l/Image-*.dtb /media/aps/05E5-D274
図39:SDカードにビルド結果をコピー
ルートファイルシステムのイメージを展開します。
$ cd /media/aps/rootfs
$ sudo tar jxvf ~/rzg_vlp_v3.0.6/build/tmp/deploy/images/smarc-rzg2l/core-image-minimal-smarc-rzg2l-*.rootfs.tar.bz2
これでSDカードへの処理は終わりです。
ブートローダとフラッシュライタをWindows PCに移す
SDカードの準備ができましたので、実際に組み込みLinuxを評価キット上で走らせる工程に移ります。スタートアップガイドでは「4.Reference Board Setting」です。
最初は、評価キットのセッティングですが、その前の準備工程として、Ubuntu上のビルドで生成されたブートローダとフラッシュライタをWindows PCに移します。
ビルドによって、ブートローダが生成されます。それをWindows PCで、書き込みます。そこで、最初に、ブートローダファイルをシリアルターミナルソフトウェアが動作するWindows PCにコピーします。
wicイメージを使ってSDカードを作成した際は必要なファイルが、SDカードの第1パーティション(FAT)に書き込まれますので、SDカードをWindows PCに挿入すれば必要なデータをコピーできて便利です。wicイメージを使用しない場合は別の方法で行います。
UbuntuのファイルからWindowsのファイルにコピーする方法は、アプリなど様々ですが、USBメモリが比較的簡単です。
USBメモリをPCに差し込むと、最初、Windowsに認識されますが、無視して仮想環境側のLinuxで認識させます。
Ubuntuの[デバイス]メニューの[USB]にUSBメモリの種類が表示されます。今回はBUFFALO USB Flask Disk[0100]です。これをクリックして選択します。
図40:UbuntuでUSBメモリを確認
すると、左側のメニュー欄にUSBメモリが現れます。
図41:メニュー欄のUSBメモリ
ここに、必要なファイルをドラッグ&ドロップします。
コピーが必要なファイルは次の3つです。
・bl2_bp-smarc-rzg2l_pmic.srec(ブートローダ)
・fip-smarc-rzg2l_pmic.srec(ブートローダ)
・Flash_Writer_SCIF_RZG2L_SMARC_PMIC_DDR4_2GB_1PCS.mot(フラッシュライタ)
Ubuntuのファイルツールでホーム→rzg_vlp_v3.0.6→build→tmp→deploy→images→smarc-rg2lと開けていきます。画面の上に🔍マークの検索ツールがありますので、そこに.srecと入れると.srecファイルの一覧が出てきます。
図42:ファイルの検索
その中のbl2_bp-smarc-rzg2l_pmic.srecとfip-smarc-rzg2l_pmic.srecをメニュー欄のUSBメモリへドラッグ&ドロップします。
メニュー欄のUSBメモリの中身をみると、2つのファイルがコピーされていることが確認できます。
図43:ファイルのコピー
同じようにして、Flash_Writer_SCIF_RZG2L_SMARC_PMIC_DDR4_2GB_1PCS.motもUSBメモリにコピーします。
メニュー欄のUSBメモリの所に取り出しボタンの記号があるので、クリックしてUSBメモリを取り外します。一旦PCからUSBメモリを抜いて、再度差し込みます。するとWindowsの方でUSBメモリを認識しますので、中に入っているファイルを、PCにコピーします。
図44:ファイルWindowsのフォルダへコピー
これで、ブートローダとフラッシュライタのファイルがWindows PCにコピーできました。
電源接続
RZ/G2Lの評価キットのターミナル用のUSBコネクタをパソコンに接続して、ターミナルソフト(TeraTerm)を使って動作確認を行います。SDカードをRZ/G2Lのボードに差し込んで電源を入れます。BOOT/Power Mode Select(SW11)は、1:ON、2:OFF、3:OFF、4:OFFです。
また、RZ/G2L 評価キットは、電源をOnしないとVCPが有効になりません。
図45:動作確認のハードウェアの設定
電源投入の手順は、次のようになります。
- 電源用のUSB Type-CケーブルをCN6に接続します。スタートアップガイドでは、電源は5V、3Aと記載されています。
- LED1(VBUS PWRオン)とLED3(モジュールPWRオン)が点灯します。
- VCP用のUSBケーブルをCN14に接続します。
- 電源ボタン(SW9)を1秒以上押して電源を入れます。 ちなみに、電源を切るときは、電源ボタンを2秒間押します。
- LED4(キャリア電源オン)が点灯します。
ここで、VCPが認識されます。有効になるVCPは環境によって変わります。今回はCOM3が有効になりました。VCPの設定は、ボーレートを115200に変更すれば、あとはデフォルトでOKです。
図46:Tera Termの設定
ハードウェアの設定が終わったら、スタートアップガイドの「4.2.2 Building files to write」に従ってフラッシュ ライターとブートローダを書き込みます。
フラッシュライタをRAMにダウンロード
評価キットのSW11を「1:OFF、2:ON、3:OFF、4:ON」に設定します。
図47:SCIF Download modeのSW11の設定
リセットボタン(SW10)を押します。ターミナルに次のメッセージが表示されます。
図48:フラッシュライタをRAMにダウンロード
[ファイル]メニューから[ファイル送信]を選びます。
図49:[ファイル]→[ファイル送信]
送信するファイルは、先ほどUbuntuのファイルからWindows PCにコピーしたフラッシュライタ
「Flash_Writer_SCIF_RZG2L_SMARC_PMIC_DDR4_2GB_1PCS.mot」です。
図50:フラッシュライタを選択
すると、小さなウィンドウが現れて、進行状態を示してくれます。
正常に終わると次のようなメッセージが表示されます。
図51:フラッシュライタをRAMにダウンロード(結果)
ブートローダを書き込む
ブート操作を行うには、2つのブートローダをターゲットボードに書き込む必要があります。
対応するブートローダファイルは、先ほどUbuntuのファイルからWindows PCにコピーしたブートローダの「bl2_bp-smarc-rzg2l_pmic.srec」と「fip-smarc-rzg2l_pmic.srec」です。
ブートローダファイルを書き込む前に、フラッシュライタの「SUP」コマンドを使用して、転送速度をデフォルト(115200bps)から高速(921600bps)に変更します。
図52:SUP(Scif speed UP)コマンド
これに合わせてTera Termのスピードを115200bpsから921600bpsに変更します。
図53:Tear Termのスピード変更
変更したらEnter キーを押します。
次に、フラッシュライタの「XLS2」コマンドを使用して、ブートローダバイナリファイルを書き込みます。このコマンドは、シリアルポートからバイナリデータを受信し、メインメモリのアドレスにデータをロードする場所の情報とともに、フラッシュROMの指定されたアドレスにデータを書き込みます。
ターミナルにXLS2と入力すると、次の画面が表示されて、アドレスを聞いてきます。
Program Top Addressには「11E00」を入れて、Qspi Save Addressには「00000」を入れます。
すると、please send !と表示されます。
図54:ブートローダバイナリファイルを書き込む
図45~図48と同じ手順で、「bl2_bp-smarc-rzg2l_pmic.srec」を送信します。
図55:「bl2_bp-smarc-rzg2l_pmic.srec」を選択
ここで、「SPI Data Clear(H'FF) Check : H'00000000-0000FFFF,Clear OK?(y/n)」と表示される場合があります。ここでは「y」と入力します。すると、次のメッセージが表示されます。
図56:「bl2_bp-smarc-rzg2l_pmic.srec」の書き込み完了
これで「bl2_bp-smarc-rzg2l_pmic.srec」の書き込みはOKです。
次に、もう1つのファイル「fip-smarc-rzg2l_pmic.srec」を書き込みます。再びXLS2と入力します。同じように、次の画面が表示されて、アドレスを聞いてきます。
今回のProgram Top Addressには「00000」を入れて、Qspi Save Addressには「1D200」を入れます。すると、please send !と表示されます。
図57:「fip-smarc-rzg2l_pmic.srec」を書き込む
図45~図48と同じ手順で、「fip-smarc-rzg2l_pmic.srec」を送信します。
図58:「fip-smarc-rzg2l_pmic.srec」を選択
ここでも、「SPI Data Clear(H'FF) Check : H'00000000-0000FFFF,Clear OK?(y/n)」と表示される場合があります。「y」と入力します。すると、次のメッセージが表示されます。
図59:「fip-smarc-rzg2l_pmic.srec」の書き込み完了
これで「fip-smarc-rzg2l_pmic.srec」の書き込みはOKです。
ノーマルブートモード
最後に、スタートアップガイドの 「4.5 Change Back to Normal Boot Mode」の操作を行います。
評価キットのSW11を「1:OFF、2:OFF、3:OFF、4:ON」に設定します。
図60:Normal Boot ModeのSW11の設定
Tera Termのスピードを921600bps から115200bpsに戻します。
図61:Tear Termのスピードを戻す
リセットボタン(SW10)を押すと組み込みLinuxが起動します。しかし、次のような多くの警告メッセージが表示される場合があります。これは正しい環境変数が設定されていない場合ですので、正しい環境変数をすることで解消されます。デフォルト値を設定して、フラッシュ ROM に保存します。これは、スタートアップガイド「4.5 Change Back to Normal Boot Mode」の操作です。
図62:警告メッセージが表示される場合
=>env default -aと入力します
図63:env default –aを入力
そして、=> saveenvと入力します。
図64:saveenvを入力
再度リセットボタンSW10を押します。すると次の画面が表示されます。
図65:組み込みLinuxの起動画面
Linuxのビルド構成でcore-image-minimalを指定しましたので、何かの操作ができるわけではありませんが、login:と表示されればちゃんと動いています。
以上で、「第3回:組込みLinuxを動かしてみる」は終わりです。実際に組み込みLinuxがRZ/G2L上で動作しましたので、次回は「第4回:ユーザーアプリケーションを追加してみる」です。組み込みLinux上で簡単なアプリケーションを動作させてみます。
《付録:Ubuntuの設定方法》
Ubuntuをインストールしたら、自分の使い勝手が良いように、作業環境を設定しましょう。
設定画面の出し方
右上のスピーカーマークのあたりを右クリックすると設定画面がでます。
図66:Ubuntuの設定画面の出し方
この中の「設定」を選択すると様々な設定ができる画面が出てきます。
図67:Ubuntuの設定画面
また、環境設定を行うには、「ファイル」メニューの環境設定を選択します。すると、環境設定画面が出てきます。ここでは、画面の大きさなどが設定できますので、自分が使いやすいように設定しましょう。
図68:Ubuntuの環境設定メニュー
図69:Ubuntuの環境設定画面