前回までで、FSBLを作ったので、今度はBOOT.binを作ってSDカードに入れる。
前回はまだやっていなかったので、u-bootを作成しておく。 fpga_zynq/zedboard/ で、
make arm-uboot
とタイプして、u-bootを作る。(何でもmakeするだけで作成されてしまう。勉強にはならないな...)
SDKの[Xilinx Tools]-->[Create Zynq Boot Image]を選択して、必要なものを突っ込んでいこう。
上記のURLが示すように、まずは fpga_zynq/zedboard/deliver_output というディレクトリを作り、そこにSDカードに流し込むものを足していく。 まずは、output.bif を作成する必要があるらしい。
ここに、3つのファイル
- FSBL.elf
- rocketchip_wrapper.bit
- u-boot.elf
を登録して、BOOT.bin を作成した。
[Create]をクリックすると、BOOT.binを作成した。作成先はdeliver_outputだ。 ※ ちなみに、u-boot.elf を挿入し忘れてブートできずに小一時間悩んだ!もったいない!
なんかこんなプログラムを実行している。これが噂に聞くbootgenか!
bootgen -image output.bif -o /home/masayuki/riscv-hw/rocket-chip/fpga-zynq/zedboard/deliver_output/BOOT.bin
ディレクトリを見ると、まだこんな感じだ。
$ ls -lt 合計 4044 -rw-rw-r-- 1 masayuki masayuki 4133440 2月 23 22:55 BOOT.bin -rw-rw-r-- 1 masayuki masayuki 281 2月 23 22:55 output.bif
じゃあ次は、Linuxをダウンロードしてビルドしよう。
これは、Cortex-A9向けのLinuxだ。まずはこれがCortex-A9上で動作して、Linuxが立ち上がる。それからフロントエンドを立ち上げて、PL上のRocket-Coreを動かすという寸法だ。
make arm-linux # ダウンロードが始まってビルドされる。 make arm-dtb
cd deliver_output/ $ ls -lt 合計 7376 -rw-rw-r-- 1 masayuki masayuki 9243 2月 23 23:26 devicetree.dtb -rw-rw-r-- 1 masayuki masayuki 3395816 2月 23 23:22 uImage -rw-rw-r-- 1 masayuki masayuki 4133440 2月 23 22:55 BOOT.bin -rw-rw-r-- 1 masayuki masayuki 281 2月 23 22:55 output.bif
ついでに、BOOT.binが説明ではboot.binになっているので、怖いので変えておく (関係ないって説明に書いてあるのに!)
$ ls -lt 合計 7376 -rw-rw-r-- 1 masayuki masayuki 9243 2月 23 23:26 devicetree.dtb -rw-rw-r-- 1 masayuki masayuki 3395816 2月 23 23:22 uImage -rw-rw-r-- 1 masayuki masayuki 4133440 2月 23 22:55 boot.bin -rw-rw-r-- 1 masayuki masayuki 281 2月 23 22:55 output.bif
さらにramdiskを用意する。これも前回ビルドにチャレンジした気がするが、失敗したので、今回はリポジトリからそのまま引っ張ってくる。
$ make fetch-ramdisk mkdir -p deliver_output curl https://s3-us-west-1.amazonaws.com/riscv.org/fpga-zynq-files/uramdisk.image.gz > deliver_output/uramdisk.image.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 5845k 100 5845k 0 0 724k 0 0:00:08 0:00:08 --:--:-- 1217k $ ls -lt deliver_output/ 合計 13224 -rw-rw-r-- 1 masayuki masayuki 5985405 2月 23 23:28 uramdisk.image.gz -rw-rw-r-- 1 masayuki masayuki 9243 2月 23 23:26 devicetree.dtb -rw-rw-r-- 1 masayuki masayuki 3395816 2月 23 23:22 uImage -rw-rw-r-- 1 masayuki masayuki 4133440 2月 23 22:55 boot.bin -rw-rw-r-- 1 masayuki masayuki 281 2月 23 22:55 output.bif
大分いろいろ追加された。