I read your last email with attention by still I can't understad why my 
code is not working. I a few words: 
The code works when properly when I comment the line " WBS r31.t15 //Wait 
til GPIO-15-in is high... P9_24"

*PINMUX DTS:*

/dts-v1/;  
/plugin/;  
  
/ {  
  compatible = "ti,beaglebone", "ti,beaglebone-black";  
  
  /* identification */  
  part-number = "BB-BONE-W";  
  version = "00A0";  
  exclusive-use =  "P9.24";  
 
  
  fragment@0 {  
    target = <&am33xx_pinmux>;  
    __overlay__ {  
      mygpio: pinmux_mygpio{  
        pinctrl-single,pins = <   
 0x184 0x36         /* P9 24 pr1_pru0_pru_r31_16.GPIO0_15: | PULLUP | MODE6 
| INPUT */
          >;  
      };  
    };  
  };  
  
  fragment@1 {  
    target = <&ocp>;  
    __overlay__ {  
      test_helper: helper {  
        compatible = "bone-pinmux-helper";  
        pinctrl-names = "default";  
        pinctrl-0 = <&mygpio>;  
        status = "okay";  
      };  
    };  
  };  
  
  fragment@2{  
  target = <&pruss>;  
    __overlay__ {  
      status = "okay";  
    };  
  };  
};  

*PIN MUX STATUS:*
# cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pins | grep "pin 97"
   pin 97 (44e10984) 00000036 pinctrl-single 

*UNAME +DIST:*
# uname -a
Linux don-t001 3.8.13-bone30 #1 SMP Thu Nov 14 11:19:20 UTC 2013 armv7l 
armv7l armv7l GNU/Linux
# cat /etc/issue
    Ubuntu 12.04.3 LTS \n \l

*ASM CODE:*

.origin 0
.entrypoint START

#define PRU0_ARM_INTERRUPT 19
#define AM33XX

#define GPIO1 0x4804c000
#define GPIO_CLEARDATAOUT 0x190
#define GPIO_SETDATAOUT 0x194

START:
    //Enable OCP master port
    LBCO r0, C4, 4, 4
    CLR r0, r0, 4 // Clear SYSCFG[STANDBY_INIT] to enable OCP master port
    SBCO r0, C4, 4, 4
    
    MOV r1, 1000 //# cycles

INPUTTEST:
 
 WBS r31.t15 //Wait til GPIO-15-in is high... P9_24
 SUB r1, r1, 1 //Subtract from counter
QBNE INPUTTEST, r1, 0 //Loop if counter not at zero

// Send notification to Host for program completion
MOV R31.b0, PRU0_ARM_INTERRUPT+16

MOV r1, 0
HALT


*INIT PROGRAM USING PyPRUSS:*

#!/usr/bin/python

''' ddr_write.py - Finds the DDR address and size, passes that info to the 
PRU0 
data memory, executes a program and reads back data from the first and last 
banks'''


import pypruss
import mmap
import struct 

pypruss.modprobe()
ddr_addr = pypruss.ddr_addr()
ddr_size = pypruss.ddr_size()

print "DDR memory address is 0x%x and the size is 0x%x"%(ddr_addr, ddr_size)

ddr_offset  = ddr_addr-0x10000000
ddr_filelen = ddr_size+0x10000000
ddr_start = 0x10000000
ddr_end = 0x10000000+ddr_size

pypruss.init() # Init the PRU
pypruss.open(0) # Open PRU event 0 which is PRU0_ARM_INTERRUPT
pypruss.pruintc_init() # Init the interrupt controller
pypruss.pru_write_memory(0, 0, [ddr_addr, ddr_addr+ddr_size-4]) # Put the 
ddr address in the first region 
pypruss.exec_program(0, "./ddr_write.bin") # Load firmware "ddr_write.bin" 
on PRU 0
pypruss.wait_for_event(0) # Wait for event 0 which is connected to 
PRU0_ARM_INTERRUPT
pypruss.clear_event(0) # Clear the event
pypruss.exit() # Exit PRU

with open("/dev/mem", "r+b") as f: # Open the physical memory device
ddr_mem = mmap.mmap(f.fileno(), ddr_filelen, offset=ddr_offset) # mmap the 
right area

read_back = struct.unpack("L", ddr_mem[ddr_start:ddr_start+4])[0] # Parse 
the data


