Hello I know the code. It's all explained in the SDK documention. I also like these examples.Your asking questions about an SDK that's supported by Texas Instruments. You do understand this .org group you posted in may contain TI employees but is NOT TI support it's Beagle board Debian. I think if you read the documents you will understand the answers I'm sure you could compile this with some work the sdk instructions talk about This. Hypothetical question ❓If the instructions told you a virtual box build was not supported and not recommended would you use one anyway and then ask the person who told you not too do this why it doesn't work. I'm struggling to be nice in this reply. I remember asking questions as a young engineer that clearly showed I made zero effort to research anything. Then one day I got some really critical replies about my skills. Do some reading then if stuck ask questions Or better yet follow what the sdk instructions suggest. If you found this code on internet and don't have a TI account or are not eligible for ITAR restrictions to download the sdk you have a big problem. I see you have a Gmail account
Sent from Yahoo Mail on Android On Fri, Apr 30, 2021 at 3:09 PM, Cheng Chen<[email protected]> wrote: Hi all, I am practicing PRU skills through some TI examples. I am playing with PRU_ADC_onChip example and ran into a few questions. I wonder if you can help me with. The nice thing about this example is it has a README.txt with all the procedures. The idea is to use rpmsg to communicate between arm and pru module and read out ADC value. I am using a Beaglebone Black wireless.Here is the basic procedures. FILE STRUCTUREPRU_ADC | |--pru_adc_firmware.c firmware loaded into PRU0 | |--pru_adc_userspace |--pru_adc_userspace.c userspace code that interacts with PRU0 BUILD FIRMWARE & USERSPACE CODE$ cd <PATH_TO_PRU_SW_SUPPORT_PACKAGE>/examples/am335x/PRU_ADC_onChip/$ make clean$ make$ cd pru_adc_userspace/$ make clean$ make My BBB wireless can compile pru code successfully because I installed PRU_CGT compiler. But it is unable to compile ARM code. I think that is because ARM_CCT cross-compiler toochain environment is missing, in another word, I need to install processor-sdk-am335x My first questions is can I install processor-sdk-am335x into Debian system I currently have (Linux beaglebone 4.19.94-ti-r62 ) ? I am a little confused about the relationship between this SDK and Debian system. Why is the tutorial asking me to compile pru_adc_userspace.c in the Beaglebone. I thought it is supposed to be executed in a cross-compilation environment. I ended up installing processor-sdk-am335x on my linux desktop and compiled successfully. Then I copied the generated file back to BBB wireless. But when I tried to run the program, it shows the following error. Reading voltage at ADC Channel: 5/dev/rpmsg_pru30 could not be opened.Trying to initialize PRU using sysfs interface.ERROR: Could not open /dev/rpmsg_pru30 Attached is the excerpt where the problem happened. Could anyone help me with some hints of what is going on here? Much appreciated. struct shared_struct message; /* use character device /dev/rpmsg_pru30 */ char outputFilename[] = "/dev/rpmsg_pru30"; /* test that /dev/rpmsg_pru30 exists */ FILE *ofp; uint16_t returnedVoltage; ofp = fopen(outputFilename, "r"); if (ofp == NULL) { printf("/dev/rpmsg_pru30 could not be opened. \n"); printf("Trying to initialize PRU using sysfs interface.\n"); FILE *sysfs_node; char firmware[] = "/sys/class/remoteproc/remoteproc1/firmware"; char firmwareName[] = "PRU_ADC_onChip.out"; sysfs_node = fopen(firmware, "r+"); if (sysfs_node == NULL) { printf("cannot open firmware sysfs_node"); return EXIT_FAILURE; } fwrite(&firmwareName, sizeof(uint8_t), sizeof(firmwareName), sysfs_node); fclose(sysfs_node); char pruState[] = "/sys/class/remoteproc/remoteproc1/state"; char start[] = "start"; sysfs_node = fopen(pruState, "r+"); if (sysfs_node == NULL) { printf("cannot open state sysfs_node"); return EXIT_FAILURE; } fwrite(&start, sizeof(uint8_t), sizeof(start), sysfs_node); fclose(sysfs_node); /* give RPMSG time to initialize */ sleep(3); ofp = fopen(outputFilename, "r"); if (ofp == NULL) { printf("ERROR: Could not open /dev/rpmsg_pru30\n"); exit(EXIT_FAILURE); } } -- 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/1d43aa7b-0e94-4431-9e31-13545213940bn%40googlegroups.com. -- 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/1742872729.209896.1619816921641%40mail.yahoo.com.
