TOPPERS/ATK2 を、 Debian 上の Xilinx/qemu で動かしたので手順を記録する。
環境
- OS: Windows 10 Pro
- Docker: Docker version 18.09.2, build 6247962
- debian/buster-slim コンテナを使用
- ATK2: atk2-sc1-mc_zynqmp_r5_gcc-20170929.tar.gz(Zynq UltraScale+ MPSoC Cortex-R5 用)
- cfg: TOPPERS/cfg を Linux 64bit 対応したものを使用
ATK2 に必要なファイルのダウンロード
ATK2 ソース
TOPPERS/ATK2 の簡易パッケージダウンロードページから atk2-sc1-mc_zynqmp_r5_gcc-20170929.tar.gz
をダウンロードし、任意の場所に展開する。
cfg
64bit Linux 対応版(最適化無効) から cfg をダウンロードし、 atk2-sc1-mc_1.4.2/cfg/cfg/cfg
という配置になるように展開する。
環境構築
Docker コンテナの起動
展開した atk2-sc1 のディレクトリをマウントしつつ、 Docker コンテナを起動。
docker run -it -v "/PATH/TO/atk2-sc1-mc_1.4.2:/atk2-sc1-mc" --workdir /work debian/buster-slim
以降はこのコンテナ内で作業を行う。
必要なパッケージのインストール
下記作業を行うので、それに必要なパッケージをインストールする。
- git リポジトリクローン
- qemu ビルド
- qemu の dtb ビルド
- ATK2 のビルド
# いつもの
apt-get update
apt-get upgrade
# git
apt-get install git
# qemu ビルド
apt-get install build-essential python libglib2.0-dev libgcrypt20-dev zlib1g-dev autoconf automake libtool bison flex libpixman-1-dev
# dtb ビルド
apt-get install device-tree-compiler
# ATK2 ビルド
apt-get install gcc-arm-none-eabi
Xilinx/qemu の入手とビルド・インストール
git clone --recursive https://github.com/Xilinx/qemu.git
cd qemu
./configure --target-list="aarch64-softmmu,microblazeel-softmmu" --enable-fdt --disable-kvm --disable-xen
make
make install
Xilinx/qemu-devicetree の入手とビルド
git clone --recursive https://github.com/Xilinx/qemu-devicetrees.git
cd qemu-devicetrees
make OUTDIR=/tmp/dts
TOPPERS/ATK2 のビルド
cd /atk2-sc1-mc
mkdir mysample
cd mysample
../configure -T zynqmp_r5_gcc
make GCC_TARGET=arm-none-eabi
動作確認
Xilinx Quick Emulator User Guide の Table 3-7:Cortex-R5 Registers and Command に、 R5 で動かすための設定例が書いてある。 それを利用して QEMU を起動。
qemu-system-aarch64 -M arm-generic-fdt -nographic -serial mon:stdio -dtb /tmp/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
オーディオの初期化に失敗するようだが、とりあえずシリアル出力はできている。
audio: Could not init `oss' audio driver
TOPPERS/ATK2-SC1-MC Release 1.4.2 for ZYNQMP_R5 (Mar 2 2019, 14:12:32)
StartupHook @ core0
activate MainTask! @ core0
Input Command:
1
Input Command:
a
Call ActivateTask(Task1)
RaiseInterCoreInterrupt before
/***********************/
Coer0_ICI_1 run!
Coer0_ICI_1 GetISRID() = 4
Coer0_ICI_1 GetApplicationID() = 0
RaiseInterCoreInterrupt finish
Task1 ACTIVATE
Input Command:
Docker イメージ
Xilinx/qemu の Docker イメージを作った。
今回作った環境とは構成が異なるので注意。
- gcc-arm-none-eabi 未インストール
- dts の格納場所を、
/tmp
から/var
に変更
以上。
0 件のコメント:
コメントを投稿