mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-07-24 23:24:01 -06:00
pru: Update installation and flash scripts
Update the scripts used to install and "flash" the pru micro-controller code. Also, add a "flash" script for the linux micro-controller code. This makes it easier to install Klipper on a Beaglebone board that uses a Replicape. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
16d2ec3a90
commit
5a85c1667a
5 changed files with 126 additions and 29 deletions
|
@ -14,23 +14,98 @@
|
|||
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
DESC="klipper_pru startup"
|
||||
NAME="klipper_pru"
|
||||
KLIPPER_HOST_MCU=/usr/local/bin/klipper_mcu
|
||||
KLIPPER_HOST_ARGS="-w -r"
|
||||
PIDFILE=/var/run/klipper_mcu.pid
|
||||
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
pru_stop()
|
||||
{
|
||||
# Shutdown existing Klipper instance (if applicable). The goal is to
|
||||
# put the GPIO pins in a safe state.
|
||||
if [ -c /dev/rpmsg_pru30 ]; then
|
||||
log_daemon_msg "Attempting to shutdown PRU..."
|
||||
set -e
|
||||
( echo "FORCE_SHUTDOWN" > /dev/rpmsg_pru30 ) 2> /dev/null || ( log_action_msg "Firmware busy! Please shutdown Klipper and then retry." && exit 1 )
|
||||
sleep 1
|
||||
( echo "FORCE_SHUTDOWN" > /dev/rpmsg_pru30 ) 2> /dev/null || ( log_action_msg "Firmware busy! Please shutdown Klipper and then retry." && exit 1 )
|
||||
sleep 1
|
||||
set +e
|
||||
fi
|
||||
|
||||
log_daemon_msg "Stopping pru"
|
||||
echo 4a334000.pru0 > /sys/bus/platform/drivers/pru-rproc/unbind
|
||||
echo 4a338000.pru1 > /sys/bus/platform/drivers/pru-rproc/unbind
|
||||
}
|
||||
|
||||
pru_start()
|
||||
{
|
||||
if [ -c /dev/rpmsg_pru30 ]; then
|
||||
pru_stop
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
log_daemon_msg "Starting pru"
|
||||
echo 4a334000.pru0 > /sys/bus/platform/drivers/pru-rproc/bind
|
||||
echo 4a338000.pru1 > /sys/bus/platform/drivers/pru-rproc/bind
|
||||
}
|
||||
|
||||
mcu_host_stop()
|
||||
{
|
||||
# Shutdown existing Klipper instance (if applicable). The goal is to
|
||||
# put the GPIO pins in a safe state.
|
||||
if [ -c /tmp/klipper_host_mcu ]; then
|
||||
log_daemon_msg "Attempting to shutdown host mcu..."
|
||||
set -e
|
||||
( echo "FORCE_SHUTDOWN" > /tmp/klipper_host_mcu ) 2> /dev/null || ( log_action_msg "Firmware busy! Please shutdown Klipper and then retry." && exit 1 )
|
||||
sleep 1
|
||||
( echo "FORCE_SHUTDOWN" > /tmp/klipper_host_mcu ) 2> /dev/null || ( log_action_msg "Firmware busy! Please shutdown Klipper and then retry." && exit 1 )
|
||||
sleep 1
|
||||
set +e
|
||||
fi
|
||||
|
||||
log_daemon_msg "Stopping klipper host mcu" $NAME
|
||||
killproc -p $PIDFILE $KLIPPER_HOST_MCU
|
||||
}
|
||||
|
||||
mcu_host_start()
|
||||
{
|
||||
[ -x $KLIPPER_HOST_MCU ] || return
|
||||
|
||||
if [ -c /tmp/klipper_host_mcu ]; then
|
||||
mcu_host_stop
|
||||
fi
|
||||
|
||||
log_daemon_msg "Starting klipper MCU" $NAME
|
||||
start-stop-daemon --start --quiet --exec $KLIPPER_HOST_MCU \
|
||||
--background --pidfile $PIDFILE --make-pidfile \
|
||||
-- $KLIPPER_HOST_ARGS
|
||||
log_end_msg $?
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start) log_daemon_msg "Starting klipper_pru" $NAME
|
||||
# Enable ADC module
|
||||
echo 'BB-ADC' > /sys/devices/platform/bone_capemgr/slots
|
||||
# Start PRU firmware
|
||||
if [ ! -c /dev/rpmsg_pru30 ]; then
|
||||
rmmod -f pru_rproc
|
||||
modprobe pru_rproc
|
||||
fi
|
||||
;;
|
||||
stop|restart|reload|force-reload|status)
|
||||
;;
|
||||
*) log_action_msg "Usage: /etc/init.d/klipper_pru {start|stop|status|restart|reload|force-reload}"
|
||||
exit 2
|
||||
;;
|
||||
start)
|
||||
pru_start
|
||||
mcu_host_start
|
||||
;;
|
||||
stop)
|
||||
pru_stop
|
||||
mcu_host_stop
|
||||
;;
|
||||
restart)
|
||||
$0 stop
|
||||
$0 start
|
||||
;;
|
||||
reload|force-reload)
|
||||
log_daemon_msg "Reloading configuration not supported" $NAME
|
||||
log_end_msg 1
|
||||
;;
|
||||
status)
|
||||
status_of_proc -p $PIDFILE $KLIPPER_HOST_MCU $NAME && exit 0 || exit $?
|
||||
;;
|
||||
*) log_action_msg "Usage: /etc/init.d/klipper {start|stop|status|restart|reload|force-reload}"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
exit 0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue