Cómo hacer que uboot muestre el logotipo al inicio
Estoy usando la versión 2009.08 de u-boot.
El método es realmente muy simple. Simplemente reemplace denx.bmp en el directorio tools/logos de u-boot y luego vuelva a compilar (es posible que necesite ejecutar make clean y luego make para que la nueva imagen
para que entre en vigor). El tamaño de la imagen no debe exceder las dimensiones de la pantalla y la profundidad del color no debe exceder los 256 colores, que es una imagen con profundidad de color de 8 bits.
Sin embargo, si no quieres reemplazar denx.bmp y quieres usar tu propio archivo de imagen, por ejemplo, usé el archivo rat-linux.bmp y eso no es problema. Copie su archivo
al directorio /tools/logos y luego modifique el archivo MAKE en el directorio /tools para encontrar el siguiente fragmento de código
ifeq ($(LOGO_BMP),)
p>LOGO_BMP= logos/denx.bmp
endif<
ifeq ($(VENDEDOR),atmel)
LOGO_BMP= logos/atmel
endif
ifeq ($(VENDEDOR),ronetix)
LOGO_BMP= logos/ronetix.bmp
endif
Simplemente cambie LOGO_BMP= logos/denx.bmp a LOGO_BMP= logos/rat-linux.bmp. Después de recompilar, su imagen debería funcionar bien.
Cómo crear el logotipo de inicio de U-boot
En U-boot que implementa pantalla LCD y terminal de línea de comando LCD, se mostrará un logotipo en la esquina superior izquierda, si es así. un chip atmel, habrá el logotipo de atmel y el de Samsung será el logotipo de denx.
Algunos de nuestros usuarios me enviaron correos electrónicos y dijeron que les gustaría cambiarlo por el logotipo de mi propia empresa y, si te diviertes con ello, también sería genial cambiarlo por tu logotipo favorito. . Así que hoy hice un buen experimento y resumí el método de modificación simple de la siguiente manera:
Una imagen de la ruta
Todos los logotipos de inicio se colocan en /tools/logos A continuación, solo necesitas para reemplazar su clase con el logo correspondiente.
Para S3C2440 simplemente reemplaza denx.bmp con el logotipo que desees.
Para los chips ATMEL, se dice que se mostrará el logotipo de ATMEL, así que simplemente reemplace ese logotipo.
Sin embargo, el logotipo reemplazado debe tener exactamente el mismo tamaño y formato que el logotipo original; de lo contrario, se producirá un tiempo de inactividad y un reinicio al usar u-boot.
Segundo, tamaño de imagen estándar
Diferentes logotipos corresponden a diferentes tamaños. El S3C2440 aquí corresponde a una imagen BMP con una resolución de 160 * 96.
3. Script de conversión de imágenes
Al crear imágenes, asegúrese de que el paquete de herramientas Netpbm esté instalado en su host Linux. Si es ubuntu, puedes usar Sunrise para instalarlo directamente; si es otra distribución, puedes descargar el código fuente desde la página de inicio de Netpbm y compilarlo.
Recorta la imagen en un formato JPG de 160*96 y luego procésala con el siguiente script:
#! /bin/sh
#install Netpbm primero
jpegtopnm $1 | ppmquant 31 | ppmtobmp -bpp 8 > $2
Uso: (nombre del script) (obligatorio Procesado Nombre JPG) (nombre del archivo de salida)
2.2.6 Los datos del logotipo se encuentran en /drivers/video/logo y el archivo ppm es la imagen del logotipo. Cada ppm corresponde a un archivo .c que incluye el tamaño de la imagen, la paleta de colores, los datos del mapa de bits y otra información. No es necesario que cree el archivo .c usted mismo. Si el archivo .c para el archivo ppm no existe cuando lo crea, se generará automáticamente a partir del archivo ppm y se compilará en un archivo .o. Entonces, si busca en el directorio y ve qué archivos .ppm tienen un archivo .o con el mismo nombre, eso significa que el logotipo se ha compilado en el kernel. El logotipo estándar de 224 colores es log_linux_clut224.ppm, por lo que modificar esa imagen le permitirá modificar el logotipo.
En Windows, puede usar PaintShopProX para abrir ppm directamente para editar. Después de editar, puede usar el comando de disminución de profundidad de color para reducir la profundidad de color a 224 colores, luego guardar, eliminar log_linux_clut224.c y. recrearlo. Este es un logo que cambié aleatoriamente anoche:
Profundizando un poco más. No es difícil encontrar que para la consola VGA normal, el logotipo se muestra mediante la función fb_show_logo() en drivers/video/fbmem.c, que es llamada por drivers/video/console/fbcon.c (igual que en 2.4 Las funciones son básicamente las mismas, ejem). Esta función no hace mucho, simplemente convierte el mapa de bits con profundidad de color que no es de 8 bits a una profundidad de color de 8 bits y luego usa info->fbops->fb_imageblit(info,& image) para mostrar el logotipo, si lo hay; hay solo una CPU, luego un logotipo, si hay 2 CPU, se muestran 2 logotipos y así sucesivamente.
Con una pequeña modificación, puede centrar el logotipo y agregar un "borde derecho repetido", que llena toda la barra del logotipo con el área de 4 puntos de ancho en el extremo derecho del logotipo como fondo. .
La diferencia es la siguiente:
--- /gs2e/source /linux26-2edev/drivers/video/fbmem.c2006-08-29 14:07:15.000000000 +0800
+++ ./fbmem.c2006-09-27 20:40:08.000000000 +0800
@@ -375,9 +375,9 @@
int fb_show_logo(struct fb_info *info)
{
u32 * paleta = NULL, *saved_pseudo_palette = NULL;
-char sin signo *logo_new = NULL;
struct fb_image image;
-int x;
+ unsigned char *logo_new = NULL, *border = NULL;
+struct fb_image image, imageborder;
+int x, xoffset;
/* Devuelve si el framebuffer no está asignado o pausado*/
if (fb_logo.dy = 0;
+#ifdef CONFIG_ LOGO_REPEAT_RIGHT
+border = kmalloc(4 * fb_logo.logo->altura, GFP_KERNEL);
+if (border != NULL){
+ for (x = 0; x < fb_logo.logo->height; x++){ /* usar x como y */
+*((u32 *)border + x ) = /* repetirá los 4 píxeles de la derecha*/<
+*(u32 *)(image.data + (x+1)*fb_logo.logo->width - 4);
+ }
+ imageborder.profundidad = 8;
+ imageborder.data = borde;
+ imageborder.width = 4;
+ imageborder.height = image.height;
+ imageborder.dy = 0;
+ for (x = 0; x < info->var .xres; x += 4){
+ imageborder.dx = x;
+info->fbops->fb_imageblit(info, &imageborder);
+ }
+ kfree(borde);
+}
+#endif
+#ifndef CONFIG_CENTER_LOGO
+xoffset = 0;
for (x = 0; x < num_online_cpus() * (fb_logo.logo->ancho + 8) &&
x <= info- >var.xres-fb_logo.logo->ancho; x += (fb_logo.logo->ancho + 8)) {
imag
e.dx=x;
for (x = 0; x < num_online_cpus() * (fb_logo.dx = x;
info-> ;fbops->fb_imageblit(info, &image);
}
-
+#else
+xoffset = (info->var.xres - num_online_cpus() * (fb_logo.logo->ancho + 8) {
+xoffset = (info->var.xres - num_online_cpus() * (fb_logo.logo->ancho + 8))logo->ancho + 8))>>1;
+if (xoffset<0)xoffset = 0;
+ para (x = xoffset; x < num_online_cpus() * (fb_logo.width + 8) + xoffset &&
+ x <= info->var.xres-fb_logo.logo->ancho + xoffset x += (fb_logo.logo->ancho + 8)) {
+ imagen.dx = x;
+ info->fbops->fb_imageblit(info, &image);
+}
+# endif
kfree(palette);
if (saved_ pseudo_palette != NULL)
info->pseudo_palette = save_pseudo_palette;
i Aquí se definen dos variables de configuración, CONFIG_LOGO_REPEAT_RIGHT y CONFIG_CENTER_LOGO, cambie /drivers/video/logo/Kconfig, agregue:
config CENTER_LOGO
bool "Centrar el logotipo"
Depende del LOGO
n
config LOGO_ REPEAT_RIGHT
bool "Repetir borde derecho (4 píxeles)"
Depende del LOGO
predeterminado n
De esta manera, puede configurar si desea activar estas dos funciones en interfaces como make menuconfig.