Skip to main content

U-Boot Logo and SPI LCD

U-Boot Display Flow​

  1. Port the already-verified Linux panel initialization sequence to a U-Boot panel driver.
  2. Enable DISP, LCD, framebuffer, and BMP/logo support in the U-Boot defconfig.
  3. Check pin-mux conflicts with GMAC, SPI, PWM, and other functions.
  4. Configure backlight PWM, DISP, and LCD nodes in uboot-board.dts.
  5. Add a resource partition and package the logo image.
  6. 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​

SymptomCheck first
Black screenPower, backlight, reset, CS/DC, initialization sequence
White screenSleep-out command, SPI traffic, orientation, pixel format
Corrupted imageSPI mode, word width, RGB/BGR order, address window, excessive clock
Slow refreshSPI rate, per-pixel writes, missing DMA/G2D, oversized update area
U-Boot works, Linux failsPin, clock, reset, or initialization differences between stages
Linux works, U-Boot failsMissing U-Boot panel driver or incorrect resource/logo configuration