はじめに
qemuのバージョンは記載時の最新であるv8.0.50を使用しました。
作成したのはarm互換マシンになります。
今回参考にしたのはRenesasのRZ/A3ULになります。
理由は以下です
- ハードウェアマニュアルや評価ボードのマニュアルが公開されている。
- IPLのソースコードが公開されている。
- アプリケーションプログラム例のソースコードが公開されている
- 日本の会社なので日本語の情報が多い
試した環境は以下です。
- iMac Late 2015
実行環境の用意
Mac上だと何かと面倒なのでdockerでubuntuを起動させてubuntu内で作業します。
dockerのインストール手順は割愛します。
自分はlimaを使用しました。
インストール手順はこの辺が参考になります。
エラーが出るたびに適当にaptでインストールすれば良いのですが
一応こちらで使用したDockerfileを貼り付けておきます。
今回特に必要になるのは2つ目のブロック(bison,flex等)になります。
Dockerfile
FROM ubuntu:22.04
RUN apt-get update -qq \
&& DEBIAN_FRONTEND=nointeractive apt-get install -yq --no-install-recommends \
build-essential \
curl \
less \
git \
&& apt-get clean \
&& rm -rf /var/cache/apt/archives/* \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN apt-get update -qq \
&& DEBIAN_FRONTEND=nointeractive apt-get install -yq --no-install-recommends \
bison \
flex \
python3 \
ninja-build \
pkg-config \
sudo \
libglib2.0-0 \
libglib2.0-dev \
libpixman-1-dev \
gdb \
unzip \
bzip2 \
libfuse2 \
libgtk2.0-0 \
libdbus-glib-1-2 \
vim
RUN apt-get update -qq && apt-get upgrade -yq
RUN DEBIAN_FRONTEND=nointeractive apt-get install -yq --no-install-recommends \
openssh-client \
openssh-server \
iproute2 \
iputils-ping \
language-pack-ja-base \
language-pack-ja \
wget
RUN apt-get install --reinstall ca-certificates
RUN adduser --disabled-password --gecos "" "user"
RUN echo user:user | chpasswd
RUN echo "user ALL=NOPASSWD: ALL" >> /etc/sudoers
ビルドコマンド(Dockerfileを置いた場所で)
docker build -t qemu .
ドキュメント
今回作成するマシンのリファレンスとなるハードウェアマニュアルをダウンロードします。
解凍してPDFの表示が出来ればOKです。
qemu
以降は全てdocker上で作業します。dockerを起動させてください。
docker run -i -t -p 220:22 -e DISPLAY=host.docker.internal:0.0 -v ~/.Xauthority:/home/user/.Xauthority qemu
どうしてもファイルのやり取りが必要と思われたためscp用に22番を転送しています。
ポートは適当な番号で、自分のPCではimapを使っていないのでわかりやすい220にしました。
また、GUIの操作も必要そうなのでXの転送も有効にしています。
rootでログインするので適当にユーザを作ってください。
adduser user
sudoも有効にしておきましょう
echo "user ALL=NOPASSWD: ALL" >> /etc/sudoers
以降は一般ユーザで作業します。
su user
qemuを持ってきます
mkdir qemu
cd qemu
mkdir build
git clone --depth 1 https://github.com/qemu/qemu.git
ディレクトリイメージです。
workdir
├─ qemu
│ ├─ qemu
│ └─ build
buildディレクトリに入ってqmeuをビルドします。
cd build
../qemu/configure --target-list=aarch64-softmmu --enable-debug
make
正常にビルドが出来てqemu-system-aarch64
が出来ればOKです。
エラーが出る場合は大体何かのライブラリが足らない場合と思われるので
エラーメッセージを見ながらaptでインストールして下さい。
クロスコンパイラ
後掲するe2studioをインストールすれば不要ですが、
そうでない場合はコンパイラが必要です。
qemu上で動くプログラムをコンパイルするクロスコンパイラをダウンロードします。
x86_64 Linux hosted cross compilersの
AArch64 ELF bare-metal target (aarch64-none-elf)
が該当のものになります。
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz
解凍してパスを通して下さい。
PATHの設定は.bashrcなどに記載しておくのが良いと思います
tar xf gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz
export PATH=`readlink -f gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf`/bin:${PATH}
echo export PATH=${PATH} >> ~/.bashrc
aa[Tab]と打って、aarch64-none-elf-
と出てきたらOKです。
IPL(ブートローダ)
ダウンロードしてビルド確認します。
git clone https://github.com/renesas/rza-initial-program-loader.git ipl
cd ipl
CROSS_COMPILE=aarch64-none-elf- make PLAT=qemu V=1 DEBUG=1 2>&1 | tee make.log
CROSS_COMPILE=aarch64-none-elf- make PLAT=a3ul BOARD=a3ul_smarc_qspi V=1 DEBUG=1 2>&1 | tee make.log
以下が作成されればOKです。
- ./build/qemu/debug/bl1.bin
- ./build/a3ul/debug/bl2.bin
FSP(アプリケーションプログラム)
FSPをコマンドラインでビルドする方法はわかりませんでした。
仕方がないのでe2studioをインストールします。
e2studioはGUIのIDEなのでMacOS上にXServerを起動して表示させます。
e2studio
e2studioのダウンロード
ここにあるのですが、ルネサスへのユーザ登録必須となっています。
また、自分の環境ではルネサスの認証を突破可能なブラウザを
ubuntu上に動作させることが出来ませんでした。
一応試したブラウザ
ブラウザ | 結果 |
---|---|
midori | 同意画面で同意を押しても反応しない |
vivaldi | 重すぎてまともに動かない |
firefox | 重すぎてまともに動かない |
古いfirefox(v32.0) | 同意画面で同意を押しても反応しない |
仕方がないのでMacOSでダウンロードしてscpで転送しています。
docker起動時にポート転送指定したのはこのためです。
docker上でsshdが起動していなければ
/usr/sbin/sshd -D &
などで起動させて下さい。
ポート転送済みなのでscpコマンドは以下のように出来ます。
scp -P 220 e2studio_installer-2023-04_linux_host.run user@localhost:/tmp/
XServer
GUIをMacOS上で表示させるためにXQuartzの実行が必要になります。
普通にダウンロードしてインストールして下さい。
起動させた後、メニューからXQuartz -> 環境設定 -> セキュリティで
ネットワーク・クライアントからの接続を許可にチェックを入れて
XQuartzを再起動する必要があります。
e2studioインストーラの起動
ubuntu上で
chmod +x /tmp/e2studio_installer-2023-04_linux_host.run
/tmp/e2studio_installer-2023-04_linux_host.run
とするとインストーラが起動します。
e2studioのインストール
アプリケーションノートの6.1 Procedure for building a development environment for Widows10 PC
あたりを見ながらインストールしてください。
ubuntu版も次の章に記載されていますが大して違いはありません。
サンプルプログラムのダウンロード
ここのサンプルコードからソースコードをダウンロードするのですが
Renesasへのユーザ登録が必須となっていて
wgetなどの直接ダウンロード方法が不明となっています。
e2studioと同様にMacOS側でダウンロードしてscp等で転送してください。
FSP作成のためのライブラリダウンロード
ここにあります。
ダウンロードして解凍した後、e2studioのディレクトリへ保存します。
wget https://github.com/renesas/rza-fsp/releases/download/v1.2.1/RZA_FSP_Packs_v1.2.1.zip
unzip RZA_FSP_Packs_v1.2.1.zip
mv internal/ ~/.local/share/renesas/e2_studio/
e2studioの起動とビルド
以下で起動します。
~/.local/share/renesas/e2_studio/eclipse/e2studio &
アプリケーションノートの6.1 Procedure for building a development environment for Widows10 PC
あたりを見ながらビルドしてください。
Build Finished. 0 errors, 0 warnings.
と表示されればOKです。
QEMUにマシンを追加する(枠の追加)に続きます