Advanced Search

Search Results (Searched for: raspberry)

  • llamatrails
  • llamatrails
13 Apr 2025 21:45

RPi 4, LinuxCNC upgrade doesn't upgrade kernel

Category: Installing LinuxCNC

Raspberry Pi 4 Model B Rev 1.2
Mesa 7c81
Debian GNU/Linux 12 (bookworm) 6.1.54-rt15 #1_RT Fri Nov 17 17:02:27 AEST 2023 aarch64

I installed LinuxCNC 2.9.3 from the linuxcnc ISO image a couple of years ago, and upgraded to 2.9.4 yesterday by:
$ sudo apt update  && sudo apt full-upgrade

I now have:
rick@raspi4:~$ dpkg -l | grep linux-image
ii  linux-image-bcm2711-rpi-4            6.1.54-rt15-1                           arm64        Linux kernel, version 6.1.54-rt15
rick@raspi4:~$ dpkg -l | grep linuxcnc
ii  linuxcnc-doc-en                      1:2.9.4                                 all          motion controller for CNC machines and robots (English documentation)
ii  linuxcnc-uspace                      1:2.9.4                                 arm64        motion controller for CNC machines and robots
ii  linuxcnc-uspace-dev                  1:2.9.4                                 arm64        PC based motion controller for real-time Linux

rick@raspi4:~$ uname -a
Linux raspi4 6.1.54-rt15 #1 SMP PREEMPT_RT Fri Nov 17 17:02:27 AEST 2023 aarch64 GNU/Linux

Is there a newer RT kernel then the one from 2023 ?
If so, how can I upgrade the kernel without having to reload the entire system from the latest ISO image ?

TIA,
Rick
 
  • pgf
  • pgf
12 Apr 2025 14:23

Running an external program from a HAL pin

Category: HAL

I spent my career trying to write reasonably efficient and fast code in firmware, device drivers and system level utilities. I'm afraid I just couldn't stomach adding a polling loop on top of the polling loop (every .2 seconds) that I discovered at the core of halui.

So I've done an end-run around the problem, which works nicely.

My mill runs from a Raspberry Pi, connected via a Mesa ethernet card. It occurred to me that if HAL could twiddle an actual gpio pin, then I could easily read that, and hook it up to action.  And of course if there's one thing the RPi has, it's plenty of gpio.

So I loaded hal_gpio, and hooked up a couple of output pins:
loadrt hal_gpio outputs=GPIO16,GPIO20
addf hal_gpio.write servo-thread
 
net external-estop-off \
        estop-latch.0.fault-out => hal_gpio.GPIO16-out
 
net coolant-mist => hal_gpio.GPIO20-out

Those pins were chosen because they were eacy immediately adjacent to another unused pin.  Gpio 16 is next to 19, and 20 is next to 26.  I jumpered those two pairs.

Then I wrote a short script using gpiomon to watch pins 19 and 26 for transitions.
#!/bin/bash

estop=19
vacuum=26

switch()
{
    echo Turning $1 $2   # e.g. "Turning vacuum on"
    wget -q -O /dev/null http://service:9901/event:cnc-mill-$1-$2 &
}

while read pinevent
do
    echo got $pinevent   # this will be "19-1", "19-0", "26-1", or "26-0"
    case $pinevent in
    $estop-1)
        switch spindle off
        ;;
    $vacuum-0)
        switch vacuum off
        ;;
    $vacuum-1)
        switch vacuum on
        ;;
    esac
done < <( gpiomon  --line-buffered --format="%o-%e" gpiochip0 19 26)

This works perfectly.

While I'm pleased to have found this solution, it sure seems silly to have had to consume 4 gpio pins in order to do it.

Thanks for all your suggestions!
paul
Displaying 406 - 407 out of 407 results.
Time to create page: 2.793 seconds
Powered by Kunena Forum