This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Using PRUSS with ARM3359

Other Parts Discussed in Thread: DA8XX

Using a beaglebone with TI linux kernel 3.1.  I notice the PRUSS support files do not yet include support for the 335x Sitara, but seem to include the davinci 850 evm board.  Also, in the 335x TRM it notes that Pasm v2 would be required, and I don't see this anywhere on the TI website.

Any idea when linux PRUSS support for the Sitara line (3359) will be available??

Thanks!

  • It's unfortunate that questions like this seem to go unanswered on the forum, but if you ask T.I. support they direct you to the forum anyway.  This seems to me to be a problem.

    I can't really find evidence that what you're asking for exists.  I need it as well.  Looking at the pruss "patch" it's doing a couple of things:

    • Set a kernel .config option.  You don't need that, you can do it yourself.  If it exists for the am335x arch.  Which it may not.
    • It sets up a call to da8xx_register_pruss() in the platform initialization for the davinci 850 EVM.  Not helpful for us.
    • It routes clocks to the PRU
    • Sets up events, so they show up in the MPU's space
    • Adds a file named drivers/uio/uio.pru.c to the kernel source tree. I don't think we need this - search your kernel source tree for uio_pruss.c and if it's either a recent angstrom build, or it's ti-sdk-am335x-evm version linux-3.0+3.1-rc8-psp404.05.00.03.sdk or later, then I think it's there under the latter name.

    I don't understand uio_pruss.c but in pruss_probe() it seems to be allocating a clock, then calling clk_enable().  It also seems to set up an interrupt handler then register the PRUSS events to that handler.

    What I'm suggesting is that it might work for you having to do not much more than reconfigure/compile the kernel and build the userspace library.

    Good luck, and please update us on your progress.

    --Chris

  • I did find some sample code from a guy who did it all just using direct register accesses.  I haven't had time to try this, but his example was complete enough that if I have to, I can work most of the PRUSS from either userspace or kernel space using mmap/ioremap calls.  I do this a lot anyways when accessing gpio pins, so I think it wouldn't be that bad.....although I'd have to get quite familar with all the PRUSS registers....which isn't that big a deal.

    I'll post an update if I get an example rolling.  Perhaps this would give us folks on "the edge" enough PRUSS to do what we need without having to worry about the state of the sdk.....

  • I think that would be best anyway.

    Manipulating the PRU from userspace seems very dangerous to me, especially if you're doing things like allocating buffers and passing said buffers physical address to the PRU to operate upon it.  I don't see any real protection in the uio_pruss driver that would put the PRU into a halted state in the event that your userspace application crashed, got killed with a SIGKILL or similar.

    But, perhaps what I'm worried about is all handled in the UIO layers, and I just don't know any better, since you start using UIO by open() and mmap().

  • The only official PRUSSv2 feature set supported by TI is the Industrial communications protocols included in the Industrial SDK: http://www.ti.com/tool/sysbiossdk-ind-sitara. However, the PRUSSv2 PASM is going to be made available to the BeagleBone community in the end of March timeframe for do-it-yourself (DIY) users who want to get their hands on the tool and use it at their own risk.

  • mwatkins said:

    The only official PRUSSv2 feature set supported by TI is the Industrial communications protocols included in the Industrial SDK: http://www.ti.com/tool/sysbiossdk-ind-sitara. However, the PRUSSv2 PASM is going to be made available to the BeagleBone community in the end of March timeframe for do-it-yourself (DIY) users who want to get their hands on the tool and use it at their own risk.

    I'm missing something here, we can't use the PASM we already have access to?  Is it a different instruction set than what was in the davinci, etc. ?
  • That is very good news!!!

  • Based on that, there are going to be a lot of happy people ... if this information is accurate.  How confident are you that it will be released in March?

  • Hi Chris,

    I do not anticipate any delays to the end-of-March time frame availabity of pasm_2 to the BeagleBone community.

    To answer your original question, the PRUSSv2 instruction set is similar to the legacy PRUSS.  However, pasm_2 and the -PRUv2 command line are required to support new instructions available on PRUSSv2.   

    Regards,
    Melissa

  • Greetings!

    March has come and gone.

    Did I miss the announcement of the pasm_2 release to the BeagleBone community?

    Gerry Belanger

  • Hi Gerald,

    We have had delays and are now targeting the end of April.

    Regards,

    Melissa

  • I am deeply concerned.  I was hoping for a new PASM (with v2 instructions) soon.  I heard rumors that the reason for the delay of PASM v2 is that it's being released as part of an SDK, and that the whole SDK isn't available.

    However, someone on the Beagle community noticed something that disturbs me.

    A new Technical Resource Manual has appeared, rev "D" and the PRU section has been renamed to PRU-ICSS and -- this is the key part -- ALL THE CONTENT HAS BEEN REMOVED.

    I have a bad feeling TI has decided that, not only is the PRUSS not supported, but that it is now to be considered undocumented as well, unless one was fortunate enough to keep an older copy of the TRM.

    Can somebody from TI comment on what is happening here?

    --Chris

  • Hi Chris,

    The TRM has been updated to better reflect the supported PRUSSv2 feature set (the Industrial communications protocols included in the Industrial SDK: http://www.ti.com/tool/sysbiossdk-ind-sitara).  This included both renaming the PRUSS to PRU-ICSS (Industrial Communication SubSystem) and removing PRU technical details.  

    However, these PRU technical details will still be provided to the open-source community .  The PRU assembler will be released to the open-source community as part of a PRU support package.  This package will also include a PRU-ICSS chapter addendum to the TRM (containing all PRU technical details), a PRU application driver, and several basic PRU examples. 

    I apologize for any concerns generated by rev. D of the TRM. 

    Regards,

    Melissa

  • Hi Chris, Melissa, and others on this discussion,

    Thanks for asking these questions.  I'm also needing to use the PRUSS to do some real-time signal handling and need to figure out how to use it in fairly short order.

    Melissa, thanks for your answers!  Since it's getting to be the end of April, can we get links to this support package?  Some simple examples on how to set it up with a beagle-bone would be awesome too.  And an assembly language reference for the PRU assembler.

    I need to do some digital input and output using the PRUSS for my project.

         Fritz

  • All,

    A package with PRU-ICSS documentation, assembler and basic sample code has been posted on the github for the BeagleBone community. Note that this package is intended for do-it-yourself (DIY) developers to use AS-IS, without warranties, and at-your-own-risk. That means that such package in github will NOT be supported by TI (www.ti.com, e2e.ti.com). Community support is offered at BeagleBoard.org/discus.

    The AM335x TRM that is available from TI’s website has been updated to reflect the TI-supported PRU-ICSS feature set (the industrial communications protocols included in the Industrial SDK: http://www.ti.com/tool/sysbiossdk-ind-sitara). However, there will be a document added to the github later this month with the PRU-ICSS details. It has not been posted there yet because it is still undergoing reviews.

     Regards, Carlos

  • Carlos,

    Excellent.  Many thanks to all the folks at TI who are making this happen!

       Fritz