Compare commits

..

3 Commits

Author SHA1 Message Date
Robert Nelson 6f6191b67d ci: generate image.yml.txt for bb-imager
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
4 weeks ago
Robert Nelson 0be36b84b4 Merge branch 'v6.6-gateware-scripts' into 'main'
rootfs: Update gateware scripts to support kernel 6.6 and later.

See merge request beaglev-fire/BeagleV-Fire-ubuntu!9
4 weeks ago
vauban353 2eb3784162 rootfs: Update gateware scripts to support kernel 6.6 and later. 4 weeks ago

@ -31,10 +31,10 @@ build-v6.6-debian-13-riscv64:
- ./05_generate_payload.bin.sh
- ./06_generate_debian_console_root.sh
- ./07_create_sdcard_img.sh
- xz -vT8 deploy/images/sdcard.img
- tree -s deploy/
- cp -v deploy/images/sdcard.img.xz ./deploy/
- cp -v deploy/images/sdcard.bmap ./deploy/
- cp -v deploy/images/image.yml.txt ./deploy/
artifacts:
when: on_success
expire_in: 4 week
@ -43,6 +43,7 @@ build-v6.6-debian-13-riscv64:
- "deploy/sdcard.img.xz"
- "deploy/sdcard.bmap"
- "deploy/readme.md"
- "deploy/image.yml.txt"
build-v6.6-ubuntu-2404-riscv64:
image: robertcnelson/beagle-devscripts-kernel-debian-12-amd64:latest
@ -70,10 +71,10 @@ build-v6.6-ubuntu-2404-riscv64:
- ./05_generate_payload.bin.sh
- ./06_generate_ubuntu_console_root.sh
- ./07_create_sdcard_img.sh
- xz -vT8 deploy/images/sdcard.img
- tree -s deploy/
- cp -v deploy/images/sdcard.img.xz ./deploy/
- cp -v deploy/images/sdcard.bmap ./deploy/
- cp -v deploy/images/image.yml.txt ./deploy/
artifacts:
when: on_success
expire_in: 4 week
@ -82,3 +83,4 @@ build-v6.6-ubuntu-2404-riscv64:
- "deploy/sdcard.img.xz"
- "deploy/sdcard.bmap"
- "deploy/readme.md"
- "deploy/image.yml.txt"

@ -30,6 +30,12 @@ if [ ! -f ./images/sdcard.img ]; then
exit 2
fi
extract_size=$(du -b ./images/sdcard.img | awk '{print $1}')
echo " extract_size: ${extract_size}" > ./images/image.yml.txt
extract_sha256=$(sha256sum ./images/sdcard.img | awk '{print $1}')
echo " extract_sha256: ${extract_sha256}" >> ./images/image.yml.txt
if [ -f /usr/bin/bmaptool ] ; then
if [ -f ./images/sdcard.bmap ] ; then
rm -rf ./images/sdcard.bmap || true
@ -37,4 +43,22 @@ if [ -f /usr/bin/bmaptool ] ; then
/usr/bin/bmaptool -d create -o ./images/sdcard.bmap ./images/sdcard.img
fi
xz -T0 -z ./images/sdcard.img
if [ ! -f ./images/sdcard.img.xz ]; then
echo "Error: ./images/sdcard.img.xz was not generated"
exit 2
fi
image_download_size=$(du -b ./images/sdcard.img.xz | awk '{print $1}')
echo " image_download_size: ${image_download_size}" >> ./images/image.yml.txt
image_download_sha256=$(sha256sum ./images/sdcard.img.xz | awk '{print $1}')
echo " image_download_sha256: ${image_download_sha256}" >> ./images/image.yml.txt
TIME=$(date +%Y-%m-%d)
echo " release_date: '${TIME}'" >> ./images/image.yml.txt
echo " init_format: sysconf" >> ./images/image.yml.txt
#

