Hello Jason and fellow community members,
This is Kumar Abhishek, a Second Year Student at the Indian Institute of Technology, Kharagpur. I have been pursuing electronic circuit-building (with microcontrollers) and computer programming (in C, C++, C# and Java) as a hobby since I was 12 years old. I have had experience working with 8051, AVR (bare metal) and STM32 microcontrollers with RTOS, and a lot of peripherals and LCDs before. I have recently been exploring various aspects of the BeagleBone Black, and have been fascinated by its capabilities.
One of the ideas that came to me for a project was to use the PRU on the BeagleBone Black to build a full-fledged logic analyser with support for decoding various protocols. This would exploit the PRU R31 GPI Mode direct connection to capture PRU0 to PRU15 inputs. The maximum possible sample rate would be 100 MHz, and the aim of the project would be to get as close as possible to this rate and also provide, if possible, a web-based front-end to the user, accessible via RNDIS or Ethernet, from almost any PC, smartphone or tablet.
When I did an initial search, I found out that there have been projects that exploit the PRU functionality and data capture, like this one or http://linux.thaj.net63.net/2014/01/logic-analyzer-with-your-beaglebone.htm. However these were only basic proof-of-concept projects. These applications, if welded together into a proper framework will be able to turn the BeagleBone Black into an open and inexpensive instrumentation toolbox indispensable for any budding hacker.
The project would be split into two parts:
-
The core / data capturing back-end: This would be responsible for capturing GPIO data using the PRU, combined with user mode / kernel mode code for the maximum throughput. Setting up triggers, etc would be taken up by this layer. Also support for protocol decoding plug-ins will be added here.
-
The front-end:
-
The preferred front-end will be a web-based UI similar to a standard logic analyser interface, displaying captured waveforms and decoded data.
-
There are also two alternative ideas for the front end:
-
A standalone device with a display and GUI. However the PRU pins are shared with the HDMI Framer, the onboard eMMC, the external microSD Card cage and UART0 and a configuration of all the 16 PRU pins will render at least one of these peripherals inaccessible
-
Transporting the data over USB for use by a pre-existing PC client, like the SUMP logic analyzer tool [simplest but least preferred, as it would not be able to fully utilize the faster Cortex-A8 processor for processing and user interface, which it is certainly well capable of]
I would like to hear from you on the above proposal. I am excited to see the possibilities with the BeagleBone and I look forward to working with the BeagleBoard community in the near future.
Best Regards
Kumar Abhishek
Undergraduate Student
Department of Electronics & Electrical Communication Engineering
Indian Institute of Technology, Kharagpur