Control an external ADC using Programmable Real-Time Unit (PRU) Subsystem on Beaglebone Black used as embedded HPC-performance-monitoring device
In recent years, energy-efficiency is becoming a key challenge in the High Performance Computing (HPC) domain. Indeed, while the demand for more powerful supercomputers is constantly increasing, integrated computing architectures are facing power/thermal challenges that are limiting the performance benefits of technology scaling. However, even if energy-efficiency is of primary interest, such infrastructures have a limited introspection on the measurement of power and energy dissipated at run-time. Aiming at bridging this gap, we designed and developed at IIS, in collaboration with some Commercial Partners, a scalable and highly accurate power-consumption monitoring framework, based on a state-of-the-art embedded monitoring device (namely a Beaglebone Black) and a power-sensing-board placed at the node power-supply.
Goal of this Project → The project will cover mainly two phases:
- design and implementation of a printed circuit-board (we called it “routing-board”) which will be interposed in-between the Beaglebone Black and our power-sensing-board at the node power-supply. Such routing-board will integrate a high-speed high-resolution ADC, which will be controlled by the built-in Programmable Real-Time Unit (PRU) of the Beaglebone Black Board.
- write the PRU software side code (C Language/Assembly) to control the external ADC through the I/O pin of the Beaglebone Black (e.g. using I2C, SPI, ...).
- Good knowledge of C programming.
- Experience with embedded software and serial communication protocols (e.g. I2C, SPI).
- Experience using laboratory instrumentation (signal generators, oscilloscopes, etc.) and knowledge on printed circuit board (PCB) using Altium would be an asset.
- 20% Theory
- 50% Implementation (C programming for Linux kernel)
- 30% Testing
Detailed Task Description
- AM335x Sitara Processor Datasheet
- AM335x Sitara Processor TRM
- Programmable Real-Time Unit (PRU) Subsystem