This is final update for my GSoC2020 project PRU Improvements, my mentors are Kumar Abhishek, Pratim Ugale and Andrew Henderson. I will report my weekly progress through this thread,
I have also created a github page for tracking my daily progress and to document sources used to learn about tools used, you can check my blog at this link: https://ve0x10.me/gsoc2020/
Accomplishments throughout the project:
The following major features have been implemented by me:
- Commit logs for simppru: https://github.com/VedantParanjape/simpPRU/commits?author=VedantParanjape
- Commit logs for docker files: https://github.com/VedantParanjape/simppru-build-dockerfiles/commits?author=VedantParanjape
- Docker image for amd64 on dockerhub: https://hub.docker.com/repository/docker/simppru/amd64-build-image
- Docker image for arm32 on dockerhub: https://hub.docker.com/repository/docker/simppru/arm32-build-image
- simpPRU compiler supports statically typed variables.
- It supports integer and Boolean variables.
- It has ability to assign variables during declaration.
- Variables can be re-declared after declaration.
- It supports if-else-elseif loop.
- It supports while loop.
- It supports range based for loop.
- It supports arithmetic operators.
- It supports comparison operators.
- It supports logical operators.
- It supports unary operators.
- It supports functions, with return types int, bool and void.
- It supports control statements like break and continue.
- It fully supports expressions (arithmetic and logical).
- It can load binary into /lib/firmware according to selected PRU.
- It can auto set pin-mux using config-pin, by extracting the pins used in the code.
- It auto detects Beagle Board model and manages the pin-mux settings, this doesn’t work in BB AI.
- Provides pin numbers as constant variables, like if P1_31 points to PRU R30 register bit 12, then one can use P1_31 and 12 interchangeably.
- It has native support for PRU-ICSS peripherals, namely GPO and GPI control using R30/R31 registers, Delay function, IEP’s hardware counter, and RPMSG API to communicate with ARM core.
- simpPRU-console is a console GUI application, it can start/stop the PRU’s, and also send/receive integers to the PRU using RPMSG, It displays the received messages in a serial monitor like fashion.
- It auto detects Beagle Board model and accordingly updates the number of PRU’s.
CI/CD for simppru debian package
- Created docker files for building simppru for armhf and amd64 systems.
- Setup CI/CD using GitHub actions, on every push/pull request simpPRU is built for arm32 and amd64 arch on GitHub actions using docker images.
- New Debian packages are released upon sending a POST request to a web-hook. Clean docker images are pulled and generated Debian package is pushed to GitHub artifacts, after which a GitHub action releases those packages.
Other than that, I also contributed to two open source tools that made this project possible
Commit logs: https://github.com/dinuxbg/gnuprumcu/commits?author=VedantParanjape
- Added PRU I/O register definitions for AM572x processors.
- Updated Register definitions of AM335x according to the Technical Reference Manual Revision 3.
- Fixed minor mistakes in AM335x Register definitions.
Commit logs: https://github.com/ArthurSonzogni/FTXUI/commits?author=VedantParanjape
- Added on_enter method to toggle component.
- Added tests for OnEnter event in toggle component
It has been a really amazing experience for me. I have learned so much in these 15 weeks, which will surely help me achieve my future goals in life. I would like to thank beagleboard.org and Google for giving me such an amazing opportunity. I would also like to thanks my mentors Abhishek, Pratim and Andrew for helping me out and supporting me through out the project, also all the other mentors and organization admin, namely Cathleen, Jason and Saketh who supported me throughout the period, and making sure that I received all the required hardware on time.
Last but not the least, I would like to thank all my peers, namely Deepankar, Deepak and Niklas for helping me out with issues.
Final Video: https://www.youtube.com/watch?v=MeRsCG6O_vw
Project wiki: https://github.com/VedantParanjape/simpPRU/wiki