Skip to content
Vedant Paranjape edited this page Aug 24, 2020 · 33 revisions

simpPRU

This is Google Summer of Code 2020 project under beagleboard.org aimed at achieving:

  1. Provide a simple to use language to write code for the PRU
  2. Provide a simple to use way to start/stop PRU and send/receive messages through RPMSG framework, without the need to write to various sysfs interfaces

Project Details

Table of contents

Brief overview of PRU-ICSS

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 Black, the PRU is ideal for offloading IO intensive tasks.

It is a low-latency microcontroller subsystem present on BeagleBoard devices, which provides real-time processing capability lacking in Linux. PRUs are part of the PRU-ICSS, “Industrial Communications SubSystem”. They are free from running on an operating system, and thus can be dedicated to a single function.

The PRU cores were created to be non-pipelined, single-cycle execution engines. This means that all instructions (except for memory reads and writes) complete in a single cycle. Since there is no pipeline, the PRU cores are completely deterministic: the PRU cores will not rearrange instructions during execution.

The PRU-ICSS can also read from or write to external pins in a single cycle using a PRU core register (R30). With a PRU core running at 200 MHz, this means that an external signal change can be detected in as little as 5 nanoseconds. This also means that the PRU can toggle external pins with as fast as 5 nanoseconds.

What was the need for simpPRU ?

How does simpPRU simplify things ?

Implementation details of simpPRU

Building from source

Installation from compiler binaries

Work Summary

Things to be implemented in Future

Conclusion

Known Issues

Notes

Clone this wiki locally