Greg,

Very cool project! That's awesome that you were able to use the rpmsg 
character device to get the audio data up to user space and play it using 
the ALSA framework.

William,

There are 4 files needed in order to build a C project for the PRU using 
TI's C compiler. Each of the examples and labs in the 
pru-software-support-package include these files:

   - yourProgramFile.c
      - this is your C program that you are writing for the PRU
   - AM335x_PRU.cmd
      - this is a command linker file. This is the way that we describe the 
      physical memory map, the constant table entries, and the placement of our 
      code and data sections (into the physical memory described at the top of 
      the file) to the PRU linker. There are some neat things that can be done 
as 
      far as placing code and data in exact memory locations using this file, 
but 
      for the majority of projects, this file can remain unchanged.
   - resource_table_*.h
      - this file will create a header in the elf binary (generated .out 
      file) that is needed by the RemoteProc Linux driver while loading the 
code 
      into the PRUs. For the examples in the pru-software-support-package, 
there 
      are two types of resources that the PRU can request using the 
      resource_table_*.h file:
         - interrupts - letting RemoteProc configure the PRU INTC 
         interrupts saves code space on the PRUs
         - vrings - requesting vrings in the resource_table file is 
         necessary if rpmsg communication is desired (since the ARM/Linux needs 
to 
         create the vrings in DDR and then notify the PRU where the vrings were 
         placed)
      - even if no resources are needed, the RemoteProc Linux driver 
      expects the header to exists. Because of this, many examples in the 
package 
      contain an empty resource_table header file (resource_table_empty.h)
   - Makefile
      - Makefile to build your PRU C program either on the target, on your 
      Linux machine, or even on a Windows machine. The comment at the top of 
the 
      Makefile tries to explain the environment variable needed for a 
successful 
      build and how to set it on each of the 3 supported build development 
      environments.
   
Check out the am335x examples in the pru-software-support-package. You can 
ignore (or even delete) any of the hidden files/folders in the examples as 
they are only used by CCS (.settings/, .ccsproject, .cproject, .project), 
which is not needed if you are using the Makefile to build. Once you ignore 
the hidden files/folders, you'll see that the examples provided include the 
above referenced 4 files and can be built by setting the PRU_CGT 
environment variable and typing 'make'.

In the last image that I put on my BBGW (from Robert's site) the PRU C 
compiler and the pru-software-support-package were all included in the file 
system out of the box. So, all that is needed to build the examples on the 
target is to create a symbolic link to the cgt-pru/bin/ folder, export the 
PRU_CGT variable, and then navigate to the examples folder (somewhere in 
/usr/share/ I think) and type 'make'. The symbolic link and exporting the 
PRU_CGT variable are described at the top of the provided Makefiles.

Let me know if any of that is unclear or confusing.

Jason Reeder

On Sunday, October 30, 2016 at 9:17:46 PM UTC-5, Greg wrote:
>
> New youtube video for the project:
>
> https://youtu.be/FzmRYEzsuLA
>
>
>

-- 
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/09761424-ad29-41f9-97c2-2b9a40b4cbda%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to