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.