*Hi All, *
My next goal is to have a have a C program on the *Main processor read and
write values into -> PRU Memory*. There are plenty of examples about this
however they are not returning my register values. Indeed I am able to
read/write somewhere and persist value into PRU memory. Successive program
runs which implement a counter seem to work, but I am guessing that my
understanding of the start address for what I think I am writing /reading
is wrong. I would call it half working. On the Flip side , inside the
PRU I have a simple Assembly program that has a counter and various static
values in other R1,2,3,4,5,6,7 etc to signal to me that I am accessing the
right registers form the C program. Note that the two counter loops are
decoupled. The first one was just used for testing.
Here is my basic understanding - Focusing on PRU0:
Each PRU has 8K of 'dataram' - This is where I expect R1,R2,R3 ---- R31
to be stored. * Is this true? I see many people changing the reference
at *0x0000_0n00, n = c24_blk_index[3:0], do I need to set where the Rn's
lay down in memory?
Note that in one of my assembly registers R2 I have an value that
determines the speed of a blinking LED. For all intents let's pretend I
want to change that value.
Moving on.
*prussdrv_map_prumem(PRUSS0_PRU0_DATARAM, &sharedMem);sharedMem_int =
(unsigned int*) sharedMem;*
Looking at the above C code - this appears universal in the examples. Get
an array pointer to the allocated PRU memory *PRUSS0_PRU0_DATARAM.*
Since in my PRU assembly program I have Registers set everywhere to values
I will recognize I would expect to see my values when calling:
result_0 = sharedMem_int[0];
result_1 = sharedMem_int[1];
result_2 = sharedMem_int[2];
result_3 = sharedMem_int[3];
etc...
Printing these out do not reflect the values I am setting and using in the
PRU.
So now we must be entering into a world of offsets. We must be reading
some other address space,
I did see alternative examples that an offset was used like
sharedMem_int[OFFSET
+1]; but that I am sure had more to do with the Shared memory area of 12K
ram.
Should the registers be available as I have described?
Do I need to do anything in the assembly to allow the C program into the
general Rn registers?
Do general Rn registers need an offset?
Does the assembly need to set a pointer for where the general registers get
written? When R1 is set for example does it look for a base address in the
constants table?
Docs also state that the PRU 0 Data ram starts at *0x4a300000*;
int registerStart;
registerStart = *(int*)0x4a300000;
printf("--> R0 = %d" + registerStart);
However I get a seg fault trying to print what is in R0 that way. That was
more to just do a direct look see if possible and go around all the
interfaces.
<https://lh3.googleusercontent.com/-Gn9n5rp4phY/WDnhrgk3Y_I/AAAAAAAAAR4/Jb7pB6n_WAM_JcPk36ocz4xu_u6uyK1PwCLcB/s1600/Screen%2BShot%2B2016-11-26%2Bat%2B12.24.39%2BPM.png>
<https://lh3.googleusercontent.com/-4P95j2oiKkQ/WDniNpAt5TI/AAAAAAAAAR8/WQDtAvNlaac9H9KSklkCmxq6qAf0ayDygCLcB/s1600/Screen%2BShot%2B2016-11-26%2Bat%2B12.27.31%2BPM.png>
<https://lh3.googleusercontent.com/-PHlFvI12zYs/WDnitVNFEwI/AAAAAAAAASA/BdR5tWZmEOMgA5QXS6Lf_wPd1UOV6FxAACLcB/s1600/Screen%2BShot%2B2016-11-26%2Bat%2B12.29.12%2BPM.png>
--
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].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beagleboard/5a78aa19-7855-4083-b620-965d793c7cae%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.