Originally, the first-level logo display continued from the uboot logo to the system animation, but it takes a long time to consider using the standard three-level logo. 1. uboot logo 2. kernle logo 3 initlogo. RLE animated bootanimation.zip. However, the kernel has a large modification to the framebuffer. Therefore, we consider displaying two logos at the beginning and end of uboot (the second logo shows calling before Thekernel () jumps into the kernel function) and skipping the kernel. Uboot directly refreshes the screen to display the second logo, which is slow and ineffective. The dual buffer policy is considered.
Ideas:
- It turns out that you only need to display a uboot logo: copy the boot. logo in NAND to LCD _base + fbsize, and then move it to LCD _base for display;
- Create the second framebuffer at LCD _base + 2 * fbsize. Copy the second logo in NAND to LCD _base + fbsize before the second logo is displayed, then move it to the second framebuffer base address of LCD _base + 2 * fbsize;
- Inform the LCD control register of the second framebuffer base address and update the framebuffer base address;
- But in the kernel, the register still points to the first framebuffer base address, so the second logo is like a flash, but this problem is well solved, since the second logo has moved into the second framebuffer, you only need to make a memcpy before entering the kernel.
Note: The logo is in BMP format and needs to be parsed before copying. For details, refer to the uboot resolution.Code, User-defined function.