I'm working on that very thing. I fairly certain what is printing is an address although it doesn't seem to correspond to anything I'd expect.
On Tuesday, April 20, 2021 at 9:35:54 PM UTC-4 gbcs...@comcast.net wrote: > Try changing the %n in the print statement to print out a 32 bit value. I > think you will see that it is an address in the PRU address space. > > > > Graham > > > > *From:* beagl...@googlegroups.com [mailto:beagl...@googlegroups.com] *On > Behalf Of *Walter Cromer > *Sent:* Tuesday, April 20, 2021 10:34 AM > *To:* BeagleBoard <beagl...@googlegroups.com> > *Subject:* [beagleboard] Strange behavior of value returned from PRU with > RPMSG > > > > I am using a Beaglebone Black and C to read analog inputs with PRU0 and > return the data to a host program using RPMSG. > > > > Basically, I read the data from FIFO0 fine, strip the step id from it and > copy it into an element of a character array in the PRU code. > > > > <start of snippet of PRU code> > > > > Data = HWREG(SOC_ADC_TSC_0_REGS + TSC_ADC_SS_FIFODATA(0)); > > > > > > > > if ((Data & 0x000F0000) == 0) { // checking the step id tag for step 0 > > // if step == 0, strip off the step and put the data in array DetBSample > > DetBSample[sampleno] = Data & 0xFFF; > > > > memcpy(payload, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 24); > // this came from TI's sample code, best I can tell it just preloads and > end of string character in the whole string. > > ltoa((long)DetBSample[sampleno], payload); // put the value in > DetBSample[sampleno] in the character string payload > > // now send the payload to the host > > > > pru_rpmsg_send(&transport, dst, src, payload, 24); > > > > This code compiles and runs fine. > > > > On the host side, I do this when I'm kicked by the PRU. (This is a > snippet so brackets may not match!) > > > > /* Poll until we receive a message from the PRU and then print it */ > > result = read(pollfds[0].fd, readBuf, MAX_BUFFER_SIZE); > > if (result > 0) > > { > > Volts = > atof(readBuf)*ADC_Res; > > printf("Message %d > received from PRU:%s or %x\n", i, readBuf, readBuf); > > printf("Volts read: > %.3f\n",Volts); > > > > The output is strange though (snippet below). The message #, string > value of readBuf and Volts are all correct. But when I output readBug as > hex, it never changes. I thought it might be the address of readBuf but it > doesn't appear to be. > > > > The voltage matches the input we're providing from a bench power supply > and the decimal value is correct. It's just that this hex value doesn't > change. > > > > Message 97 received from PRU:3742 or 4b50b0 > > Volts read: 1.644 > > Message 98: Sent to PRU > > Message 98 received from PRU:3744 or 4b50b0 > > Volts read: 1.645 > > Message 99: Sent to PRU > > Message 99 received from PRU:3743 or 4b50b0 > > Volts read: 1.645 > > Received 100 messages, closing /dev/rpmsg_pru30 > > > > > > -- > > 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...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beagleboard/784129ee-1cf5-4438-881e-7ac6621e7aben%40googlegroups.com > > <https://groups.google.com/d/msgid/beagleboard/784129ee-1cf5-4438-881e-7ac6621e7aben%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- 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/e1e0cd85-ed1d-4de8-983f-c787d4edfb7dn%40googlegroups.com.