Hi all, I am practicing PRU skills through some TI examples. I am playing with PRU_ADC_onChip <https://git.ti.com/cgit/pru-software-support-package/pru-software-support-package/tree/examples/am335x/PRU_ADC_onChip?h=master>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 STRUCTURE PRU_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 beagleboard+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/1d43aa7b-0e94-4431-9e31-13545213940bn%40googlegroups.com.