aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/flash-pru.sh
blob: c0fee3e550fcee6bc01390a9435be4abfc25ebd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash
# This script installs the PRU firmware on a beaglebone machine.

if [ "$EUID" -ne 0 ]; then
    echo "This script must be run as root"
    exit -1
fi
set -e

# Install new firmware
echo "Installing firmware to /lib/firmware/"
cp out/pru0.elf /lib/firmware/am335x-pru0-fw
cp out/pru1.elf /lib/firmware/am335x-pru1-fw
sync

# Shutdown existing Klipper instance (if applicable). The goal is to
# put the GPIO pins in a safe state.
if [ -c /dev/rpmsg_pru30 ]; then
    echo "Attempting to shutdown existing firmware..."
    ( echo "FORCE_SHUTDOWN" > /dev/rpmsg_pru30 ) 2> /dev/null || ( echo "Firmware busy! Please shutdown Klipper and then retry." && exit 1 )
    sleep 1
    ( echo "FORCE_SHUTDOWN" > /dev/rpmsg_pru30 ) 2> /dev/null || ( echo "Firmware busy! Please shutdown Klipper and then retry." && exit 1 )
    sleep 1
fi
set +e

# Restart the PRU
echo "Restarting pru_rproc module"
rmmod -f pru_rproc
modprobe pru_rproc