@ -1,5 +1,9 @@
#!/bin/bash
kernel_version=$(uname -r)
kernel_major_minor=$(echo "$kernel_version" | cut -d '.' -f 1,2)
if ! id | grep -q root; then
echo "must be run as root"
exit
@ -8,19 +12,18 @@ fi
if [ -d $1 ]
then
echo "Changing gateware."
if [ -e $1/mpfs_bitstream.spi ]
then
if [ -e $1/mpfs_dtbo.spi ]
if [ -e $1/LinuxProgramming/mpfs_bitstream.spi ]
then
cp -v $1/mpfs_dtbo.spi /lib/firmware/mpfs_dtbo.spi
cp -v $1/mpfs_bitstream.spi /lib/firmware/mpfs_bitstream.spi
if [ "$kernel_major_minor" == "6.1" ]; then
cp -v $1/LinuxProgramming/mpfs_dtbo.spi /lib/firmware/mpfs_dtbo.spi
cp -v $1/LinuxProgramming/mpfs_bitstream.spi /lib/firmware/mpfs_bitstream.spi
sync
. /etc/microchip/update-gateware.sh
source /usr/share/microchip/gateware/update-gateware-6-1.sh $1/LinuxProgramming
else
echo "No device tree overlay file found."
source /usr/share/microchip/gateware/update-gateware.sh $1/LinuxProgramming
fi
else
echo "No gateware file found."
echo "No xxx gateware file found."
fi
else
echo "No directory found for this requested gateware."

@ -0,0 +1,49 @@
#!/bin/bash
echo "================================================================================"
echo "| FPGA Gateware Update |"
echo "| |"
echo "| Please ensure that the mpfs_bitstream.spi file containing the gateware |"
echo "| update has been copied to directory /lib/firmware. |"
echo "| |"
echo "| !!! This will take a couple of minutes. !!! |"
echo "| |"
echo "| Give the system a few minutes to reboot itself |"
echo "| after Linux has shutdown. |"
echo "| |"
echo "================================================================================"
if [ ! -f /usr/sbin/mtd_debug ] ; then
echo "Install mtd-utils package"
exit 2
fi
if [ ! -f /lib/firmware/mpfs_bitstream.spi ] ; then
exit 2
fi
#read -rsp $'Press any key to continue...\n' -n1 key
if [ ! -f /sys/kernel/debug/fpga/microchip_exec_update ] ; then
/usr/bin/mount -t debugfs none /sys/kernel/debug
fi
# Trash exisitng device tree overlay in case the rest of the process fails:
/usr/sbin/mtd_debug erase /dev/mtd0 0x0 0x10000
# Write device tree overlay
dtbo_ls=$(ls -l /lib/firmware/mpfs_dtbo.spi)
dtbo_size=$(echo $dtbo_ls | cut -d " " -f 5)
echo "Writing mpfs_dtbo.spi to /dev/mtd0"
/usr/sbin/mtd_debug write /dev/mtd0 0x400 $dtbo_size /lib/firmware/mpfs_dtbo.spi > /dev/zero
# Fake the presence of a golden image for now.
/usr/sbin/mtd_debug write /dev/mtd0 0 4 /dev/zero > /dev/zero
# Initiate FPGA update.
echo "Triggering FPGA Gateware Update (/sys/kernel/debug/fpga/microchip_exec_update)"
echo 1 > /sys/kernel/debug/fpga/microchip_exec_update
# Reboot Linux for the gateware update to take effect.
# FPGA reprogramming takes places between Linux shut-down and HSS restarting the board.
/usr/sbin/reboot

