= 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