How to use our stock armv7-RPI2 images with QEMU?
Mark Millard
markmi at dsl-only.net
Mon Dec 25 00:11:00 UTC 2017
Alexey Dokuchaev danfe at nsu.ru wrote on
Sun Dec 24 10:27:24 UTC 2017 :
> Hmm, where does one get u-boot.bin file? I don't see it in the FreeBSD
> RPi2 image anywhere (expected to find under /boot).
In order to see how official RPI2 is put together
for a release:
# more /usr/src/release/arm/RPI2.conf
#!/bin/sh
#
# $FreeBSD: head/release/arm/RPI2.conf 325950 2017-11-17 17:36:45Z gjb $
#
EMBEDDED_TARGET_ARCH="armv7"
EMBEDDED_TARGET="arm"
EMBEDDEDBUILD=1
EMBEDDEDPORTS="sysutils/u-boot-rpi2 sysutils/rpi-firmware"
FAT_SIZE="50m"
FAT_TYPE="16"
IMAGE_SIZE="3072M"
KERNEL="GENERIC"
MD_ARGS="-x 63 -y 255"
NODOC=1
PART_SCHEME="MBR"
export BOARDNAME="RPI2"
arm_install_uboot() {
UBOOT_DIR="/usr/local/share/u-boot/u-boot-rpi2"
RPI_FIRMWARE_DIR="/usr/local/share/rpi-firmware"
UBOOT_FILES="u-boot.bin"
RPI_FIRMWARE_FILES="bootcode.bin config.txt \
fixup.dat fixup_cd.dat fixup_db.dat fixup_x.dat \
start.elf start_cd.elf start_db.elf start_x.elf"
FATMOUNT="${DESTDIR%${KERNEL}}/fat"
UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
for _UF in ${UBOOT_FILES}; do
chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/${_UF} \
${FATMOUNT}/${_UF}
done
for _UF in ${RPI_FIRMWARE_FILES}; do
chroot ${CHROOTDIR} cp -p ${RPI_FIRMWARE_DIR}/${_UF} \
${FATMOUNT}/${_UF}
done
chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/ubldr.bin \
${FATMOUNT}/ubldr.bin
chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/dtb/rpi2.dtb \
${FATMOUNT}/rpi2.dtb
chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
sync
umount_loop ${CHROOTDIR}/${FATMOUNT}
umount_loop ${CHROOTDIR}/${UFSMOUNT}
chroot ${CHROOTDIR} rmdir ${FATMOUNT}
chroot ${CHROOTDIR} rmdir ${UFSMOUNT}
return 0
}
So installing the port sysutils/u-boot-rpi2
provides:
/usr/local/share/u-boot/u-boot-rpi2/u-boot.bin
that is then copied to the msdosfs file system.
There are also files from the port
sysutils/rpi-firmware in :
/usr/local/share/rpi-firmware/
that are copied over.
I will warn that when I look at the console
record on the rpi2 that I use it shows:
Booting [/boot/kernel/kernel]...
/boot/dtb/bcm2836-rpi-2-b.dtb size=0x346b
Loaded DTB from file 'bcm2836-rpi-2-b.dtb'.
This is different than the rpi2.dtb put on the
msdosfs in the script. The
/boot/dtb/bcm2836-rpi-2-b.dtb
is what the FreeBSD kernel uses in my context.
The
/boot/dtb/rpi2.dtb
copied to the msdosfs as rpi2.dtb may be for u-boot.
/boot/ubldr.bin is copied to the msdosfs as
well.
===
Mark Millard
markmi at dsl-only.net
More information about the freebsd-arm
mailing list