@ -1,49 +1,66 @@
#!/bin/bash
echo "================================================================================"
echo "| FPGA Gateware Update |"
echo "| |"
echo "| Please ensure that the mpfs_bitstream.spi file containing the gateware |"
echo "| update has been copied to directory /lib/firmware. |"
echo "| |"
echo "| !!! This will take a couple of minutes. !!! |"
echo "| |"
echo "| Give the system a few minutes to reboot itself |"
echo "| after Linux has shutdown. |"
echo "| |"
echo "================================================================================"
if [ ! -f /usr/sbin/mtd_debug ] ; then
echo "Install mtd-utils package"
exit 2
fi
#!/bin/sh
if [ ! -f /lib/firmware/mpfs_bitstream.spi ] ; then
exit 2
if [ $# -eq 0 ]; then
echo "No gateware location provided. Checking default location."
if [ ! -e /lib/firmware/mpfs_bitstream.spi ]; then
echo "No gateware file found."
exit 1
fi
else
echo "Gateware location provided: $1"
if [ ! -e "$1"/mpfs_bitstream.spi ]; then
echo "No gateware file found."
exit 1
else
if [ ! -d /lib/firmware ]; then
mkdir /lib/firmware
fi
cp "$1"/mpfs_dtbo.spi /lib/firmware/mpfs_dtbo.spi
cp "$1"/mpfs_bitstream.spi /lib/firmware/mpfs_bitstream.spi
fi
fi
#read -rsp $'Press any key to continue...\n' -n1 key
if [ ! -f /sys/kernel/debug/fpga/microchip_exec_update ] ; then
/usr/bin/mount -t debugfs none /sys/kernel/debug
fi
# Trash existing device tree overlay in case the rest of the process fails:
flash_erase /dev/mtd0 0 16
# Trash exisitng device tree overlay in case the rest of the process fails:
/usr/sbin/mtd_debug erase /dev/mtd0 0x0 0x10000
# Initiate FPGA update for dtbo
echo 1 > /sys/class/firmware/mpfs-auto-update/loading
# Write device tree overlay
dtbo_ls=$(ls -l /lib/firmware/mpfs_dtbo.spi)
dtbo_size=$(echo $dtbo_ls | cut -d " " -f 5)
cat /lib/firmware/mpfs_dtbo.spi > /sys/class/firmware/mpfs-auto-update/data
# Signal completion for dtbo load
echo 0 > /sys/class/firmware/mpfs-auto-update/loading
echo "Writing mpfs_dtbo.spi to /dev/mtd0"
/usr/sbin/mtd_debug write /dev/mtd0 0x400 $dtbo_size /lib/firmware/mpfs_dtbo.spi > /dev/zero
while [ "$(cat /sys/class/firmware/mpfs-auto-update/status)" != "idle" ]; do
# Do nothing, just keep checking
sleep 1
done
# Fake the presence of a golden image for now.
/usr/sbin/mtd_debug write /dev/mtd0 0 4 /dev/zero > /dev/zero
dd if=/dev/zero of=/dev/mtd0 count=1 bs=4
# Initiate FPGA update.
echo "Triggering FPGA Gateware Update (/sys/kernel/debug/fpga/microchip_exec_update)"
echo 1 > /sys/kernel/debug/fpga/microchip_exec_update
# Initiate FPGA update for bitstream
echo 1 > /sys/class/firmware/mpfs-auto-update/loading
# Reboot Linux for the gateware update to take effect.
# FPGA reprogramming takes places between Linux shut-down and HSS restarting the board.
/usr/sbin/reboot
# Write the firmware image to the data sysfs file
cat /lib/firmware/mpfs_bitstream.spi > /sys/class/firmware/mpfs-auto-update/data
# Signal completion for bitstream load
echo 0 > /sys/class/firmware/mpfs-auto-update/loading
while [ "$(cat /sys/class/firmware/mpfs-auto-update/status)" != "idle" ]; do
# Do nothing, just keep checking
sleep 1
done
# When the status is 'idle' and no error has occured, reboot the system for
# the gateware update to take effect. FPGA reprogramming takes places between
# Linux shut-down and HSS restarting the board.
if [ "$(cat /sys/class/firmware/mpfs-auto-update/error)" = "" ]; then
echo "FPGA update ready. Rebooting."
reboot
else
echo "FPGA update failed with status: $(cat /sys/class/firmware/mpfs-auto-update/error)"
exit 1
fi

Loading…
Cancel
Save