Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo hacer que la IP configurada en Uboot sea legible después de iniciar LinuxU-boot pasará muchos parámetros al LinuxKernel, como: puerto serie, RAM, videofb, etc. El kernel de Linux lee y procesa estos parámetros. Los parámetros se pasan entre los dos a través de structtag. U-boot guarda las cosas que se pasarán al kernel en la estructura de datos structtag. Al iniciar el kernel, pasa la dirección física de esta estructura al kernel de Linux usa esta dirección para usar parse_tags para analizar los parámetros pasados. Este artículo utiliza principalmente U-boot para transferir RAM y Linuxkernel para leer parámetros de RAM como ejemplos. 1. u-boot pasa los parámetros de RAM al kernel. En el archivo /common/cmd_bootm.c (que hace referencia al directorio raíz de Uboot), el comando bootm corresponde a la función do_bootm. Al analizar la información en uImage y encontrar que el sistema operativo es Linux, llame a la función do_bootm_linux en el archivo ./. lib_arm/bootm.c para iniciar el kernel de Linux.

Cómo hacer que la IP configurada en Uboot sea legible después de iniciar LinuxU-boot pasará muchos parámetros al LinuxKernel, como: puerto serie, RAM, videofb, etc. El kernel de Linux lee y procesa estos parámetros. Los parámetros se pasan entre los dos a través de structtag. U-boot guarda las cosas que se pasarán al kernel en la estructura de datos structtag. Al iniciar el kernel, pasa la dirección física de esta estructura al kernel de Linux usa esta dirección para usar parse_tags para analizar los parámetros pasados. Este artículo utiliza principalmente U-boot para transferir RAM y Linuxkernel para leer parámetros de RAM como ejemplos. 1. u-boot pasa los parámetros de RAM al kernel. En el archivo /common/cmd_bootm.c (que hace referencia al directorio raíz de Uboot), el comando bootm corresponde a la función do_bootm. Al analizar la información en uImage y encontrar que el sistema operativo es Linux, llame a la función do_bootm_linux en el archivo ./. lib_arm/bootm.c para iniciar el kernel de Linux.

En la función do_bootm_linux: voiddo_bootm_linux(cmd_tbl_t*cmdtp,intflag,intargc,char*argv [],\ulongaddr,ulong*len_ptr,intverify){#ifdefinido(CONFIG_SETUP_MEMORY_TAGS)|||\definido(CONFIG_CMDLINE_TAG)||definido(CONFIG_INITRD_TAG) | ifdefCONFIG_REVISION_TAGsetup_revision_tag(?ms);#endif#ifdefCONFIG_ SETUP_MEMORY_TAGSetup_memory_tags(bd);//configurar parámetros de RAM#endif#ifdefCONFIG_CMDLINE_TAGsetup_commandline_tag(bd,commandline);#endif# ifdefCONFIG_INITRD_TAGif(init rd_start& &initrd_end)setup_initrd_tag(bd,initrd_start,initrd_end);# endif#ifdefinido (CONFIG_VFD )||definido(CONFIG_LCD)setup_videolfb_tag((gd_t*)gd);#endifsetup_end_tag(bd);//inicializar estructura de etiquetas end#endiftheKernel(0,machid,bd->bi_boot_ params);// Los parámetros pasados ​​a Kernel = (structtag*) tipo bd->bi_boot_params//bd->bi_boot_params se inicializan en la función board_init, por ejemplo, para at91rm9200, la inicialización se realiza en at91rm9200dk.c. la inicialización se realiza en at91rm9200dk.c. Se completa en la función board_init: bd->bi_boot_params=PHYS_SDRAM+0x100;// Esta dirección también es la primera dirección de todas las listas de etiquetas, consulte la función setup_start_tag a continuación}. Las descripciones de las funciones setup_start_tag y setup_memory_tags son las siguientes.