読者です 読者をやめる 読者になる 読者になる

FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

ZedBoard向けFreeBSDのビルド試行

ZedBoard

https://www.freebsd.org/logo/logo-full-thumb.png

ZedBoard向けにFreeBSDをビルドすることができるらしい。つまり、ZynqのARM用にFreeBSDをビルドすることができるということか。

これまでいろいろ試行していたのは、RISC-V向けのFreeBSDのビルドだ。だが、FreeBSDをZynqのARMで動作させることができれば、これも面白いかもしれない。

FreeBSD/arm/Zedboard - FreeBSD Wiki

ZedBoard向けのFreeBSDビルド

とりあえずまずはgithubからFreeBSDのソースをチェックアウトしてきた。

github.com

git clone https://github.com/freebsd/freebsd.git

そのまま、ビルドする。

make TARGET_ARCH=armv6 KERNCONF=ZEDBOARD buildworld buildkernel

およそ3時間程度、やっとビルドが終了した。今日はここで時間切れ...

ctfconvert -L VERSION -g zlib.o
ld -d -warn-common -r -d -o zlib.kld zlib.o
ctfmerge -L VERSION -g -o zlib.kld zlib.o
:> export_syms
awk -f /home/vagrant/freebsd/sys/conf/kmod_syms.awk zlib.kld  export_syms | xargs -J% objcopy % zlib.kld
ld -Bshareable -d -warn-common -o zlib.ko.full zlib.kld
objcopy --only-keep-debug zlib.ko.full zlib.ko.debug
objcopy --strip-debug --add-gnu-debuglink=zlib.ko.debug  zlib.ko.full zlib.ko
--------------------------------------------------------------
>>> Kernel build for ZEDBOARD completed on Thu Nov  3 14:36:50 UTC 2016
--------------------------------------------------------------

u-boot.img と boot.bin のビルド

解説に書いてあるとおり、最初にXilinxのu-bootのリポジトリをダウンロードして、いくつか書き換える必要がある。

git clone https://github.com/Xilinx/u-boot-xlnx.git
curl https://raw.githubusercontent.com/Xilinx/embeddedsw/master/lib/sw_apps/zynq_fsbl/misc/zed/ps7_init.c -o u-boot-xlnx/board/xilinx/zynq/ps7_init.c
curl https://raw.githubusercontent.com/Xilinx/embeddedsw/master/lib/sw_apps/zynq_fsbl/misc/zed/ps7_init.h -o u-boot-xlnx/board/xilinx/zynq/ps7_init.h
sudo pkg install -y arm-none-eabi-binutils-2.27_4,1 arm-none-eabi-gcc-5.3.0_1 arm-none-eabi-gdb-7.10_4
gmake CROSS_COMPILE=arm-none-eabi- distclean
gmake CROSS_COMPILE=arm-none-eabi- zynq_zed_config
gmake CROSS_COMPILE=arm-none-eabi- HOSTCC=cc

で、ここから先?Building ubldr のところから、ディレクトリも無いしmakeもうまく行かないので詰まってしまった。

FreeBSDの慣習に慣れていないからかしら?良く分からない。