U-Boot Logo and SPI LCD
U-Boot Display Flow
- Port the already-verified Linux panel initialization sequence to a U-Boot panel driver.
- Enable DISP, LCD, framebuffer, and BMP/logo support in the U-Boot defconfig.
- Check pin-mux conflicts with GMAC, SPI, PWM, and other functions.
- Configure backlight PWM, DISP, and LCD nodes in
uboot-board.dts. - Add a resource partition and package the logo image.
- Validate solid colors before testing the BMP logo.
Logo Image
- Use a BMP depth and compression mode supported by the bootloader; uncompressed 24-bit BMP is the safest default.
- Match the panel resolution to avoid bootloader-side scaling.
- Keep the file name, resource partition, and environment setting consistent.
- If U-Boot exceeds its size limit, remove unused commands, debug symbols, filesystems, and drivers.
SPI LCD/DBI Architecture
A typical implementation is:
U-Boot SPI controller -> DBI/panel driver -> framebuffer -> logo
Linux SPI controller -> panel/FB driver -> framebuffer or DISP -> LVGL/application
Device-tree example:
&spi0 {
status = "okay";
panel@0 {
compatible = "vendor,panel-model";
reg = <0>;
spi-max-frequency = <48000000>;
reset-gpios = <&pio ...>;
dc-gpios = <&pio ...>;
status = "okay";
};
};
Common Problems
| Symptom | Check first |
|---|---|
| Black screen | Power, backlight, reset, CS/DC, initialization sequence |
| White screen | Sleep-out command, SPI traffic, orientation, pixel format |
| Corrupted image | SPI mode, word width, RGB/BGR order, address window, excessive clock |
| Slow refresh | SPI rate, per-pixel writes, missing DMA/G2D, oversized update area |
| U-Boot works, Linux fails | Pin, clock, reset, or initialization differences between stages |
| Linux works, U-Boot fails | Missing U-Boot panel driver or incorrect resource/logo configuration |