do_bootm函数位于common/cmd_bootm.c文件中。 do_bootm函数调用do_bootm_linux函数启动linux内核,当定义了CONFIG_PPC时将使用common/cmd_bootm.c文件中的do_bootm_linux函数;当系统中没有定义该宏时,系统将使用lib_arm/armlinux.c文件中定义的do_bootm_linux函数。注意:这两个函数有很大的区别! lib_arm/armli...
1#ifdefined(CONFIG_ZIMAGE_BOOT)2after_header_check:3os = hdr->ih_os;4#endif56switch(os) {7default:/*handled by (original) Linux case*/8caseIH_OS_LINUX:9#ifdef CONFIG_SILENT_CONSOLE10fixup_silent_linux();11#endif12do_bootm_linux (cmdtp, flag, argc, argv, &images);13break;1415ca...
U-boot (Unified Bootloader)是一种流行的开源引导加载程序,主要用于嵌入式系统的引导启动。在开发嵌入式系统时,通常需要将Linux内核加载到内存中,并启动Linux操作系统。在U-boot中,有一个非常重要的命令是“do_bootm_linux”,它用于加载并启动Linux内核。 在U-boot中,执行“do_bootm_linux”命令会先从存储器中加...
在uboot引导Linux启动时,使用的是bootm的命令。这个命令执行的函数就是do_bootm, 这个函数的地址在cmd/bootm.c中。 代码如下:int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { #ifdef CONFIG_NEEDS_MANUAL_RELOC static int relocated = 0; if (!relocated) { int i; ...
uboot启动内核时实际是用\common\cmd_bootm.c中的do_bootm函数来实现的。 do_bootm函数中通过使用条件编译控制CONFIG_ZIMAGE_BOOT宏开关来实现uboot对于zImage压缩镜像的支持与取消支持。 1、do_bootm对zImage的解析 通过读取zImage的头部的第36字节开始的四个字节与LINUX_ZIMAGE_MAGIC(0x016f2818)标志位对比,...
(do_bootm_linux)*//*内核也位于加载地址了,是不是就可以在入口地址启动内核了?不是!PC机启动时BIOS会检测内存,flash告诉内核*//*同样uboot也要告诉内核一些启动参数;之后才会跳到入口地址启动内核*/theKernel=(void(*)(int,int,uint))addr;/*hdr->ih_ep头部入口地址*/theKernel=(void(*)(int,int,uint...
LINUX; //表示使用的是linux ret = do_bootm_states(cmd, flag, argc,argv, #ifdef CONFIG_SYSBOOT_RAMDISK_HIGH BOOTM_STATE_RAMDISK | #endif BOOTM_STATE_OS_PREP BOOTM_STATE_OS_FAKE_GO | BOOTM_STATE_OS_GO, &images, 1); return ret; } 第7行,设置并找到linux镜像的...
Do_bootm_linux首先驱动内核的入口地址,代码如下所示。 theKernel=(void (*)(int, int, uint))images->ep; Images.ep为内核可执行映像文件的入口地址及zImage的起始地址,它是从内核映像文件头获取的,在前面的bootm_start函数中已经为它赋值,代码如下所示。
一:do_bootm函数 (1)内核启动的时候通过bootm 30008000来启动内核,bootm这个命令对应的函数就是do_bootm。 (2) 1 #define LINUX_ZIMAGE_MAGIC 0x016f2818 LINUX_ZIMAGE_MAGIC是一个魔数,其值等于0x016f2818。在zImage的头信息中,有特定的位存放了一个魔数,这个魔数就是用来表示该镜像是zImage,在启动过程中...
这两个命令来完成linux内核启动的: movi read kernel 30008000是把sd卡中kernel分区复制到30008000内存地址处,bootm 30008000即到内存地址处执行代码; 下面详细分一下bootm这个命令对应的函数 代码一步步分析: 下面这段代码的作用是判断内核镜像是zImage、uImage、设备树 ...