I'm using Debian and Cloud9 running on the Beagle. The Windows 10 box is really just providing a browser 'terminal' to the Beagle.
What compiler errors? Do you mean __far? I don't think I asked about that on E2E. I just realized my mistake and did some reading to understand it. It's not an issue anymore. On Monday, May 3, 2021 at 3:44:10 PM UTC-4 lazarman wrote: > Walter > > Yes I remember everything about your application including the Debian ARM > Linux application delays nobody seemed to have answers on fixing. > > Your running windows 10 not using the SDK using cloud 9 and Debian as I > understand. What is E2E saying about your compiler errors your asking about > in this group??? > > Mark > > > Sent from Yahoo Mail on Android > <https://go.onelink.me/107872968?pid=InProduct&c=Global_Internal_YGrowth_AndroidEmailSig__AndroidUsers&af_wl=ym&af_sub1=Internal&af_sub2=Global_YGrowth&af_sub3=EmailSignature> > > On Mon, May 3, 2021 at 2:35 PM, Walter Cromer > <wal...@edenconceptsllc.com> wrote: > > It was disappointing, to say the least that they said there wasn't an easy > way to transfer the firmware but I believe that's what they meant. > > I had my application running on the ARM side just fine but we just > couldn't get the deterministic timing we require for our application. > That's why I went to the PRUs. We're getting awesome results on the > timing now and RPMsg is fast enough on the transfer to get us the data for > analysis that we need. Right now my problem is that I need to put 10 to 15 > samples in an array and do some basic slope and standard deviation > calculations on the values in the array but when I add that, I'm getting > that my program won't fit into memory. I'm working now to learn how to > initialize all my variables in the shared memory space. That's locking up > the BBB every time right now. I'm following Molloy's book but it's not > getting me there so far. > > > On Monday, May 3, 2021 at 1:53:50 PM UTC-4 lazarman wrote: > > # I did install Code Composer Studio (CCS) from #TI, but gave up on it. > There's no easy way to #transfer your compiled firmware to the BBB from > #within it according to TI. > > Hi Walter > > This doesn't look correct or sound like TI. > JTAG loads code extremely fast especially on the ARM. If you're referring > to PRU code I've also done that as well. > > Your overall approach is fine imo just slow and a work in progress and > yes they are helpful in E2E . > > CCS/ JTAG is for barebones/ RTOS ARM it will speed up PRU development. > > unfortunately again in my opinion a complex control loop would run on a > DSP this PRU is too resource limited. > > It's purpose is offloading > > Glad to see your making progress > > I don't know if you saw a comment I completed your project all on the ARM > side barebones very quickly unfortunately I don't recommend this for a > beginner. To attempt this you really need a low level understanding of ARM > so your current approach is probably your best choice > > > > > > > > > > Sent from Yahoo Mail on Android > <https://go.onelink.me/107872968?pid=InProduct&c=Global_Internal_YGrowth_AndroidEmailSig__AndroidUsers&af_wl=ym&af_sub1=Internal&af_sub2=Global_YGrowth&af_sub3=EmailSignature> > > On Mon, May 3, 2021 at 10:24 AM, Walter Cromer > <wal...@edenconceptsllc.com> wrote: > > I just went through this pain and the people in this group were awesome > help. > > I needed to read three analog inputs and it was a bear but once I got it, > it has been going well. > > You don't mention the OS of your development platform or I may have missed > it. I'm on a Windows 10 box and using a BBB Wireless. TI's entire > learning system for this expects a Linux development platform so it's not > as useful as it could be if you are on Windows. I didn't want to go to the > trouble of even bringing up a virtual Linux on my Windows box for this. I > did install Code Composer Studio (CCS) from TI, but gave up on it. There's > no easy way to transfer your compiled firmware to the BBB from within it > according to TI. So I just do everything on the Beagle and it meets my > needs. > > I use the cloud9 IDE that ships with the BeagleBones for coding both the > ARM and PRU code. This environment compiles the ARM-side code and executes > it just like any normal host (aka Linux, aka ARM) program just fine. > However, to compile the PRU code and load it I go over to a PUTTY session > and use the make files from Mark Yoders' PRU Cookbook ( > https://markayoder.github.io/PRUCookbook/) . My process is clunky but my > programs aren't huge or extremely complex (yet) and this works for me. I > don't have and don't want to invest in a debug probe so debugging the PRU > code can be a pain and slow. The only option really is to use RPMsg almost > like printf to send messages back at key points in the PRU code to let me > know where it is executing and what's happening. (Purists and more > advanced developers are barfing and laughing at me right now I am sure.) > > I strongly encourage you to get the Technical Reference Manual for the TI > ARM335x and specifically spend time with the Touchscreen Controller > chapter. If you need precise timing, you'll want to spend time in the > Industrial Ethernet Peripheral chapter too. These are powerful tools once > you understand them. > > Also, get the PRU Optimizing C/C++ Compiler manual from TI and go through > it. One thing that really tripped me up was their implementation of the > __far keyword. GCC doesn't recognize that and I didn't understand what > was going on at first. > > As Mark commented, some people encourage using remoteproc, some encourage > using libpruio and some still use the uio. TI supports remoteproc and I > expect them to be around so I went with remoteproc. It may have its > drawbacks but it is working just fine for me. I can't comment on the other > two as I have not tried them. Also, I've found the TI E2E forum's > moderators to be patient with me as a neophyte. But the Google group's > members do have wider experience. > > FYI - watch out for how TI puts some register settings that cross nibble > or byte boundaries. It can really bite you! Take a look at the > STEPCONFIGn registers implementation of averaging to see what I mean. > > I hope this helps! > > On Saturday, May 1, 2021 at 12:46:03 PM UTC-4 lazarman wrote: > > <<<My first intention is to post in TI E2E support forums > <https://e2e.ti.com/>, but it requires a company email to do so. > > Hello Cheng > > I want to Help you but it appears my message is lost in translation > > What it sounds like to me is TI pays these engineers $$ to answer > questions and does not want to waste time and $$$ with users that dont > follow their well written instructions *which say use SDK Yocto Linux on > the ARM for this example.* > > For me I start with a working example with instructions and documentation > then modifyit > > If I undertsand correctly you have *never* had an example working > > If you like breaking examples and working on projects that ONLY works from > a unix script and hides all the details then this is the correct group to > to ask questions (-: > > I suggest you try the example *you found* following the intructions > exactly. if you cant or wont do that switch to DEbian/Cookbook > > But if you do the latter I suggest don't change things follow the > instructions > > What is interesting is a Linux C application program should work correctly > if it was coded generic especially when both Linux variants are for the > same chip. Trying to figure out what is different between Linux variants to > me is not productive its not my focus for you maybe it is. > > Perhaps the Linux in the SDK was configured differently which implies it > handle PRU slightly different Im not surprised by this. > > Perhaps you can find what's different that may be a valid approach that > works for you and maybe someone can help. I think Dennis gave you a good > clue. > > I will watch the thread hopefully I can be of help should you choose to > follow the path E2E and the SDK layed out for you > > Cheers > > On Friday, April 30, 2021, 07:52:09 PM CDT, Cheng Chen <chen...@gmail.com> > wrote: > > > Hey Mark, > > Thanks for spending time for replying. I really appreciate it. > I totally agree with you that one should spend time investigating first. I > apologize if they are dumb questions, but I have stuck there for two weeks. > I am more a circuit guy and just started picking up Beaglebone as a hobby > and potential career expansion. > > My first intention is to post in TI E2E support forums > <https://e2e.ti.com/>, but it requires a company email to do so. If this > particular .org is not a good place for rookie questions, would you please > advise some place for suitable for discussion? > > Regarding to the documents, are you referring to processor SDK Linux > Software Developer's guide? If that is the one, I did follow its > instructions, but maybe I missed something. I will go over it again. If > that's not the one, which document are you referring to? I also went > through PRUcookbook and Exploring BeagleBone by Derek Molly. Not a lot are > mentioned regarding this topic. > > The code is built-in in the Beaglebone Black, this is one of the reasons I > am confused why it cannot be compiled. One can also download freely from TI > github ( > https://git.ti.com/cgit/pru-software-support-package/pru-software-support-package/ > ). > > Again thanks for the advice and suggestion. I am very glad that there is > such a nice place that I can call for help and I hope after some practice I > am also able to contribute here. > > Regards, > Cheng > > 在2021年4月30日星期五 UTC-4 下午5:09:01<lazarman> 写道: > > 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 > <https://go.onelink.me/107872968?pid=InProduct&c=Global_Internal_YGrowth_AndroidEmailSig__AndroidUsers&af_wl=ym&af_sub1=Internal&af_sub2=Global_YGrowth&af_sub3=EmailSignature> > > On Fri, Apr 30, 2021 at 3:09 PM, Cheng Chen > <chen...@gmail.com> wrote: > > 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...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beagleboard/1d43aa7b-0e94-4431-9e31-13545213940bn%40googlegroups.com > > <https://groups.google.com/d/msgid/beagleboard/1d43aa7b-0e94-4431-9e31-13545213940bn%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...@googlegroups.com. > To view this discussion on the web visit > > https://groups.google.com/d/msgid/beagleboard/39813de1-fa27-41d7-9422-7ef375ae36b4n%40googlegroups.com > > <https://groups.google.com/d/msgid/beagleboard/39813de1-fa27-41d7-9422-7ef375ae36b4n%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...@googlegroups.com. > To view this discussion on the web visit > > > https://groups.google.com/d/msgid/beagleboard/88525d79-e91c-470f-9800-ab96cb985398n%40googlegroups.com > > <https://groups.google.com/d/msgid/beagleboard/88525d79-e91c-470f-9800-ab96cb985398n%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...@googlegroups.com. > To view this discussion on the web visit > > > https://groups.google.com/d/msgid/beagleboard/438168a2-e668-4e78-9892-573aa337158dn%40googlegroups.com > > <https://groups.google.com/d/msgid/beagleboard/438168a2-e668-4e78-9892-573aa337158dn%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/43d6c35f-85ab-404b-92e2-5db459ee88c6n%40googlegroups.com.