xilinx/qemu で、 TOPPERS カーネルがどこまで動くかを確認した記録。
前提
debian:buster-slim
環境に、ツール群を一通りそろえて検証した。
起動コマンドは以下。
docker run -it "debian:buster-slim"
準備
必要なパッケージのインストール
# いつもの
apt-get update
apt-get -y upgrade
# qemu ビルドに必要なもの
apt-get install -y build-essential python libglib2.0-dev libgcrypt20-dev zlib1g-dev autoconf automake libtool bison flex libpixman-1-dev
# dtb ビルドに必要なもの
apt-get install -y git device-tree-compiler
# TOPPERS カーネルビルドに必要なもの
apt-get install -y perl ruby
# その他
apt-get install -y curl unzip
xilinx/qemu のビルド
cd /
git clone --recursive https://github.com/Xilinx/qemu.git
cd qemu
./configure --target-list="aarch64-softmmu,microblazeel-softmmu,arm-softmmu" --enable-fdt --disable-kvm --disable-xen
make
make install
devicetree のビルド
xilinx/qemu-devicetree
cd /
git clone --recursive https://github.com/Xilinx/qemu-devicetrees.git
cd qemu-devicetrees
make OUTDIR=/var/dts
Xilinx/linux-xlnx
cd /
git clone https://github.com/Xilinx/linux-xlnx.git
cd linux-xlnx
sed -i -e "s/#include/\/include\//" arch/arm/boot/dts/zynq-zybo.dts
dtc -I dts -O dtb -o /var/dts/zynq-zybo.dtb arch/arm/boot/dts/zynq-zybo.dts
cfg の配置
curl -L https://github.com/mikoto2000/cfg-1/releases/download/1.9.7.2/cfg.tar.gz -O
tar xf cfg.tar.gz -C /usr/local/bin
rm cfg.tar.gz
GNU Arm Embedded Toolchain の配置
GNU-A
Aarch32
cd /
curl -L "https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-eabi.tar.xz?revision=402e6a13-cb73-48dc-8218-ad75d6be0e01&la=en" -o gcc-arm-8.3-2019.03-x86_64-arm-eabi.tar.xz
tar xf gcc-arm-8.3-2019.03-x86_64-arm-eabi.tar.xz -C /opt/
rm gcc-arm-8.3-2019.03-x86_64-arm-eabi.tar.xz
export PATH=$PATH:/opt/gcc-arm-8.3-2019.03-x86_64-arm-eabi/bin
Aarch64
cd /
curl -L "https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64-elf.tar.xz?revision=d678fd94-0ac4-485a-8054-1fbc60622a89&la=en" -o gcc-arm-8.3-2019.03-x86_64-aarch64-elf.tar.xz
tar xf gcc-arm-8.3-2019.03-x86_64-aarch64-elf.tar.xz -C /opt/
rm gcc-arm-8.3-2019.03-x86_64-aarch64-elf.tar.xz
export PATH=$PATH:/opt/gcc-arm-8.3-2019.03-x86_64-aarch64-elf/bin
GNU-RM
cd /
curl -L "https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2019q3/RC1.1/gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2?revision=c34d758a-be0c-476e-a2de-af8c6e16a8a2?product=GNU%20Arm%20Embedded%20Toolchain,64-bit,,Linux,8-2019-q3-update" -o gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2
tar xf gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2 -C /opt/
rm gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2
export PATH=$PATH:/opt/gcc-arm-none-eabi-8-2019-q3-update/bin
確認結果
atk2-sc1-mc
Zynq UltraScale+ MPSoC Cortex-R5
1.4.2(atk2-sc1-mc_zynqmp_r5_gcc-20190620.tar.gz)(動かなかった)
QEMU での実行時にコンソールが無反応。
1.4.2(atk2-sc1-mc_zynqmp_r5_gcc-20170929.tar.gz)(動いた)
ビルド
atk2-sc1-mc_zynqmp_r5_gcc-20190620.tar.gz
だと、 QEMU での実行時にコンソールが無反応だったので atk2-sc1-mc_zynqmp_r5_gcc-20170929.tar.gz
を使用した。
cd /
curl -L https://toppers.jp/download.cgi/atk2-sc1-mc_zynqmp_r5_gcc-20170929.tar.gz -O
tar xf atk2-sc1-mc_zynqmp_r5_gcc-20170929.tar.gz
rm atk2-sc1-mc_zynqmp_r5_gcc-20170929.tar.gz
cd atk2-sc1-mc_1.4.2/
mkdir mysample
cd mysample
../configure -g /usr/local/bin/cfg -T zynqmp_r5_gcc
make GCC_TARGET=arm-none-eabi
実行
qemu-system-aarch64 -M arm-generic-fdt -nographic -serial mon:stdio -dtb /var/dts/LATEST/SINGLE_ARCH/zcu102-arm.dtb -device loader,file=./atk2-sc1-mc,cpu-num=4 -device loader,addr=0xff5e023c,data=0x80008fde,data-len=4 -device loader,addr=0xff9a000,data=0x8000218,data-len=4
ASP3
ZYBO-Z7
3.4.0(動いた)
ビルド
cd /
curl -L https://toppers.jp/download.cgi/asp3_zybo_z7_gcc-20190830.zip -O
unzip asp3_zybo_z7_gcc-20190830.zip -d /zybo_z7
rm asp3_zybo_z7_gcc-20190830.zip
cd /zebo_z7/asp_3.4.0
mkdir mysample
cd mysample
ruby ../configure.rb -T zybo_z7_gcc
make
実行
qemu-system-aarch64 -M arm-generic-fdt-7series -dtb /var/dts/zynq-zybo.dtb -serial null -serial mon:stdio -nographic -kernel ./asp
ZYBO
3.4.0(いちおう動いた)
ビルド
cd /
curl -L https://toppers.jp/download.cgi/asp3_zybo_gcc-20190325.zip -O
unzip asp3_zybo_gcc-20190325.zip
rm asp3_zybo_gcc-20190325.zip
cd asp_3.4.0
mkdir mysample
cd mysample
ruby ../configure.rb -T zybo_gcc
make
実行
以下コマンドで QEMU での動作を試した。 カーネル起動まではするが、タスクが想定通りの挙動をしない。
qemu-system-aarch64 -M xilinx-zynq-a9 -m 1024 -serial null -serial mon:stdio -nographic -kernel ./asp
TOPPERS/ASP3 Kernel Release 3.4.0 for ZYBO <Zynq-7000, Cortex-A9> (Sep 8 2019, 12:20:51)
Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
Toyohashi Univ. of Technology, JAPAN
Copyright (C) 2004-2019 by Embedded and Real-Time Systems Laboratory
Graduate School of Information Science, Nagoya Univ., JAPAN
System logging task is started.
(何も表示されない、反応しない)
以下だとロゴすら表示されない。
qemu-system-aarch64 -M arm-generic-fdt-7series -dtb /var/dts/zynq-zybo.dtb -serial null -serial mon:stdio -nographic -kernel ./asp
※ qemu-system-aarch64 -M arm-generic-fdt-7series -dtb /var/dts/zynq-zybo.dtb -serial null -serial mon:stdio -nographic -kernel ./asp
-> qemu-system-arm -M xilinx-zynq-a9 -m 1024 -serial null -serial mon:stdio -nographic -kernel ./asp
-> qemu-system-aarch64 -M arm-generic-fdt-7series -dtb /var/dts/zynq-zybo.dtb -serial null -serial mon:stdio -nographic -kernel ./asp
としたらプログラムが起動した。初期化に問題があるかも。
3.2.0(動かなかった)
ビルド
cd /
curl -L https://toppers.jp/download.cgi/asp3_zynq7000_gcc-20170726.zip -O
unzip asp3_zynq7000_gcc-20170726.zip
rm asp3_zynq7000_gcc-20170726.zip
cd asp_3.2.0
mkdir mysample
cd mysample
ruby -Ku ../configure.rb -T zynq7000_gcc
make
実行
以下コマンドで QEMU での動作を試した。 カーネル起動まではするが、タスクが想定通りの挙動をしない。
qemu-system-arm -M xilinx-zynq-a9 -m 1024 -serial null -serial mon:stdio -nographic -kernel ./asp
TOPPERS/ASP3 Kernel Release 3.4.0 for ZYBO <Zynq-7000, Cortex-A9> (Sep 8 2019, 12:20:51)
Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
Toyohashi Univ. of Technology, JAPAN
Copyright (C) 2004-2019 by Embedded and Real-Time Systems Laboratory
Graduate School of Information Science, Nagoya Univ., JAPAN
System logging task is started.
(何も表示されない、反応しない)
以下だとエラー。
qemu-system-aarch64 -M arm-generic-fdt-7series -dtb /var/dts/zynq-zybo.dtb -serial null -serial mon:stdio -nographic -kernel ./asp
TOPPERS/ASP3 Kernel Release 3.2.0 for Xilinx Zynq-7000(Cortex-A9) (Sep 8 2019, 17:42:57)
Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
Toyohashi Univ. of Technology, JAPAN
Copyright (C) 2004-2017 by Embedded and Real-Time Systems Laboratory
Graduate School of Information Science, Nagoya Univ., JAPAN
System logging task is started.
../arch/arm_gcc/common/gic_kernel_impl.c:191: Assertion `TMIN_INTPRI <= intpri && intpri <= TMAX_INTPRI' failed.
いろいろ調整が必要なようだ。
HRP3
ZYBO-Z7
3.1.0(いちおう動いた)
ビルド
cd /
curl -L https://toppers.jp/download.cgi/hrp3_zybo_z7_gcc-20190830.zip -O
unzip hrp3_zybo_z7_gcc-20190830.zip -d /zybo_z7
rm hrp3_zybo_z7_gcc-20190830.zip
cd /zybo_z7/hrp_3.1
mkdir mysample
cd mysample
ruby ../configure.rb -T zybo_z7_gcc
make
実行
以下だと何も表示されない。
qemu-system-aarch64 -M arm-generic-fdt-7series -dtb /var/dts/zynq-zybo.dtb -serial null -serial mon:stdio -nographic -kernel ./hrp
※ qemu-system-aarch64 -M arm-generic-fdt-7series -dtb /var/dts/zynq-zybo.dtb -serial null -serial mon:stdio -nographic -kernel ./hrp
-> qemu-system-arm -M xilinx-zynq-a9 -m 1024 -serial null -serial mon:stdio -nographic -kernel ./hrp
-> qemu-system-aarch64 -M arm-generic-fdt-7series -dtb /var/dts/zynq-zybo.dtb -serial null -serial mon:stdio -nographic -kernel ./hrp
としたらプログラムが起動した。初期化に問題があるかも。
ZYBO
3.1.0(いちおう動いた)
ビルド
cd /
curl -L https://toppers.jp/download.cgi/hrp3_zybo_gcc-20190325.zip -O
unzip hrp3_zybo_gcc-20190325.zip
rm hrp3_zybo_gcc-20190325.zip
cd /hrp3_3.1.0
mkdir mysample
cd mysample
ruby ../configure.rb -T zybo_gcc
make
実行
以下コマンドで QEMU での動作を試した。 カーネル起動まではするが、タスクが想定通りの挙動をしない。
qemu-system-arm -M xilinx-zynq-a9 -m 1024 -serial null -serial mon:stdio -nographic -kernel ./hrp
TOPPERS/HRP3 Kernel Release 3.1.0 for ZYBO <Zynq-7000, Cortex-A9> (Sep 8 2019, 11:18:06)
Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
Toyohashi Univ. of Technology, JAPAN
Copyright (C) 2004-2019 by Embedded and Real-Time Systems Laboratory
Graduate School of Information Science, Nagoya Univ., JAPAN
System logging task is started.
(何も表示されない、反応しない)
以下だとロゴすら表示されない。
qemu-system-aarch64 -M arm-generic-fdt-7series -dtb /var/dts/zynq-zybo.dtb -serial null -serial mon:stdio -nographic -kernel ./hrp
※ qemu-system-aarch64 -M arm-generic-fdt-7series -dtb /var/dts/zynq-zybo.dtb -serial null -serial mon:stdio -nographic -kernel ./hrp
-> qemu-system-arm -M xilinx-zynq-a9 -m 1024 -serial null -serial mon:stdio -nographic -kernel ./hrp
-> qemu-system-aarch64 -M arm-generic-fdt-7series -dtb /var/dts/zynq-zybo.dtb -serial null -serial mon:stdio -nographic -kernel ./hrp
としたらプログラムが起動した。初期化に問題があるかも。
FMP3
ZYBO-Z7
3.0.0(動かなかった)
ビルド
cd /
curl -L https://toppers.jp/download.cgi/fmp3_zybo_z7_gcc-20190830.zip -O
unzip fmp3_zybo_z7_gcc-20190830.zip -d /zybo_z7
rm fmp3_zybo_z7_gcc-20190830.zip
cd /zybo_z7/fmp_3.0
mkdir mysample
cd mysample
ruby ../configure.rb -T zybo_z7_gcc
make
make
時点で make: *** No rule to make target 'sample1.cdl', needed by 'gen/tecsgen.timestamp'. Stop.
が発生。
実行
なし。
ZYBO
3.0.0(動かなかった)
ビルド
cd /
curl -L https://toppers.jp/download.cgi/fmp3_zybo_gcc-20190331.tar.gz -O
tar xf fmp3_zybo_gcc-20190331.tar.gz
rm fmp3_zybo_gcc-20190331.tar.gz
cd /fmp3_3.0.0
mkdir mysample
cd mysample
ruby ../configure.rb -T zybo_gcc
make
make
時点で make: *** No rule to make target 'sample1.cdl', needed by 'gen/tecsgen.timestamp'. Stop.
が発生。
実行
なし。
HRMP3
ZYBO-Z7
3.0.0(動かなかった)
ビルド
cd /
curl -L https://toppers.jp/download.cgi/hrmp3_zybo_z7_gcc-20190830.zip -O
unzip hrmp3_zybo_z7_gcc-20190830.zip -d /zybo_z7
rm hrmp3_zybo_z7_gcc-20190830.zip
cd cd /zybo_z7/hrmp_3.0
mkdir mysample
cd mysample
ruby ../configure.rb -T zybo_z7_gcc
make
make
時点で make: *** No rule to make target 'sample1.cdl', needed by 'gen/tecsgen.timestamp'. Stop.
が発生。
実行
なし。
ZYBO
3.0.0(動かなかった)
ビルド
cd /
curl -L https://toppers.jp/download.cgi/hrmp3_zybo_gcc-20190329.tar.gz -O
tar xf hrmp3_zybo_gcc-20190329.tar.gz
rm hrmp3_zybo_gcc-20190329.tar.gz
cd /hrmp3_3.0.0
mkdir mysample
cd mysample
ruby ../configure.rb -T zybo_gcc
make
make
時点で make: *** No rule to make target 'sample1.cdl', needed by 'gen/tecsgen.timestamp'. Stop.
が発生。
実行
なし。
FMP
Zynq UltraScale+ MPSoC Cortex-A53 AArch64
1.4.0(動いた)
ビルド
cd /
curl -L https://toppers.jp/download.cgi/fmp_zynqmp_a53_arm64_gcc-20190125.zip -O
unzip fmp_zynqmp_a53_arm64_gcc-20190125.zip -d a53
rm fmp_zynqmp_a53_arm64_gcc-20190125.zip
cd /a53/fmp_1.4.0/
mkdir mysample
cd mysample
chmod u+x ../configure
../configure -T zynqmp_a53_arm64_gcc -g /usr/local/bin/cfg
make GCC_TARGET=aarch64-elf
実行
qemu-system-aarch64 -M arm-generic-fdt -nographic -serial mon:stdio -dtb /var/dts/LATEST/SINGLE_ARCH/zcu102-arm.dtb -device loader,file=./fmp,cpu-num=0 -device loader,addr=0xfd1a0104,data=0x8000000e,data-len=4
Zynq UltraScale+ MPSoC Cortex-A53 AArch32(未検証)
QEMU を aarch32 で起動する方法がわからなかったため未検証。
Zynq UltraScale+ MPSoC Cortex-R5
1.4.0(fmp_zynqmp_a53_arm_gcc-20190125.zip)(動かなかった)
QEMU での実行時にコンソールが無反応。
1.4.0(fmp_zynqmp_a53_arm_gcc-20180713.zip)(動いた)
ビルド
fmp_zynqmp_r5_gcc-20190125.zip
だと、 QEMU での実行時にコンソールが無反応だったので mp_zynqmp_r5_gcc-20180713.zip
を使用した。
cd /
curl -L https://toppers.jp/download.cgi/fmp_zynqmp_r5_gcc-20180713.zip -O
unzip fmp_zynqmp_r5_gcc-20180713.zip -d r5
rm fmp_zynqmp_r5_gcc-20180713.zip
cd /r5/fmp_1.4.0/
mkdir mysample
cd mysample
chmod u+x ../configure
../configure -T zynqmp_r5_gcc -g /usr/local/bin/cfg
make GCC_TARGET=arm-none-eabi ENABLE_G_SYSLOG=true
実行
qemu-system-aarch64 -M arm-generic-fdt -nographic -serial null -serial mon:stdio -dtb /var/dts/LATEST/SINGLE_ARCH/zcu102-arm.dtb -device loader,file=./fmp,cpu-num=4 -device loader,addr=0xff5e023c,data=0x80008fde,data-len=4 -device loader,addr=0xff9a000,data=0x8000218,data-len=4
まとめに代えて
まとまらん...。
動かなかったものの大半が、 qemu の仕組み・使い方の問題の気がするので、もうちょっとドキュメント読み込んでいかないといけなさそう。
0 件のコメント:
コメントを投稿