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