2015-12-16 38 views
1

失败我运行的例子为roothttp://mythopoeic.org/BBB-PRU/pru-helloworld/example.c 和我收到的错误:Beaglebone黑 - Debian的4.1 - PRU - prussdrv_open()与-1

"prussdrv_open() failed with -1" during the execution 

BBB具有Debian 4.1

这些都是使用的命令:

sudo cp EBB-PRU-Example‐00A0.dtbo /lib/firmware 
echo EBB-PRU-Example > /sys/devices/platform/bone_capemgr/slots 
cat /sys/devices/platform/bone_capemgr/slots 
0: PF---- -1 
1: PF---- -1 
2: PF---- -1 
3: PF---- -1 
4: P-O-L- 0 Override Board Name,00A0,Override Manuf,EBB-PRU-Example 
modprobe uio_pruss 
dmesg 
[ 195.985512] bone_capemgr bone_capemgr: part_number 'EBB-PRU-Example', version 'N/A' 
[ 195.994182] bone_capemgr bone_capemgr: slot #4: override 
[ 195.999703] bone_capemgr bone_capemgr: Using override eeprom data at slot 4 
[ 196.006752] bone_capemgr bone_capemgr: slot #4: 'Override Board Name,00A0,Override Manuf,EBB-PRU-Example' 
[ 196.039095] pruss_uio 4a300000.pruss: No children 
[ 196.057144] gpio-of-helper ocp:gpio_helper: ready 
[ 196.070956] bone_capemgr bone_capemgr: slot #4: dtbo 'EBB-PRU-Example-00A0.dtbo' loaded; overlay id #0 

/boot/uEnv.txt已禁用HDMI

EBB-PRU的Example.dts

/* Device Tree Overlay for enabling the pins that are used in Chapter 13 
* This overlay is based on the BB-PRU-01 overlay 
* Written by Derek Molloy for the book "Exploring BeagleBone: Tools and 
* Techniques for Building with Embedded Linux" by John Wiley & Sons, 2014 
* ISBN 9781118935125. Please see the file README.md in the repository root 
* directory for copyright and GNU GPLv3 license information. 
*/ 
/dts-v1/; 
/plugin/; 

/{ 
    compatible = "ti,beaglebone", "ti,beaglebone-black"; 

    part-number = "EBB-PRU-Example"; 
    version = "00A0"; 

    /* This overlay uses the following resources */ 
    exclusive-use = 
     "P9.11", "P9.13", "P9.27", "P9.28", "pru0"; 

    [email protected] { 
     target = <&am33xx_pinmux>; 
     __overlay__ { 

     gpio_pins: pinmux_gpio_pins {   // The GPIO pins 
      pinctrl-single,pins = < 
       0x070 0x07 // P9_11 MODE7 | OUTPUT | GPIO pull-down 
       0x074 0x27 // P9_13 MODE7 | INPUT | GPIO pull-down 
      >; 
     }; 

     pru_pru_pins: pinmux_pru_pru_pins { // The PRU pin modes 
      pinctrl-single,pins = < 
       0x1a4 0x05 // P9_27 pr1_pru0_pru_r30_5, MODE5 | OUTPUT | PRU 
       0x19c 0x26 // P9_28 pr1_pru0_pru_r31_3, MODE6 | INPUT | PRU 
      >; 
     }; 
     }; 
    }; 

    [email protected] {   // Enable the PRUSS 
     target = <&pruss>; 
     __overlay__ { 
     status = "okay"; 
     pinctrl-names = "default"; 
     pinctrl-0 = <&pru_pru_pins>; 
     }; 
    }; 

    [email protected] {   // Enable the GPIOs 
     target = <&ocp>; 
     __overlay__ { 
     gpio_helper { 
      compatible = "gpio-of-helper"; 
      status = "okay"; 
      pinctrl-names = "default"; 
      pinctrl-0 = <&gpio_pins>; 
     }; 
     }; 
    }; 
}; 

回答

0

嗯看起来类似previous issue ..是,PRU没有启用的问题,我引用: 呼应BB-BONE-PRU-01 > /sys/devices/bone_capemgr.8/slots修复了它。

+0

我用: 回声EBB-PRU的例子>/SYS /设备/平台/ bone_capemgr /插槽 – RobertAalto

0

你可以尝试使用4.1.5-ti-r10版本的内核。显然pruss_uio不适用于某些4.1.x内核。

此外,您使用的dts文件也不适合我(不知道为什么)。我用了以下内容,prussdrv_open不会失败:

/dts-v1/; 
/plugin/; 

/{ 
    compatible = "ti,beaglebone", "ti,beaglebone-black"; 

    /* identification */ 
    part-number = "BB-ENABLE-PRU"; 

    /* version */ 
    version = "00A0"; 

     [email protected] {   // Enable the PRUSS 
       target = <&pruss>; 
       __overlay__ { 
        status = "okay"; 
       }; 
     }; 
}; 

如果发现出这一切在该线程:https://groups.google.com/forum/#!category-topic/beagleboard/VBNEoCbEHUQ

1

有在回购4.1内核为BBB的两个预编译的说法: “TI”版本和“Bone”版本。 TI版本使用更新的API来控制PRU,Bone版本与3.8内核具有相同的API,而prussdrv_open()函数应该可以正常工作。 要安装4.1 “骨” 的内核,你可以这样做:

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

更多信息:https://groups.google.com/forum/#!topic/beagleboard/cyM3f935wMA

+1

使用此方法从4.4.43 TI内核移至4.9.20 Bone内核为我解决了这个问题。 – Emil