Difference between revisions of "BeagleBoard/GSoC/2020 Projects/PRU Improvements"
(added how will it be done?) |
m |
||
Line 55: | Line 55: | ||
|- | |- | ||
| | | | ||
+ | } | ||
:Commands will be sent through RPMSG to the PRU and it will send a response, either SUCCESS or error a message, will be sent through RPMSG by the PRU to ARM. | :Commands will be sent through RPMSG to the PRU and it will send a response, either SUCCESS or error a message, will be sent through RPMSG by the PRU to ARM. |
Revision as of 09:03, 26 March 2020
Contents
Proposal for Implement a REPL interpreter for PRU
Student: Vedant Paranjape
Mentors: Kumar Abhishek, Jason Kridner
Code: [N/A]
Wiki: https://elinux.org/BeagleBoard/GSoC/2020Proposal/VedantParanjape2
GSoC: [N/A]
Status
This project is currently just a proposal.
Proposal
Completed all the requirements listed on the ideas page. the code for the cross-compilation task can be found here submitted through the pull request #138.
About you
IRC: vedant16
Github: https://github.com/vedantparanjape/
School: Veermata Jijabai Technological Institute (VJTI)
Country: India
Primary language : English, Hindi, Marathi
Typical work hours : 10AM - 7PM Indian Standard Time
Previous GSoC participation: I find embedded pretty interesting, given I have experience with ESP32, I think I will be able to excel in this project. This is the first time i am participating in GSoC
About your project
Project name: Implement a REPL interpreter for PRU
Description
- Introduction
- This project will enable the control of the Beaglebone's PRUs using remoteproc and rpmsg driver rather than using uio drivers. The PRU is a dual core micro-controller system present on the AM335x SoC which powers the BeagleBone. It is meant to be used for high speed jitter free IO control. Being independent from the linux scheduler and having direct access to the IO pins of the BeagleBone Bhilack, the PRU is ideal for offloading IO intensive tasks.
- Programming the PRU is a uphill task for a beginner, since it involves several steps, writing the firmware for the PRU, writing a loader program. This can be a easy task for a experienced developer, but it keeps many creative developers away. So, I propose to implement a REPL based control of the PRU, hiding all the low level things behind the REPL and providing a clean interface to uses PRU.
- How will it be done?
- PRU will run a firmware which will basically run a while loop, which will evaluate certain specified commands sent to it through RPMSG. Accordingly it will execute the described commands on the PRU. After taking a look at PRUSpeak, its command set enables to do advance PRU control. So,the decided commands are:
SET_PWM | Sets PWM output | ||||||||||||||||||||||||||||||||||||||||||||
SET_OUT | Sets HIGH/LOW value of an output pin | ||||||||||||||||||||||||||||||||||||||||||||
READ_IN | Reads HIGH/LOW value of an input pin | ||||||||||||||||||||||||||||||||||||||||||||
SET_MEM | Sets specified value to specified memory location | ||||||||||||||||||||||||||||||||||||||||||||
}
Timeline
Experience and approachI have decent experience in C++, C and Python. I have done several projects involving embedded systems like ESP32, I well-versed with freeRTOS. I recently did a project on ESP32, in which I used ESP to control and plot PID loop running on the embedded device, plotting the values on a python GUI. Other than that I have developed firmware for a 3 DOF arm based on a ESP32 custom board. I did a internship with a embedded deviced startup, where I built:
I actively contribute to open source and do a lot of mini projects throughout the year, you can find my several more interesting projects at my github page ContingencyI believe that if I get stuck on my project and my mentor isn’t around, I will use the resources that are available to me. Some of those information portals are listed below.
BenefitIf successfully completed, what will its impact be on the BeagleBoard.org community? Include quotes from BeagleBoard.org community members who can be found on http://beagleboard.org/discuss and http://bbb.io/gsocchat. MiscPlease complete the requirements listed on the ideas page. Provide link to pull request. SuggestionsIs there anything else we should have asked you? |