Yona-Appletree / LEDscape

Beagle Bone Black cape and firmware for driving a large number of WS281x LED strips.
126 stars 58 forks source link

PRU initialization on current build of Debian Jessy, kernel 4.1 #43

Open Serisium opened 8 years ago

Serisium commented 8 years ago

The latest installation docs don't work for new installations of Debian Jessy(tested with the 2016-01-24 image). Not only is the dtbs location different(which the docs do cover), but TI introduced a new version of the 4.1 kernel(see this) which changes the API for accessing the PRUSS. This causes the modprobe uio_pruss step to fail.

The solution is to execute the following before copying the modified am335x-boneblack.dtb file:

cd /opt/scripts/tools
./update_kernel.sh --bone-rt-kernel --lts-4_1
reboot

However, from this point on, I receive segmentation faults when running LEDscape.

root@ledscape:~/LEDscape# ./run-ledscape 
tokens: 381: {
    "outputMode": "ws281x",
    "outputMapping": "rgb-123-v2",
    "demoMode": "power",
    "ledsPerStrip": 30,
    "usedStripCount": 23,
    "colorChannelOrder": "BRG",
    "opcTcpPort": 7890,
    "opcUdpPort": 7890,
    "enableInterpolation": true,
    "enableDithering": true,
    "enableLookupTable": true,
    "lumCurvePower": 2.0000,
    "whitePoint": {
        "red": 0.9000,
        "green": 1.0000,
        "blue": 1.0000
    }
}

Loaded config file from ws281x-config.json.
Config file written to ws281x-config.json
[main] Starting server on ports (tcp=7890, udp=7890) for 30 pixels on 48 strips
[main] Demo Mode Enabled
Starting demo data thread
[e131] Starting UDP server on port 5568
[udp] Starting UDP server on port 7890
Segmentation fault
bigjosh commented 7 years ago

I'd be happy to sponsor work to either document a workaround with current code base, or move the code to the new remoteproc driver if anyone is interested.

Yona-Appletree commented 7 years ago

@bigjosh I'll try to find time to address this. Do you know if this image of Debian is shipping with current BBBs?

Yona-Appletree commented 7 years ago

@bigjosh Please feel free to contact me at lightatplay@gmail.com to discuss the issue more, and potentially to sponsor this work.

bigjosh commented 7 years ago

@Yona-Appletree Good question- I always re-image boards as soon as they come in, but my guess is that no one is shipping with the new kernel because we'd be seeing more people asking about the problems.

bigjosh commented 7 years ago

BTW, don't waste too much time looking at the remoteproc stuff if you aren't familiar with it yet. I've already fallen back to the old kernel because of other unrelated problems on the new distributions so this work could likely be postponed for a while without bothering anyone.

steely-glint commented 7 years ago

Did you find a work around for the segfaults ? I am using bone-debian-8.4-iot-armhf-2016-05-13-4gb.img and the bone kernel as described above. (I need the newer kernel because it supports tethering from a cheap android phone on the USB port). I'd be happy to help debug if I'm given hints.....

(Edit - it looks like a problem in multicast in the e131 server here's gdb.... Starting program: /project2/github/Yona-Appletree/LEDscape/opc-server [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1". [main] Starting server on ports (tcp=7890, udp=7890) for 176 pixels on 48 strips [New Thread 0xb6e40460 (LWP 1027)] [render] Starting render thread for 8448 total pixels [render] Awaiting server initialization... [New Thread 0xb6640460 (LWP 1028)] [udp] Starting UDP server on port 7890 [New Thread 0xb5e40460 (LWP 1029)] [tcp] Starting TCP server on 7890 [New Thread 0xb5640460 (LWP 1030)] [main] Demo Mode Enabled [e131] Starting UDP server on port 5568

Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xb5640460 (LWP 1030)] 0x00014778 in join_multicast_group_on_all_ifaces () (gdb) where

0 0x00014778 in join_multicast_group_on_all_ifaces ()

1 0x000148be in e131_server_thread ()

2 0xb6fabf88 in start_thread () from /lib/arm-linux-gnueabihf/libpthread.so.0

3 0xb6ed71fc in ?? () from /lib/arm-linux-gnueabihf/libc.so.6

Backtrace stopped: previous frame identical to this frame (corrupt stack?)

If I comment out starting that thread it seems to work ok.)

mykolasmith commented 7 years ago

Can someone point me in the direction of a Debian distro that does work? I am also getting Segmentation fault when trying to run LEDscape on the latest official image(s).

Serisium commented 7 years ago

@mykolasmith I believe that I got it working by going back one Debian release. Try the "Debian 7.11 2015-06-15 4GB SD LXDE" release here.

mykolasmith commented 7 years ago

@GGreenwood Thanks for the quick response. I'll try that =)

steely-glint commented 7 years ago

Here are my build notes on using the latest distro: https://github.com/steely-glint/starway/blob/novparkreno/bbbuildnotes.txt It takes a bit of a dance - but it seems pretty stable - that's been running for a couple of weeks driving starway