I’ve been thinking about whether to buy a HiFive and play around with it. I’d like to learn RISC-V in a nice and simple constrained environment.
A goal of mine would be to bit-bang to VGA using GPIO and draw some pixels. I’ve spent a while reading the documentation, and unfortunately my knowledge isn’t enough to answer my questions, so I’ll present them:
What’s the bandwidth/throughput/latency for reading from the SPI chip, writing to GPIO ports and reading from GPIO ports? How many clock cycles does it take to send a request then retrieve data from them? How much data do I get for a request?
Could I consistently say, seek portions of graphics and write them out to VGA based on some logic? I’ve seen pong on an Arduino, so I imagine the HiFive has it in it to write pong.
Does the instruction cache the scratchpad? Documentation says “The instruction cache will not cache instructions from an instruction scratchpad SRAM or mask ROM placed in the instruction pipeline”. Also, how does the instruction cache work? There’s 16KiB of room, so I assume I could slowly load some code from flash, warm it up in to the cache by executing it and then do my soft-realtime code while having the scratchpad be used for some tiny bitmaps. But I imagine it could cache or evict some stuff I don’t want evicted.
Some information on the timings and ideas for this project would be interesting. In the end I think I could get away with a black and white terminal display at the very least, but there might be some big blocks that I don’t see. Maybe the HiFive isn’t suited for this kind of work.