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.