LoginSignup
0
1

QEMUにマシンを追加する(事前準備編)

Last updated at Posted at 2023-05-08

はじめに

qemuのバージョンは記載時の最新であるv8.0.50を使用しました。
作成したのはarm互換マシンになります。

今回参考にしたのはRenesasのRZ/A3ULになります。

理由は以下です

試した環境は以下です。

  • 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にマシンを追加する(枠の追加)に続きます

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1