print "The first 4 bytes of DDR memory reads "+hex(read_back)


ddr_mem.close() # Close the memory 
f.close() # Close the file


No way to read the P9_24 PIN From BBB using PRUSS

May be the *WBS *does no work as I think ..... a week working on that and 
still nothing.






El martes, 11 de marzo de 2014 00:40:04 UTC-3, Brandon I escribió:
>
> >When I do an interruput up or down the ASM keeps waiting and nothing....
>
> Read my previous email. Your code will not work as is.
>
>
> On Mon, Mar 10, 2014 at 8:11 PM, Manu <[email protected] <javascript:>
> > wrote:
>
>> My DTS is:
>>
>> /dts-v1/;  
>> /plugin/;  
>>   
>> / {  
>>   compatible = "ti,beaglebone", "ti,beaglebone-black";  
>>   
>>   /* identification */  
>>   part-number = "BB-BONE-W";  
>>   version = "00A0";  
>>   exclusive-use =  "P9.24";  
>>  
>>   
>>   fragment@0 {  
>>     target = <&am33xx_pinmux>;  
>>     __overlay__ {  
>>       mygpio: pinmux_mygpio{  
>>         pinctrl-single,pins = <  
>>  
>>  0x184 0x16         /* P9 24 pr1_pru0_pru_r31_16.GPIO0_15: | PULLUP | 
>> MODE6 | INPUT */
>>            >;  
>>       };  
>>     };  
>>   };  
>>   
>>   fragment@1 {  
>>     target = <&ocp>;  
>>     __overlay__ {  
>>       test_helper: helper {  
>>         compatible = "bone-pinmux-helper";  
>>         pinctrl-names = "default";  
>>         pinctrl-0 = <&mygpio>;  
>>         status = "okay";  
>>       };  
>>     };  
>>   };  
>>
>>   fragment@2{  
>>   target = <&pruss>;  
>>     __overlay__ {  
>>       status = "okay";  
>>       pinctrl-names = "default";
>>       pinctrl-0 = <&mygpio>;
>>     };  
>>   };  
>>
>> };  
>>
>>
>> and the 
>> cat /sys/devices/bone_capemgr.*/slots
>>  0: 54:PF--- 
>>  1: 55:PF--- 
>>  2: 56:PF--- 
>>  3: 57:PF--- 
>>  4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
>>  5: ff:P-O-- Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
>>  6: ff:P-O-- Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN
>>  8: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-BONE-W
>>
>> cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pins | grep "pin 97"
>> pin 97 (44e10984) 00000037 pinctrl-single  BEFORE
>>
>> root@donkeytom-t001:/texka/pinmux# echo BB-BONE-W > 
>> /sys/devices/bone_capemgr.9/slots
>> root@donkeytom-t001:/texka/pinmux# cat 
>> /sys/kernel/debug/pinctrl/44e10800.pinmux/pins | grep "pin 97"
>> pin 97 (44e10984) 00000016 pinctrl-single  AFTER
>>
>>
>> When I do an interruput up or down the ASM keeps waiting and nothing....
>>
>>
>> Thank you!
>>
>> Manuel
>>
>> El lunes, 10 de marzo de 2014 23:36:42 UTC-3, Charles Steinkuehler 
>> escribió:
>>>
>>> Provide the *.dts source for the overlay you are trying to load, and the 
>>> contents of /sys/devices/bone_capemgr.*/slots, and maybe we can figure 
>>> out what's going wrong.  It looks like something has already grabbed the 
>>> pin you want to use. 
>>>
>>> Note the "pruss: failed to hardreset" always shows up and doesn't 
>>> indicate a problem (or at least not the problem you're having).  Your 
>>> issue is presumably the pin overlay that fails to load. 
>>>
>>> On 3/10/2014 9:20 PM, Manu wrote: 
>>> > I was finding what is wrong and finally I got it. The thing is that I 
>>> don't 
>>> > know how to fix it. 
>>> > My BBB is Ubuntu last 12.04 version with 3.8 kernel by nelson. 
>>> > The error is here: 
>>> > *706.650640] omap_hwmod: pruss: failed to hardreset* 
>>> > [  706.682785] pinctrl-single 44e10800.pinmux: pin 44e10984 already 
>>> > requested by helper.12; cannot claim for 4a300000.pruss 
>>> > [  706.694442] pinctrl-single 44e10800.pinmux: pin-97 (4a300000.pruss) 
>>> > status -22 
>>> > [  706.702096] pinctrl-single 44e10800.pinmux: could not request pin 
>>> 97 on 
>>> > device pinctrl-single 
>>> > [  706.738323] pruss_uio 4a300000.pruss: pins are not configured from 
>>> the 
>>> > driver 
>>> > [  706.765286] bone-capemgr bone_capemgr.9: slot #7: Applied #3 
>>> overlays. 
>>> > 
>>> > 
>>> > 
>>> > 
>>> > El lunes, 10 de marzo de 2014 20:10:55 UTC-3, Brandon I escribió: 
>>> >> 
>>> >> Along with what the others have described, since you're the arm 
>>> processor 
>>> >> gpio rather than a pru gpio, meaning you're going all the way out to 
>>> system 
>>> >> memory, you have to connect the pru to system memory. Here's an 
>>> example of 
>>> >> accessing system memory with the pru: 
>>> >> 
>>> >> 
>>> >> http://nomel.tumblr.com/post/30006622413/beaglebone-
>>> tutorial-accessing-main-memory-from-the-pru 
>>> >> 
>>> >> To set the pin mux for arm gpio, you can use one of these gpio 
>>> overlays. 
>>> >> Just follow the instructions: 
>>> >> 
>>> >> https://github.com/nomel/beaglebone/tree/master/gpio-header 
>>> >> 
>>> >> Also, there are a few pru debuggers out there now so you can 
>>> view/step pru 
>>> >> execution. 
>>> >> 
>>> >> -Brandon 
>>> >> 
>>> >> 
>>> >> On Sunday, March 9, 2014 6:37:09 PM UTC-7, Manu wrote: 
>>> >>> 
>>> >>> I was trying a few days to enable PRU (BBB Ubuntu 12.04)  and run a 
>>> input 
>>> >>> testing code using the pin P9_24. 
>>> >>> 
>>> >>> MUX = pin 97 (44e10984) 00000006 pinctrl-single  (SET to MODE 6) 
>>> >>> 
>>> >>> P9 24 pr1_pru0_pru_r31_16.GPIO0_15: | MODE6 | INPUT 
>>> >>> 
>>> >>> Nothing happens when I put the pin to 1.8 or GND 
>>> >>> 
>>> >>> The ASM code is: 
>>> >>> 
>>> >>> .origin 0 
>>> >>> .entrypoint START 
>>> >>> 
>>> >>> #define PRU0_ARM_INTERRUPT 19 
>>> >>> #define AM33XX 
>>> >>> 
>>> >>> #define GPIO1 0x4804c000 
>>> >>> #define GPIO_CLEARDATAOUT 0x190 
>>> >>> #define GPIO_SETDATAOUT 0x194 
>>> >>> 
>>> >>> START: 
>>> >>> // clear that bit 
>>> >>>     LBCO r0, C4, 4, 4 
>>> >>>     CLR r0, r0, 4 
>>> >>>     SBCO r0, C4, 4, 4 
>>> >>> 
>>> >>>     MOV r0, 1000000000 //# cycles 
>>> >>> 
>>> >>> INPUTTEST: 
>>> >>>   
>>> >>>  WBS r31.t15 //Wait til GPIO-15-in is high... P9_24 
>>> >>> SUB r0, r0, 1 //Subtract from counter 
>>> >>> QBNE INPUTTEST, r0, 0 //Loop if counter not at zero 
>>> >>>  // Send notification to Host for program completion 
>>> >>> MOV R31.b0, PRU0_ARM_INTERRUPT+16 
>>> >>> 
>>> >>> MOV r0, 0 
>>> >>> HALT 
>>> >>> 
>>> >>> I don't know what I am doing wrong and in Internet are not examples 
>>> for 
>>> >>> INPUT tests. 
>>> >>> 
>>> >>> 
>>> >>> 
>>> >>> 
>>> >>> 
>>> > 
>>>
>>>
>>> -- 
>>> Charles Steinkuehler 
>>> [email protected] 
>>>
>>  -- 
>> For more options, visit http://beagleboard.org/discuss
>> --- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "BeagleBoard" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/beagleboard/PzuzGgfGvBU/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to