Making use of hardware is much harder than owning it, especially when we speak about uniquely designed SBCs such as Parallella. Why? Because problems that can be solved best with parallel computing are hard...
In previous posts, we were introduced to the hardware and made it operational with the kernel module. Soooo... (drum rolls) it's time to write and run a program on the Epiphany chip! But how can one do it? What compiler do I use? What "language" does the Epiphany chip understands? Is it C, C++, assembly, binary, or what?
In this article, dive into the existing Epiphany kernel module, break it into parts and investigate its functions. Analyzing a few thousands of lines of code is not that exciting, so we are going to pretend the driver doesn't exist and write it from scratch. The empirical approach will help us understand the Kernel <-> Epiphany communication better, and that will become crucial for the project we'll implement at the end of the series.
Parallella board is equipped with a powerful 16-core Epiphany coprocessor. In this post, we dive into hardware design, learn about FPGA, and analyze datasheets to answer the question, "what does make the parallella board special?".