pru: Add documentation and install scripts for running on the PRU
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
b32ba3727b
commit
2d173f51b1
|
@ -0,0 +1,75 @@
|
||||||
|
# This file contains an example configuration for a Beaglebone PRU
|
||||||
|
# micro-controller attached to a CRAMPS board.
|
||||||
|
|
||||||
|
# THIS FILE HAS NOT BEEN TESTED - PROCEED WITH CAUTION!
|
||||||
|
|
||||||
|
# See the example.cfg file for a description of available parameters.
|
||||||
|
|
||||||
|
[stepper_x]
|
||||||
|
step_pin: P8_13
|
||||||
|
dir_pin: P8_12
|
||||||
|
enable_pin: !P9_14
|
||||||
|
step_distance: .0125
|
||||||
|
endstop_pin: ^P8_8
|
||||||
|
homing_speed: 50
|
||||||
|
position_endstop: 0
|
||||||
|
position_max: 200
|
||||||
|
|
||||||
|
[stepper_y]
|
||||||
|
step_pin: P8_15
|
||||||
|
dir_pin: P8_14
|
||||||
|
enable_pin: !P9_14
|
||||||
|
step_distance: .0125
|
||||||
|
endstop_pin: ^P8_10
|
||||||
|
homing_speed: 50
|
||||||
|
position_endstop: 0
|
||||||
|
position_max: 200
|
||||||
|
|
||||||
|
[stepper_z]
|
||||||
|
step_pin: P8_19
|
||||||
|
dir_pin: P8_18
|
||||||
|
enable_pin: !P9_14
|
||||||
|
step_distance: 0.00025
|
||||||
|
endstop_pin: ^P9_13
|
||||||
|
homing_speed: 5
|
||||||
|
position_endstop: 0
|
||||||
|
position_max: 200
|
||||||
|
|
||||||
|
[extruder]
|
||||||
|
step_pin: P9_16
|
||||||
|
dir_pin: P9_12
|
||||||
|
enable_pin: !P9_14
|
||||||
|
step_distance: .002
|
||||||
|
nozzle_diameter: 0.400
|
||||||
|
filament_diameter: 1.750
|
||||||
|
heater_pin: P9_15
|
||||||
|
sensor_type: EPCOS 100K B57560G104F
|
||||||
|
sensor_pin: P9_36
|
||||||
|
control: pid
|
||||||
|
pid_Kp: 22.2
|
||||||
|
pid_Ki: 1.08
|
||||||
|
pid_Kd: 114
|
||||||
|
min_temp: 0
|
||||||
|
max_temp: 250
|
||||||
|
|
||||||
|
[heater_bed]
|
||||||
|
heater_pin: P8_11
|
||||||
|
sensor_type: EPCOS 100K B57560G104F
|
||||||
|
sensor_pin: P9_33
|
||||||
|
control: watermark
|
||||||
|
min_temp: 0
|
||||||
|
max_temp: 130
|
||||||
|
|
||||||
|
[fan]
|
||||||
|
pin: P9_41
|
||||||
|
|
||||||
|
[mcu]
|
||||||
|
serial: /dev/rpmsg_30
|
||||||
|
pin_map: beaglebone
|
||||||
|
|
||||||
|
[printer]
|
||||||
|
kinematics: cartesian
|
||||||
|
max_velocity: 300
|
||||||
|
max_accel: 3000
|
||||||
|
max_z_velocity: 5
|
||||||
|
max_z_accel: 100
|
|
@ -0,0 +1,78 @@
|
||||||
|
# This file contains an example configuration for the Beaglebone PRU
|
||||||
|
# micro-controller.
|
||||||
|
|
||||||
|
# THIS FILE HAS NOT BEEN TESTED - PROCEED WITH CAUTION!
|
||||||
|
|
||||||
|
# See the example.cfg file for a description of available parameters.
|
||||||
|
|
||||||
|
[stepper_x]
|
||||||
|
step_pin: P8_17
|
||||||
|
dir_pin: P8_26
|
||||||
|
enable_pin: !P9_41
|
||||||
|
step_distance: .0125
|
||||||
|
endstop_pin: ^P9_25
|
||||||
|
homing_speed: 50
|
||||||
|
position_endstop: 0
|
||||||
|
position_max: 200
|
||||||
|
|
||||||
|
[stepper_y]
|
||||||
|
step_pin: P8_12
|
||||||
|
dir_pin: P8_19
|
||||||
|
enable_pin: !P9_41
|
||||||
|
step_distance: .0125
|
||||||
|
endstop_pin: ^P9_23
|
||||||
|
homing_speed: 50
|
||||||
|
position_endstop: 0
|
||||||
|
position_max: 200
|
||||||
|
|
||||||
|
[stepper_z]
|
||||||
|
step_pin: P8_13
|
||||||
|
dir_pin: P8_14
|
||||||
|
enable_pin: !P9_41
|
||||||
|
step_distance: 0.00025
|
||||||
|
endstop_pin: ^P9_13
|
||||||
|
homing_speed: 5
|
||||||
|
position_endstop: 0
|
||||||
|
position_max: 200
|
||||||
|
|
||||||
|
# XXX - Extruder heater hooked up to i2c mosfet
|
||||||
|
#[extruder]
|
||||||
|
#step_pin: P9_12
|
||||||
|
#dir_pin: P8_15
|
||||||
|
#enable_pin: !P9_41
|
||||||
|
#step_distance: .002
|
||||||
|
#nozzle_diameter: 0.400
|
||||||
|
#filament_diameter: 1.750
|
||||||
|
#heater_pin: ?
|
||||||
|
#sensor_type: EPCOS 100K B57560G104F
|
||||||
|
#sensor_pin: P9_39
|
||||||
|
#control: pid
|
||||||
|
#pid_Kp: 22.2
|
||||||
|
#pid_Ki: 1.08
|
||||||
|
#pid_Kd: 114
|
||||||
|
#min_temp: 0
|
||||||
|
#max_temp: 250
|
||||||
|
|
||||||
|
# XXX - Bed heater hooked up to i2c mosfet
|
||||||
|
#[heater_bed]
|
||||||
|
#heater_pin: ?
|
||||||
|
#sensor_type: EPCOS 100K B57560G104F
|
||||||
|
#sensor_pin: P9_40
|
||||||
|
#control: watermark
|
||||||
|
#min_temp: 0
|
||||||
|
#max_temp: 130
|
||||||
|
|
||||||
|
# XXX - Fan power hooked up to i2c mosfet
|
||||||
|
#[fan]
|
||||||
|
#pin: ?
|
||||||
|
|
||||||
|
[mcu]
|
||||||
|
serial: /dev/rpmsg_30
|
||||||
|
pin_map: beaglebone
|
||||||
|
|
||||||
|
[printer]
|
||||||
|
kinematics: cartesian
|
||||||
|
max_velocity: 300
|
||||||
|
max_accel: 3000
|
||||||
|
max_z_velocity: 5
|
||||||
|
max_z_accel: 100
|
|
@ -0,0 +1,79 @@
|
||||||
|
This document describes the process of running Klipper on a Beaglebone
|
||||||
|
PRU. The PRU support is experimental.
|
||||||
|
|
||||||
|
Building an OS image
|
||||||
|
====================
|
||||||
|
|
||||||
|
Start by installing the
|
||||||
|
[latest Jessie IoT](https://beagleboard.org/latest-images) image
|
||||||
|
(2017-03-19 or later). One may run the image from either a micro-SD
|
||||||
|
card or from builtin eMMC. If using the eMMC, install it to eMMC now
|
||||||
|
by following the instructions from the above link.
|
||||||
|
|
||||||
|
Then ssh into the beaglebone machine (ssh debian@beaglebone --
|
||||||
|
password is "temppwd") and install Klipper by running the following
|
||||||
|
commands:
|
||||||
|
```
|
||||||
|
git clone https://github.com/KevinOConnor/klipper
|
||||||
|
./klipper/scripts/install-beaglebone.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Install Octoprint
|
||||||
|
=================
|
||||||
|
|
||||||
|
One may then install Octoprint:
|
||||||
|
```
|
||||||
|
git clone https://github.com/foosel/OctoPrint.git
|
||||||
|
cd OctoPrint/
|
||||||
|
virtualenv venv
|
||||||
|
./venv/bin/python setup.py install
|
||||||
|
```
|
||||||
|
|
||||||
|
And setup OctoPrint to start at bootup:
|
||||||
|
```
|
||||||
|
sudo cp ~/OctoPrint/scripts/octoprint.init /etc/init.d/octoprint
|
||||||
|
sudo chmod +x /etc/init.d/octoprint
|
||||||
|
sudo cp ~/OctoPrint/scripts/octoprint.default /etc/default/octoprint
|
||||||
|
sudo update-rc.d octoprint defaults
|
||||||
|
```
|
||||||
|
|
||||||
|
It is necessary to modify OctoPrint's **/etc/default/octoprint**
|
||||||
|
configuration file. One must change the OCTOPRINT_USER user to
|
||||||
|
"debian", uncomment the BASEDIR, CONFIGFILE, and DAEMON settings and
|
||||||
|
change the references from "/home/pi/" to "/home/debian/":
|
||||||
|
```
|
||||||
|
sudo nano /etc/default/octoprint
|
||||||
|
```
|
||||||
|
|
||||||
|
Then start the Octoprint service:
|
||||||
|
```
|
||||||
|
sudo systemctl start octoprint
|
||||||
|
```
|
||||||
|
|
||||||
|
Make sure the octoprint web server is accessible - it should be at:
|
||||||
|
[http://beaglebone:5000/](http://beaglebone:5000/)
|
||||||
|
|
||||||
|
|
||||||
|
Building the micro-controller code
|
||||||
|
==================================
|
||||||
|
|
||||||
|
To compile the Klipper micro-controller code, start by configuring it
|
||||||
|
for the "Beaglebone PRU":
|
||||||
|
```
|
||||||
|
cd ~/klipper/
|
||||||
|
make menuconfig
|
||||||
|
```
|
||||||
|
|
||||||
|
To build and install the new micro-controller code, run:
|
||||||
|
```
|
||||||
|
sudo service klipper stop
|
||||||
|
make flash
|
||||||
|
sudo service klipper start
|
||||||
|
```
|
||||||
|
|
||||||
|
Remaining configuration
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Complete the installation by configuring Klipper and Octoprint
|
||||||
|
following the instructions in
|
||||||
|
[the main installation document](Installation.md#Configuring_Klipper).
|
|
@ -0,0 +1,65 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# This script installs Klipper on a Beaglebone running Debian Jessie
|
||||||
|
# for use with its PRU micro-controller.
|
||||||
|
|
||||||
|
# Step 1: Do main install
|
||||||
|
install_main()
|
||||||
|
{
|
||||||
|
# Run the octopi script - raspbian is close enough to debian for
|
||||||
|
# this to work.
|
||||||
|
${SRCDIR}/scripts/install-octopi.sh
|
||||||
|
}
|
||||||
|
|
||||||
|
# Step 2: Install additional system packages
|
||||||
|
install_packages()
|
||||||
|
{
|
||||||
|
# Install desired packages
|
||||||
|
PKGLIST="gcc-pru"
|
||||||
|
|
||||||
|
report_status "Installing beaglebone packages..."
|
||||||
|
sudo apt-get install --yes ${PKGLIST}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Step 3: Install startup script
|
||||||
|
install_script()
|
||||||
|
{
|
||||||
|
report_status "Installing pru start script..."
|
||||||
|
sudo cp "${SRCDIR}/scripts/klipper-pru-start.sh" /etc/init.d/klipper_pru
|
||||||
|
sudo update-rc.d klipper_pru defaults
|
||||||
|
}
|
||||||
|
|
||||||
|
# Step 4: Install pru udev rule
|
||||||
|
install_udev()
|
||||||
|
{
|
||||||
|
report_status "Installing pru udev rule..."
|
||||||
|
sudo /bin/sh -c "cat > /etc/udev/rules.d/pru.rules" <<EOF
|
||||||
|
KERNEL=="rpmsg_pru30", MODE="0666"
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Helper functions
|
||||||
|
report_status()
|
||||||
|
{
|
||||||
|
echo -e "\n\n###### $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
verify_ready()
|
||||||
|
{
|
||||||
|
if [ "$EUID" -eq 0 ]; then
|
||||||
|
echo "This script must not run as root"
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Force script to exit if an error occurs
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Find SRCDIR from the pathname of this script
|
||||||
|
SRCDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/.. && pwd )"
|
||||||
|
|
||||||
|
# Run installation steps defined above
|
||||||
|
verify_ready
|
||||||
|
install_main
|
||||||
|
install_packages
|
||||||
|
install_script
|
||||||
|
install_udev
|
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# System startup script to start the PRU firmware
|
||||||
|
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: klipper_pru
|
||||||
|
# Required-Start: $local_fs
|
||||||
|
# Required-Stop:
|
||||||
|
# Default-Start: 3 4 5
|
||||||
|
# Default-Stop: 0 1 2 6
|
||||||
|
# Short-Description: Klipper_PRU daemon
|
||||||
|
# Description: Starts the PRU for Klipper.
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||||
|
DESC="klipper_pru startup"
|
||||||
|
NAME="klipper_pru"
|
||||||
|
|
||||||
|
. /lib/lsb/init-functions
|
||||||
|
|
||||||
|
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
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
exit 0
|
Loading…
Reference in New Issue