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.

PROCESSOR-SDK-AM64X: Deeper dive substantive training on the PRU

Part Number: PROCESSOR-SDK-AM64X

I have been looking to find out more about using the PRU units on the AM64xx

I have found some training info on ti.com but it doesn't go much further than very prefunctory videos showing very high level videos of PCBs running demo firmware. Other stuff I found seems to assume we're using a Beaglebone and Linux (we're not).

I found some "labs" formerly on the now dead processor wiki, but again they focus on loading pre-canned examples and don't describe how the code works and where it comes from. 

I have the full PRU documentation, but it's a bit like being handed a foreign language dictionary: you can look up the words but it doesn't help you speak the language or understand the culture.

We also have some code supplied by a TI Apps engineer but it is pretty hard to follow: lots of hardcoded hex numbers being poked into registers and memory without explanation as to what they are doing and why.

Is there anything in existence that has some meat to it and explains the process of setting up and configuring the PRU, using peripherals to talk to the outside world, and events and data exchange with other cores (not using Linux)...?

Pointers to good info are appreciated.

Andy

  • Hello Andy,

    Summary

    You are looking for documentation at the right time! We released AM64x Linux SDK 8.0 today, which adds support for using RemoteProc to load PRU cores. There are a lot of changes to AM64x PRU documentation and examples coming in the next couple of weeks.

    Migrating the PRU Wiki Docs

    I am almost done migrating the PRU information from the processor wiki into the Processor SDK Documentation. You can already find the migrated PRU Hands-on Labs in the AM64x Linux SDK 8.0 documentation here:
    https://software-dl.ti.com/processor-sdk-linux/esd/docs/08_00_00_21/common/PRU-ICSS/PRU-Hands-on-Labs.html

    Note that the hands-on labs were designed specifically for the AM335x Beaglebone Black, so you would need to get an AM335x beaglebone black board to do the I/O signaling. Also, Linux A53 <-> R5 RPMsg got ported from Linux 5.4 to Linux 5.10, but Linux A53 <-> PRU RPMsg did not get ported for SDK 8.0. So the concepts of GPI/GPO signals, debugging the PRU with CCS, and using Linux RemoteProc to load the PRU all apply, even if the specific details do not.

    What can I run on the AM64x right now?

    Ok, so what about code that you can ACTUALLY run on the AM64x without a problem? Take a look at the PRU Software Support Package (PSSP)
    git.ti.com/.../
    labs/Getting_Started_Labs

    As soon as I finish migrating the wiki pages, I'll finish writing the getting started labs documentation. Until then, you can find my first draft of running the PRU Getting Started Labs on your AM64x at this post:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1002513/processor-sdk-am64x-linux-remoteproc-support-to-boot-start-am64x-pru/3704114#3704114

    The ICSSG in AM65x and AM64x are very similar, so you should be fine using the AM65x projects to get started

    What about the rest of the PSSP? 

    AM64x is officially getting added sometime soon! Since you can get started by just using AM65x projects, I am focusing on getting the basic documentation live first.

    Regards,

    Nick

  • I had similar questions about overall dev workflow documentation showing how to tie Linux app development and PRU/R5F development all together in a cohesive way.

    Although details would be nice, even a few high-level cartoons showing 1 or 2 typical workflows where you are doing edit/compile/debug on an A53 app, and edit/compile/debug on an R5F/PRU app would be a great help. 

    The A53 part by itself seems obvious, the R5F by itself  (if CCS/XDS110 starts working for me) looks plausible, but all tied together seems mystifying.   No I haven't gone down the PRU route, but the overall question is analogous.

    Not clear to me how BeagleBone based examples help.

  • Hello Howard,

    Updates after talking with some of our team members:

    There is not a single unified development environment. There is a different development flow for Linux processors (A53) than for RTOS / bare metal processors (R5). The PRUs need to be initialized by another core in the final design, but they are also typically developed in a third separate flow. Inter-processor communication is the part where you need to think about multiple cores at once.

    We have a Webinar scheduled for September 21 that will be called "AM64x Software Overview". As a part of that webinar, we will cover development flows. Feel free to attend and ask questions.

    The webinar will be announced here soon:
    https://training.ti.com/process-monthly-webinar-series

    Regards,

    Nick

  • Thank for the update Nick.  Would love to attend the webinar.

  • Update for future readers:

    The PRU Getting Started Labs are live in processor SDK docs starting with SDK 8.3 (8.4 for AM64x). e.g., link for SDK 8.6 is here:

    https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/08_06_00_42/exports/docs/common/PRU-ICSS/PRU-Getting-Started-Labs.html

    Regards,

    Nick