Hello,
I would like to ask one question related to porting C++ libraries using "Vivado HLS". I have encountered some dificulties when I was trying to port Arduino libray for small 1,3 inch OLED display. Here is the link for that OLED display:
https://www.waveshare.com/1.3inch-oled-a.htm
I would like to attach this display to my project based on Xilinx Spartan3 board (Elbert V2 board).
I was looking for existing code (VHDL or Verilog) for this purpose, but it was unsuccessful.
Then I decided to use "Vivado HLS" as solution for my problem. I have made few attempts to port simple general C++ libraries, and there were encouraging - generated code was readable and understandable. What was nice it also been generated in three languages: VHDL, SystemC and Verilog. After that I decide to try porting this Arduino library:
https://github.com/adafruit/Adafruit_SSD1306/blob/master/Adafruit_SSD1306.cpp
And after some time I stalled with this task. The reason is that this library is dependent on more specialized libraries that are depending on hardware (in this case AVR ATmega microcontroller). I mean te dependency of internal hardware details of AVR microcontrolerr like internal registers, timers and interrupts.
And this is my question:
How to implement hardware related parts during porting C++ libraries to HDL language using Vivado High Level Synthesis.
So far I found some hints how to simulate interrupts:
https://https://www.edaboard.com/threads/6393/
https:///github.com/kevinpt/vhdl-extras/blob/master/rtl/extras/interrupt_ctl.vhdl
, but the problem is more general (I also mean libraries from other hardware like STM32, ARM etc.)
Coulkd I ask for some advices for my issues?
Best regards