Thank you very much for your answer to Chad,

I've tried this piece of code:

Arm side:

#define DDR_BASEADDR   0x10000
#define OFFSET_DDR     0x00

int main(int argc, char **argv)
{

int mem_fd = open("/dev/mem", O_RDWR | O_SYNC);

if (mem_fd == -1){
printf("Err");
return 0;
}

volatile void *ddrMapp = NULL;
volatile void *DDR_regaddr1 = NULL;
ddrMapp = mmap(0, 0x0FFFFFFF, PROT_WRITE | PROT_READ, MAP_SHARED, mem_fd,
DDR_BASEADDR);

DDR_regaddr1 = ddrMapp + OFFSET_DDR;

printf("PRU address: %X\n", &DDR_regaddr1);

return(0);
}

PRU side:

#include <stdint.h>
#include <pru_cfg.h>
#include "resource_table_empty.h"

#define PRU_SHARED_MEM_ADDR 0x00010000

void main(void)
{
// enable OCP
CT_CFG.SYSCFG_bit.STANDBY_INIT = 0;
volatile int* buffer = (volatile int *) PRU_SHARED_MEM_ADDR;
buffer[0] = 0xED;
/* Clear SYSCFG[STANDBY_INIT] to enable OCP master port  --> Shared memory
*/
CT_CFG.SYSCFG_bit.STANDBY_INIT = 0;
}

And the value returned from the printf is 0xBEFFFAFC , rather than
0x000000ED. Maybe I am pointing to the wrong physical address, do you know
what am I doing wrong here?

Thank you very much,
Fred Gomes



Chad Baker <cmbak...@gmail.com> escreveu no dia quarta, 21/11/2018 à(s)
16:55:

> On the C-side, you need to find the address that maps the physical to
> logical address. The function "mmap" does that.
> volatile int *buffer = (volatile int *)mmao( PRU_SHARED_ADDRESS, ...
> Check the man pages for how to use mmap.
> Chad
>
> On 11/21/18 7:47 AM, Fred Gomes wrote:
>
> Can anyone explain to me why the below example does not work?  I could
> confirm on the PRU side that I am writing correctly in the 0x10000 address,
> however, I can't get the written value in the beagle bone side. It's quite
> confusing to me, since if the memory is shared it should work.
>
> PRU code:
>
> #include <stdint.h>
> #include <pru_cfg.h>
> #include "resource_table_empty.h"
>
> #define PRU_SHARED_MEM_ADDR 0x00010000
>
> void main(void)
> {
> // enable OCP
> CT_CFG.SYSCFG_bit.STANDBY_INIT = 0;
> volatile int* buffer = (volatile int *) PRU_SHARED_MEM_ADDR;
> buffer[0] = 0xED;
> /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port  --> Shared memory
> */
> CT_CFG.SYSCFG_bit.STANDBY_INIT = 0;
> }
>
> Host C++ code:
>
> #include <unistd.h>
> #include <stdio.h>
> #include <inttypes.h>
> #include <prussdrv.h>
> #include <pruss_intc_mapping.h>
>
> using namespace std;
>
> #define PRU_SHARED_MEM_ADDR 0x00010000
>
> int main(int argc, char **argv)
> {
>
> volatile int* buffer = (volatile int *)PRU_SHARED_MEM_ADDR;
>
>
> printf("Memory address: %x\n", &buffer);
>
> return(0);
> }
>
> Regards,
> Fred Gomes
>
> <fred.p.gome...@gmail.com> escreveu no dia terça, 20/11/2018 à(s) 17:13:
>
>> Hi,
>>
>> I need your help,
>>
>> I am developing an application on the beagle bone for reading data for an
>> SPI slave. For that, I have to use the PRU since the data transmission is
>> up to 15 KHz.
>>
>> Following this tutorial: https://markayoder.github.io/PRUCookbook/ , in
>> the *Chapter** 5 - Memory allocation*, it is explained how memory
>> allocation works on the PRU, as well as how to store variables on specific
>> memory addresses. But he doesn't mention how do I get access to those
>> memory addresses from a host code.
>>
>> I did some researching on the internet and everything I can find is
>> examples of getting access to specific memory adresses using the prussdrv,
>> which I think no longer work in the latest Debian images ( I tried to use
>> it and it trhowed an error from the very beginning when trying to open the
>> drive (*prussdrv_open()*) .  Can anyone give me an inkling on how can I
>> achieve this?
>>
>>
>> Ps: Here's an example using the prussdrv :
>> http://catch22.eu/beaglebone/beaglebone-pru-ipc/
>>
>> Best regards,
>> Fred Gomes
>> --
>> 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/R8gzE6POFZU/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> beagleboard+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/beagleboard/c697c5b6-70ff-48e1-97e9-9f89613ba455%40googlegroups.com
>> <https://groups.google.com/d/msgid/beagleboard/c697c5b6-70ff-48e1-97e9-9f89613ba455%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> 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 beagleboard+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/beagleboard/CAJHs20xwyLQ3MVNmT7O%2BdBGTptzrYB-GTuN2xS-dB8qjLtgwKA%40mail.gmail.com
> <https://groups.google.com/d/msgid/beagleboard/CAJHs20xwyLQ3MVNmT7O%2BdBGTptzrYB-GTuN2xS-dB8qjLtgwKA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> 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 a topic in the
> Google Groups "BeagleBoard" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/beagleboard/R8gzE6POFZU/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> beagleboard+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/beagleboard/4b70ca6a-9593-4a38-b727-9f90b5b13dc3%40gmail.com
> <https://groups.google.com/d/msgid/beagleboard/4b70ca6a-9593-4a38-b727-9f90b5b13dc3%40gmail.com?utm_medium=email&utm_source=footer>
> .
> 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 beagleboard+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/CAJHs20zbxQu4fmF24JcOk4JnVEFHfHKunP%3DQHZfir08fW6x3YQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to