To get a UI output working on our linux environment, we have to sort things out on the hardware & software level.
Hardware-level
We must choose an output protocol: VGA, DVI, HDMI, or DisplayPort. This governs the display protocol & physical connector.
- Frame-buffer or video output HW blk
- Reads pixel data from dedicated RAM or system RAM
- Outputs video using a pre-defined protocol
- Often includes:
- Timing generators (according to the display protocol)
- Pixel clocks (PPL)
- Color space formatting
- Frame-buffer memory
- Memory-mapped region where CPU writes pixel data
- Common formats: RGB565, RGB888, ARGB8888
- Bus interface
- AXI or Wishbone
- The frame-buffer should be accessible via the CPU’s memory bus
Software-level
Optimizations / accelerations
- Add hardware support for:
- Blitting (short for bit block transfer)
- Cursor overlay (we can add it into the linux video processing pipeline)
- GPU-like acceleration
Experiment board IO
- VGA port
- 4.3” TFT LCD
- USB2.0
- PS2
- 4x4 click button matrix
- 8 toggle switches
- 4x2 7-segment LCD
- 8x8 LED matrix
- 16 LEDs
Plan of attack