wiki:GSoC/2019/PRU_support

Version 2 (modified by Nils Hölscher, on May 9, 2019 at 6:35:19 AM) (diff)

--

Add PRU-ICSS loader/driver to RTEMS

Student: Nils Hölscher

Mentors: Amaan Cheval, Kuan-Hsun Chen, Chris Johns, Sarvesh Patkar

Ticket: https://devel.rtems.org/ticket/3730

Development Blog: TBA

Introduction

This Project intends to add the PRU support to RTEMS, using the Beaglebone Black (BBB). The BBB has an Texas Instruments AM3358 SoC [3][4] with an Programmable Real-Time Unit (PRU). The PRU is able to connect to the SoC s i/o within one cycle. This will enable the RTEMS community to develop heavily i/o dependent tasks on the Texas Instruments SoC s with PRUs. For more Information about PRU see [5].

Starting Point

Since the Beagle Board community already uses the PRU, I will start by trying out their drivers.[1][2] After reproducing these results with the Linux, the drivers have to be ported to RTEMS to reproduce these Results on RTEMS.

Proof of Concept

Since the PRU is designed to be more predictable than your normal CPU, it is able to access I/O peripherals in a deterministic manner. This behavior will be used to demonstrate that code is running on the PRU and not the CPU. The PRU is able to output a square wave with constant small wavelength on the BBB s Pins. The SOC s CPU is not capable of this, due to pre-emptive behaviour of most OS s.

References

[1] Drivers - https://github.com/beagleboard/am335x_pru_package

[2] PRU guide for BBB - http://www.righto.com/2016/08/pru-tips-understanding-beaglebones.html

[3] AM3358 TI Documentation - https://www.ti.com/lit/ds/symlink/am3358.pdf

[4] AM335x TI Technical Reference Manual - https://www.ti.com/lit/ug/spruh73p/spruh73p.pdf

[5] eLinux Pru Documentation - https://elinux.org/Ti_AM33XX_PRUSSv2