muir-fpga · booting
How a board
comes up.
Four sequences, two for the Arty Z7-20 and two for the DE25-Nano: from the board’s own card, which is how anybody else’s board boots, and with TFTP, which is how this project’s own boards boot while they are being worked on.
The Arty Z7-20 is a Zynq-7000 board, and its two sequences are the first two below.
The DE25-Nano has a pair of its own, because it boots differently enough to need one. Its boot crosses two storage devices rather than one, and its fabric is configured in the middle of the sequence rather than by the loader’s first stage.
On either board the two paths differ only in where the files come from. The loader itself is read the same way on both, and the same last step ends both.
The Kria KR260 boots by its own loader, in its flash, which this project leaves alone: it reads the card, which it sees as a USB disk, or a server on the network, and loads Linux and then the bitstream from there (its page).
01 / A ZYNQ-7000 BOARD, FROM ITS CARD
A Zynq-7000 board
on its own.
This is how a board boots for anybody who is not this project: the loader, the CADR’s bitstream, Linux with its root filesystem, and the disk packs are all on the microSD card.
The card’s one partition. The four files the loader reads next sit in a folder named for the board, as they do on the server:
BOOT.BIN fixed name the boot ROM reads it here and nowhere else u-boot.img fixed name the first stage asks for it by this name uEnv.txt fixed name imported before any board name is known <board>/ cadr.bit, the tree, zImage, rootfs.cpio.uboot
Everything the board needs is on its card. No network is used and none is needed.
02 / A ZYNQ-7000 BOARD, FOR DEVELOPMENT
A Zynq-7000 board
with TFTP.
This project’s own boards take the same five files from a TFTP server instead.
A change to any of the board’s five files is a copy on the server and a reset. Its card is never rewritten.
The card’s uEnv.txt decides between the two paths, by whether it names a server, and one U-Boot environment carries both. Each board’s five files sit in a directory named for the board, and the network path never falls back to the card’s own copies.
bootz.03 / THE DE25-NANO, FROM ITS CARD
The DE25-Nano
on its own.
This board takes the same two paths as the Arty Z7-20, and reaches them differently. There is no BOOT.BIN, because the first-stage loader is in the QSPI flash; and the fabric is empty until U-Boot fills it.
The card’s one partition. Two names are not this project’s to move, and the rest sit in a folder named for the board:
u-boot.itb fixed name the first stage asks for it by this name uEnv.txt fixed name imported before any board name is known de25-nano/ cadr.core.rbf, the tree, Image, rootfs.cpio.uboot
The board’s first phase is in the flash and everything after it is on the card. Its fabric is filled by the loader, not before it.
04 / THE DE25-NANO, FOR DEVELOPMENT
The DE25-Nano
with TFTP.
A change to any of the five served files is then a copy and a reset, and the card is never rewritten. This path has run on the board: 48,691,884 bytes over the network, and 28 seconds from the reset to the login prompt, against 25 off the card.
The board’s flash and card still carry its loader. Only the five files after it come from the server.
The first-stage loader is in the QSPI flash, and it asks for u-boot.itb by that name at the root of the card, so neither of them comes from the server: the first stage reads the card, and it is U-Boot that speaks TFTP here. uEnv.txt is read off the card on this path too, and it is the file that chose the path. The four steps of the fabric’s turn are the card path’s own, and only the fetch before them changes.
booti.