GSoC 2018 Proposal: Update PRU Python loader--Bill Morrisson

Revision as of 09:05, 22 March 2018 by Spiritus (talk | contribs) (About your project)
Jump to: navigation, search

Bill M. GSoC Proposal


Student: Bill Morrisson Talla
Mentors: Jason Kridner Kumar Abhishek


This project is currently just a proposal.


This project will be done in 3 deliverables.

1 Implement remoteproc function calls in PyPRUSS.
2 Implement RPMsg functions.
3 Update PyPRUSS to newer images

About you

IRC: spiritus
School: Bishop's University, Sherbrooke, Quebec
Country: Canada
Primary language (We have mentors who speak multiple languages): English
Typical work hours (We have mentors in various time zones): 8:00 AM to 05:00 PM UTC
Previous GSoC/Open Source participation: I helped with a little test here but nothing big: Nevertheless I have no major experience but I'm excited to join the open source community.

About your project

Project name: Update PRU Python loader
Task Completion: A "Hello World" application has been created,cross-compiled using GCC-ARM tool chain and executed using QEMU. A Pull request has been generated for the same.Please find the link here.


This project is to update PyPRUSS such that it can loaded with remoteproc support to enable developers program PRUs using a Python wrapper when Python is be the better choice for the implementation on the said PRUs at hand.
PyPRUSS has been using the UIO interface with the modprobe() function specifically to be able to load the firmware but it comes with its own problems due to the fact that it's very old and not does not assume newer BeagleBone images. It was primarily focused on the earlier Angstrom firmware for the BeagleBone Black.
The current proposal for the project aims to enable the PRUs to be loaded with firmware using a Python API, move examples, show RPMsg functions and to add support for newer BeagleBone images to PyPRUSS.
Remoteproc support will be implemented in PyPRUSS such that the various controls of the PRUs will be done with Python by trying to follow the same way the sysfs interface is exposed to the Userspace to start/stop the PRUs cores as well as specify the firmware to load. Then RPMsg functions will be shown by "catching" the buffers that will be provided by the remoteproc module during PRU firmware loading. This will be a major advantage for all developers who have a larger project already done in Python and are wanting to have a specific part done through PyPRUSS.


27 April – 24 May (4 weeks) Community Bonding

Initiating communication with mentors, better familiarization with FreeWRL source code, isolating parsing bits of source code and ensure code compiles within BRL-CAD.

25 May – 11 June (2 weeks)

Implement load(...) function. Test and ensure node are entirely parsed and threads are successfully terminated after scene graph is obtained.

12 June – 20 June (1 week)

Implement doColor(...) function to traverse scene graph and obtain geometry node colour from shape component Material node. Write unit test to evaluate function.

21 June – 29 June (1 week)

Implement doTransform(...) function to traverse scene graph and obtain geometry node parent transform value and apply on node. Write unit test to evaluate function.

30 June – 3 July (3 days) Mid term evaluation

3 July – 16 July (2 weeks)

Add support for rendering component.

17 July – 1 August (2 weeks)

Add support for Geometry3D component.

2 August – 9 August (1 week)

Implementing x3d-g.cpp. Code cleanup, documentation and test converter functionality

10 August – 16 August (1 week)

Begin work on g-x3d exporter.

17 August – 23 August (1 week) Suggested 'pencils down'

Conclude work on x3d importer. Code cleanup, documentation and testing.

24 August – 28 August (4 days) Final Evaluation

Experience and approach

I have done projects on Raspberry Pi before and therefore will be comfortable enough to implement this project on a Pocketbeagle.I am quite new to Speech recognition,so I have been doing required background work to implement these functionalities on Pocketbeagle and therefore can assure you that I will be able to complete the Phase-1 in planned time.I had only done some basic projects on python before and therefore planning to spend most of Phase-2 to build the games.Most of the time in phase-3 will be spent on documenting the whole project as it is very essential for it to be reproducible later .


What will you do if you get stuck on your project and your mentor isn’t around?
I will ensure that probability of this happening is less by planning things in advance.I will also check with the community whether they have a backup mentor provision.I will communicate the coding issues with the community or students working on similar projects to see if someone can help. Else I will contact the organisation administrator to talk about the issue and make sure the work is not delayed in the mean time by documenting the finished work.


If successfully completed, what will its impact be on the community? Include quotes from community members who can be found on and
"Speak&Spell" was more than just a popular kids toy,it should be better described as a blueprint for the devices we use today.Until its invention, real time speech synthesis was defined to be impossible.Implementing and Updating its functionality for the present day kids is a perfect way to celebrate its importance in the development of Signal processing technology.


Is there anything else we should have asked you?
I am currently pursuing my Bachelor's degree in Electronics and Communcation Engineering and I am good in C and Python programming.I have no other commitments this summer and can dedicate my entire time for the project.